summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2018-12-20 22:53:08 +0100
committerDizzyEggg <jajkodizzy@wp.pl>2018-12-20 22:53:08 +0100
commitecee02816d475f012dd4eec8a59b9ad3ba9ab531 (patch)
tree5eb0cdad91aeba20866a731033d76add878c3ec4
parent7dcb614cca6d61c5e51960826dddc004858ed9f1 (diff)
parent6ef96717181dfa1cda548cbe405410aba065e41c (diff)
Merge with master
-rw-r--r--asm/battle_anim_815A0D4.s12488
-rw-r--r--asm/battle_anim_8170478.s5832
-rw-r--r--asm/battle_anim_effects_1.s9550
-rw-r--r--asm/battle_anim_effects_2.s7544
-rw-r--r--asm/battle_anim_effects_3.s1632
-rw-r--r--asm/battle_intro.s2035
-rw-r--r--asm/cable_car.s2882
-rw-r--r--asm/contest_painting.s1197
-rw-r--r--asm/contest_painting_effects.s (renamed from asm/cute_sketch.s)0
-rw-r--r--asm/dark.s24
-rw-r--r--asm/electric.s2547
-rw-r--r--asm/field_screen.s10509
-rw-r--r--asm/fldeff_80F9BCC.s2514
-rw-r--r--asm/flying.s36
-rw-r--r--asm/ghost.s3251
-rw-r--r--asm/ice.s56
-rw-r--r--asm/macros/map.inc2
-rw-r--r--asm/party_menu.s18014
-rw-r--r--asm/psychic.s38
-rw-r--r--asm/trade.s20
-rw-r--r--asm/water.s3607
-rwxr-xr-xcommon_syms/battle_anim_8170478.txt3
-rw-r--r--constants/battle_frontier_constants.inc70
-rw-r--r--constants/constants.inc1
-rw-r--r--data/battle_anim_815A0D4.s510
-rw-r--r--data/battle_anim_8170478.s157
-rw-r--r--data/battle_anim_scripts.s480
-rw-r--r--data/battle_frontier/battle_frontier_held_items.inc65
-rw-r--r--data/battle_frontier/battle_frontier_mons.inc6175
-rw-r--r--data/battle_frontier/battle_frontier_trainer_mons.inc14630
-rw-r--r--data/battle_frontier/battle_frontier_trainers.inc7801
-rw-r--r--data/battle_frontier/fallarbor_battle_tent_mons.inc316
-rw-r--r--data/battle_frontier/fallarbor_battle_tent_trainer_mons.inc257
-rw-r--r--data/battle_frontier/fallarbor_battle_tent_trainers.inc781
-rw-r--r--data/battle_frontier/slateport_battle_tent_mons.inc491
-rw-r--r--data/battle_frontier/slateport_battle_tent_trainer_mons.inc448
-rw-r--r--data/battle_frontier/slateport_battle_tent_trainers.inc781
-rw-r--r--data/battle_frontier/verdanturf_battle_tent_mons.inc316
-rw-r--r--data/battle_frontier/verdanturf_battle_tent_trainer_mons.inc254
-rw-r--r--data/battle_frontier/verdanturf_battle_tent_trainers.inc781
-rw-r--r--data/battle_tower.s679
-rw-r--r--data/cable_car.s106
-rw-r--r--data/contest_painting.s106
-rw-r--r--data/contest_painting_effects.s (renamed from data/cute_sketch.s)0
-rw-r--r--data/data2c.s5
-rw-r--r--data/event_scripts.s53
-rw-r--r--data/field_effect_misc.s244
-rw-r--r--data/field_effect_scripts.s20
-rw-r--r--data/field_screen.s492
-rw-r--r--data/field_weather.s103
-rw-r--r--data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc2
-rw-r--r--data/maps/BattleFrontier_BattleArenaCorridor/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_BattleArenaLobby/scripts.inc8
-rw-r--r--data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc2
-rw-r--r--data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc8
-rw-r--r--data/maps/BattleFrontier_BattleDomeLobby/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc6
-rw-r--r--data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc2
-rw-r--r--data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc6
-rw-r--r--data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc2
-rw-r--r--data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc10
-rw-r--r--data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_BattlePikeLobby/scripts.inc2
-rw-r--r--data/maps/BattleFrontier_BattlePikeRandomRoom1/scripts.inc16
-rw-r--r--data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_BattlePyramidTop/scripts.inc10
-rw-r--r--data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc10
-rw-r--r--data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_BattleTowerElevator/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_BattleTowerLobby/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc10
-rw-r--r--data/maps/BattleFrontier_OutsideEast/scripts.inc2
-rw-r--r--data/maps/BattleFrontier_ReceptionGate/scripts.inc8
-rw-r--r--data/maps/DewfordTown/scripts.inc12
-rw-r--r--data/maps/DewfordTown_Hall/scripts.inc8
-rw-r--r--data/maps/EverGrandeCity_ChampionsRoom/scripts.inc14
-rw-r--r--data/maps/EverGrandeCity_HallOfFame/scripts.inc10
-rw-r--r--data/maps/EverGrandeCity_PokemonLeague_1F/scripts.inc4
-rw-r--r--data/maps/FallarborTown_BattleTentCorridor/scripts.inc4
-rw-r--r--data/maps/FallarborTown_BattleTentLobby/scripts.inc4
-rw-r--r--data/maps/GraniteCave_StevensRoom/scripts.inc4
-rw-r--r--data/maps/LavaridgeTown/scripts.inc4
-rw-r--r--data/maps/LilycoveCity_ContestLobby/scripts.inc12
-rw-r--r--data/maps/LilycoveCity_CoveLilyMotel_1F/scripts.inc4
-rw-r--r--data/maps/LilycoveCity_Harbor/scripts.inc8
-rw-r--r--data/maps/LilycoveCity_LilycoveMuseum_1F/scripts.inc6
-rw-r--r--data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc6
-rw-r--r--data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc4
-rw-r--r--data/maps/LittlerootTown/scripts.inc30
-rw-r--r--data/maps/LittlerootTown_BrendansHouse_1F/scripts.inc12
-rw-r--r--data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc14
-rw-r--r--data/maps/LittlerootTown_MaysHouse_1F/scripts.inc12
-rw-r--r--data/maps/LittlerootTown_MaysHouse_2F/scripts.inc14
-rw-r--r--data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc10
-rw-r--r--data/maps/MagmaHideout_4F/scripts.inc4
-rw-r--r--data/maps/MarineCave_End/scripts.inc2
-rw-r--r--data/maps/MauvilleCity/scripts.inc16
-rw-r--r--data/maps/MeteorFalls_1F_1R/scripts.inc6
-rw-r--r--data/maps/MossdeepCity/scripts.inc4
-rw-r--r--data/maps/MossdeepCity_Gym/scripts.inc16
-rw-r--r--data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc10
-rw-r--r--data/maps/MtChimney/scripts.inc2
-rw-r--r--data/maps/MtChimney_CableCarStation/scripts.inc6
-rw-r--r--data/maps/MtPyre_Summit/scripts.inc26
-rw-r--r--data/maps/NavelRock_Top/scripts.inc8
-rw-r--r--data/maps/NewMauville_Entrance/scripts.inc2
-rw-r--r--data/maps/OldaleTown/scripts.inc16
-rw-r--r--data/maps/PetalburgCity/scripts.inc32
-rw-r--r--data/maps/PetalburgCity_Gym/scripts.inc34
-rw-r--r--data/maps/PetalburgWoods/scripts.inc10
-rw-r--r--data/maps/Route101/scripts.inc10
-rw-r--r--data/maps/Route103/scripts.inc4
-rw-r--r--data/maps/Route104/scripts.inc20
-rw-r--r--data/maps/Route109/scripts.inc10
-rw-r--r--data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc2
-rw-r--r--data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc2
-rw-r--r--data/maps/Route110_TrickHouseEnd/scripts.inc4
-rw-r--r--data/maps/Route110_TrickHouseEntrance/scripts.inc8
-rw-r--r--data/maps/Route111/scripts.inc14
-rw-r--r--data/maps/Route112_CableCarStation/scripts.inc6
-rw-r--r--data/maps/Route114_FossilManiacsTunnel/scripts.inc2
-rw-r--r--data/maps/Route116/scripts.inc2
-rw-r--r--data/maps/Route118/scripts.inc12
-rw-r--r--data/maps/Route119/scripts.inc6
-rw-r--r--data/maps/Route119_WeatherInstitute_2F/scripts.inc4
-rw-r--r--data/maps/Route120/scripts.inc6
-rw-r--r--data/maps/Route121_SafariZoneEntrance/scripts.inc8
-rw-r--r--data/maps/Route128/scripts.inc8
-rw-r--r--data/maps/RustboroCity/scripts.inc38
-rw-r--r--data/maps/RustboroCity_DevonCorp_3F/scripts.inc4
-rw-r--r--data/maps/RusturfTunnel/scripts.inc16
-rw-r--r--data/maps/SSTidalCorridor/scripts.inc4
-rw-r--r--data/maps/SafariZone_South/scripts.inc6
-rw-r--r--data/maps/SeafloorCavern_Room9/scripts.inc10
-rw-r--r--data/maps/SkyPillar_Outside/scripts.inc4
-rw-r--r--data/maps/SkyPillar_Top/scripts.inc14
-rw-r--r--data/maps/SlateportCity/scripts.inc12
-rw-r--r--data/maps/SlateportCity_BattleTentCorridor/scripts.inc4
-rw-r--r--data/maps/SlateportCity_BattleTentLobby/scripts.inc4
-rw-r--r--data/maps/SlateportCity_Harbor/scripts.inc14
-rw-r--r--data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc12
-rw-r--r--data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc8
-rw-r--r--data/maps/SootopolisCity/scripts.inc56
-rw-r--r--data/maps/SootopolisCity_Gym_1F/scripts.inc2
-rw-r--r--data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc10
-rw-r--r--data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc4
-rw-r--r--data/maps/SouthernIsland_Exterior/scripts.inc4
-rw-r--r--data/maps/SouthernIsland_Interior/scripts.inc8
-rw-r--r--data/maps/TerraCave_End/scripts.inc2
-rw-r--r--data/maps/TrainerHill_Elevator/scripts.inc8
-rw-r--r--data/maps/TrainerHill_Entrance/scripts.inc18
-rw-r--r--data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc2
-rw-r--r--data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc4
-rw-r--r--data/maps/VerdanturfTown_BattleTentLobby/scripts.inc4
-rw-r--r--data/maps/VictoryRoad_1F/scripts.inc2
-rw-r--r--data/party_menu.s6
-rw-r--r--data/scripts/berry_tree.inc2
-rw-r--r--data/scripts/cable_club.inc40
-rw-r--r--data/scripts/players_house.inc46
-rw-r--r--data/scripts/secret_base.inc2
-rw-r--r--data/specials.inc12
-rwxr-xr-xgraphics/unknown/unknown_85CE55C.pal19
-rw-r--r--include/battle.h5
-rw-r--r--include/battle_anim.h93
-rw-r--r--include/battle_interface.h2
-rw-r--r--include/battle_main.h16
-rw-r--r--include/battle_tower.h7
-rw-r--r--include/blit.h8
-rw-r--r--include/constants/battle_frontier.h71
-rw-r--r--include/constants/event_objects.h3
-rw-r--r--include/constants/trainers.h162
-rw-r--r--include/constants/vars.h2
-rw-r--r--include/constants/weather.h1
-rw-r--r--include/contest.h3
-rw-r--r--include/contest_painting.h13
-rwxr-xr-xinclude/contest_painting_effects.h28
-rw-r--r--include/easy_chat.h3
-rw-r--r--include/event_scripts.h16
-rw-r--r--include/field_fadetransition.h12
-rw-r--r--include/field_player_avatar.h2
-rw-r--r--include/field_screen.h24
-rw-r--r--include/field_screen_effect.h38
-rw-r--r--include/field_weather.h156
-rw-r--r--include/fldeff_80F9BCC.h19
-rw-r--r--include/fldeff_misc.h24
-rwxr-xr-xinclude/fldeff_softboiled.h7
-rw-r--r--include/gba/types.h4
-rw-r--r--include/global.h24
-rw-r--r--include/graphics.h37
-rw-r--r--include/item_menu.h39
-rw-r--r--include/link_rfu.h1
-rwxr-xr-xinclude/math_util.h14
-rw-r--r--include/menu.h4
-rw-r--r--include/overworld.h2
-rw-r--r--include/party_menu.h38
-rw-r--r--include/player_pc.h1
-rw-r--r--include/pokedex.h11
-rw-r--r--include/pokemon.h8
-rw-r--r--include/pokemon_icon.h2
-rw-r--r--include/pokemon_storage_system.h2
-rwxr-xr-xinclude/pokemon_summary_screen.h1
-rw-r--r--include/pokenav.h2
-rw-r--r--include/region_map.h1
-rw-r--r--include/rom_8011DC0.h5
-rw-r--r--include/scanline_effect.h1
-rw-r--r--include/secret_base.h8
-rw-r--r--include/strings.h398
-rw-r--r--include/trade.h5
-rw-r--r--ld_script.txt52
-rw-r--r--src/battle_anim.c20
-rw-r--r--src/battle_anim_80A5C6C.c444
-rw-r--r--src/battle_anim_80A9C70.c2
-rw-r--r--src/battle_anim_80D51AC.c24
-rwxr-xr-xsrc/battle_anim_8170478.c2267
-rw-r--r--src/battle_anim_effects_1.c5609
-rwxr-xr-xsrc/battle_anim_effects_2.c3884
-rwxr-xr-xsrc/battle_anim_effects_3.c4889
-rw-r--r--src/battle_anim_utility_funcs.c10
-rw-r--r--src/battle_controller_link_opponent.c6
-rw-r--r--src/battle_controller_link_partner.c6
-rw-r--r--src/battle_controller_opponent.c6
-rw-r--r--src/battle_controller_player.c6
-rw-r--r--src/battle_controller_player_partner.c8
-rw-r--r--src/battle_controller_recorded_opponent.c8
-rw-r--r--src/battle_controller_recorded_player.c8
-rw-r--r--src/battle_controller_wally.c2
-rw-r--r--src/battle_dome.c11
-rw-r--r--src/battle_factory.c13
-rw-r--r--src/battle_gfx_sfx_util.c6
-rw-r--r--src/battle_intro.c741
-rw-r--r--src/battle_main.c23
-rw-r--r--src/battle_pike.c2
-rw-r--r--src/battle_pyramid.c3
-rw-r--r--src/battle_script_commands.c10
-rw-r--r--src/battle_setup.c4
-rw-r--r--src/battle_tent.c11
-rw-r--r--src/battle_tower.c1022
-rw-r--r--src/battle_transition.c4
-rw-r--r--src/battle_util.c18
-rw-r--r--src/battle_util2.c2
-rw-r--r--src/birch_pc.c14
-rw-r--r--src/blit.c10
-rw-r--r--src/bug.c16
-rwxr-xr-xsrc/cable_car.c1006
-rw-r--r--src/clock.c2
-rw-r--r--src/contest.c2
-rw-r--r--src/contest_painting.c711
-rw-r--r--src/credits.c12
-rw-r--r--src/data/battle_frontier/battle_frontier_mons.h6177
-rw-r--r--src/data/battle_frontier/battle_frontier_trainer_mons.h15229
-rw-r--r--src/data/battle_frontier/battle_frontier_trainers.h2403
-rw-r--r--src/data/battle_frontier/battle_tent.h3005
-rw-r--r--src/data/graphics/berry_fix.h2
-rw-r--r--src/data/pokemon_graphics/front_anims.h885
-rw-r--r--src/data/pokemon_graphics/still_front_pic_table.h884
-rw-r--r--src/data/wild_encounters.h4573
-rw-r--r--src/decoration.c2
-rw-r--r--src/dragon.c14
-rw-r--r--src/easy_chat.c3
-rw-r--r--src/effects_1.c2093
-rw-r--r--src/effects_2.c1197
-rw-r--r--src/egg_hatch.c6
-rw-r--r--src/electric.c1089
-rw-r--r--src/event_data.c3
-rw-r--r--src/event_object_movement.c2
-rw-r--r--src/field_control_avatar.c9
-rw-r--r--src/field_effect.c26
-rw-r--r--src/field_poison.c4
-rw-r--r--src/field_screen.c15
-rw-r--r--src/field_screen_effect.c1261
-rw-r--r--src/field_specials.c10
-rw-r--r--src/field_weather.c1095
-rw-r--r--src/field_weather_effect.c2471
-rw-r--r--src/fieldmap.c2
-rw-r--r--src/fight.c40
-rw-r--r--src/fire.c40
-rw-r--r--src/fldeff_flash.c4
-rw-r--r--src/fldeff_groundshake.c16
-rw-r--r--src/fldeff_misc.c1525
-rw-r--r--src/fldeff_softboiled.c2
-rw-r--r--src/fldeff_sweetscent.c5
-rw-r--r--src/frontier_util.c2
-rw-r--r--src/ghost.c1161
-rw-r--r--src/graphics.c6
-rw-r--r--src/ground.c12
-rw-r--r--src/hall_of_fame.c2
-rw-r--r--src/item.c2
-rwxr-xr-xsrc/item_menu.c260
-rw-r--r--src/item_menu_icons.c32
-rwxr-xr-xsrc/item_use.c19
-rw-r--r--src/learn_move.c34
-rw-r--r--src/load_save.c1
-rw-r--r--src/mauville_old_man.c16
-rw-r--r--src/normal.c36
-rw-r--r--src/overworld.c16
-rwxr-xr-xsrc/party_menu.c7164
-rw-r--r--src/player_pc.c3
-rw-r--r--src/poison.c8
-rw-r--r--src/pokeball.c14
-rw-r--r--src/pokedex.c164
-rw-r--r--src/pokemon.c44
-rw-r--r--src/pokemon_storage_system.c8
-rw-r--r--src/pokemon_summary_screen.c6
-rw-r--r--src/record_mixing.c8
-rw-r--r--src/reshow_battle_screen.c8
-rw-r--r--src/rock.c12
-rw-r--r--src/rom_8011DC0.c2
-rw-r--r--src/save.c1
-rw-r--r--src/scrcmd.c3
-rwxr-xr-xsrc/script_pokemon_util_80F87D8.c6
-rw-r--r--src/secret_base.c80
-rwxr-xr-xsrc/shop.c2
-rw-r--r--src/start_menu.c18
-rw-r--r--src/tv.c10
-rw-r--r--src/walda_phrase.c2
-rw-r--r--src/water.c2185
-rw-r--r--src/wild_encounter.c4553
-rw-r--r--src/window.c2
-rw-r--r--sym_bss.txt2
-rw-r--r--sym_common.txt13
-rw-r--r--sym_ewram.txt105
323 files changed, 74853 insertions, 128440 deletions
diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s
deleted file mode 100644
index 362183765..000000000
--- a/asm/battle_anim_815A0D4.s
+++ /dev/null
@@ -1,12488 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_815A0D4
-sub_815A0D4: @ 815A0D4
- push {lr}
- adds r2, r0, 0
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r3, [r2, 0x20]
- adds r0, r3
- strh r0, [r2, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r3, [r2, 0x22]
- adds r0, r3
- strh r0, [r2, 0x22]
- movs r3, 0x6
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _0815A0FC
- ldrh r0, [r1, 0x4]
- b _0815A100
- .pool
-_0815A0FC:
- ldrh r0, [r1, 0x4]
- negs r0, r0
-_0815A100:
- strh r0, [r2, 0x2E]
- ldrh r0, [r1, 0x8]
- strh r0, [r2, 0x30]
- ldr r0, =sub_815A114
- str r0, [r2, 0x1C]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A0D4
-
- thumb_func_start sub_815A114
-sub_815A114: @ 815A114
- push {lr}
- adds r3, r0, 0
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0
- ble _0815A154
- ldrh r1, [r3, 0x32]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r3, 0x24]
- ldrh r0, [r3, 0x2E]
- adds r1, r0
- strh r1, [r3, 0x32]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- 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
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x30]
- subs r0, 0x1
- strh r0, [r3, 0x30]
- b _0815A15A
-_0815A154:
- adds r0, r3, 0
- bl DestroyAnimSprite
-_0815A15A:
- pop {r0}
- bx r0
- thumb_func_end sub_815A114
-
- thumb_func_start sub_815A160
-sub_815A160: @ 815A160
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, =gBattleAnimTarget
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 8
- movs r0, 0x80
- lsls r0, 12
- adds r4, r0
- asrs r4, 16
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 8
- movs r0, 0x80
- lsls r0, 12
- adds r1, r0
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- bl sub_807521C
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A160
-
- thumb_func_start sub_815A1B0
-sub_815A1B0: @ 815A1B0
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x5A
- strh r0, [r4, 0x2E]
- ldr r0, =WaitAnimForDuration
- str r0, [r4, 0x1C]
- movs r0, 0x7
- strh r0, [r4, 0x30]
- ldr r1, =sub_815A1F4
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r0, [r4, 0x30]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A1B0
-
- thumb_func_start sub_815A1F4
-sub_815A1F4: @ 815A1F4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bge _0815A228
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_815A234
- str r0, [r4, 0x1C]
-_0815A228:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A1F4
-
- thumb_func_start sub_815A234
-sub_815A234: @ 815A234
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815A234
-
- thumb_func_start sub_815A254
-sub_815A254: @ 815A254
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r7, r0, 0
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80A6980
- ldrh r0, [r5, 0x20]
- subs r0, r7
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r5, 0x22]
- subs r1, r6
- lsls r1, 16
- asrs r1, 16
- bl ArcTan2Neg
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 23
- adds r0, r1
- lsrs r4, r0, 16
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0815A2B2
- movs r1, 0x80
- lsls r1, 7
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
-_0815A2B2:
- movs r3, 0x80
- lsls r3, 1
- str r4, [sp]
- adds r0, r5, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_80A73E0
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x2E]
- strh r7, [r5, 0x32]
- strh r6, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A254
-
- thumb_func_start sub_815A2F0
-sub_815A2F0: @ 815A2F0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x4
- strh r0, [r4, 0x2E]
- ldr r0, =sub_815A31C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A2F0
-
- thumb_func_start sub_815A31C
-sub_815A31C: @ 815A31C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0815A342
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- b _0815A346
-_0815A342:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
-_0815A346:
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- beq _0815A354
- cmp r0, 0x4
- bne _0815A35C
-_0815A354:
- ldrh r0, [r4, 0x30]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x30]
-_0815A35C:
- ldrh r0, [r4, 0x32]
- adds r1, r0, 0x1
- strh r1, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x46
- ble _0815A3A0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- movs r0, 0
- strh r0, [r4, 0x32]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- subs r2, 0x12
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_815A3AC
- str r0, [r4, 0x1C]
-_0815A3A0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A31C
-
- thumb_func_start sub_815A3AC
-sub_815A3AC: @ 815A3AC
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x32]
- adds r1, r0, 0x1
- strh r1, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _0815A3E8
- adds r2, r3, 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, 0x7F
- ands r0, r1
- strb r0, [r2]
- adds r0, r3, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0815A3E8
- ldr r0, =sub_815A3F0
- str r0, [r3, 0x1C]
-_0815A3E8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A3AC
-
- thumb_func_start sub_815A3F0
-sub_815A3F0: @ 815A3F0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bhi _0815A448
- lsls r0, 2
- ldr r1, =_0815A40C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815A40C:
- .4byte _0815A428
- .4byte _0815A428
- .4byte _0815A432
- .4byte _0815A432
- .4byte _0815A440
- .4byte _0815A440
- .4byte _0815A448
-_0815A428:
- movs r1, 0
- movs r0, 0x1
- strh r0, [r4, 0x24]
- strh r1, [r4, 0x26]
- b _0815A450
-_0815A432:
- ldr r0, =0x0000ffff
- strh r0, [r4, 0x24]
- movs r0, 0
- b _0815A44E
- .pool
-_0815A440:
- movs r0, 0
- strh r0, [r4, 0x24]
- movs r0, 0x1
- b _0815A44E
-_0815A448:
- movs r0, 0
- strh r0, [r4, 0x24]
- ldr r0, =0x0000ffff
-_0815A44E:
- strh r0, [r4, 0x26]
-_0815A450:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _0815A462
- strh r2, [r4, 0x34]
-_0815A462:
- ldrh r0, [r4, 0x36]
- adds r1, r0, 0x1
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _0815A48C
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- strh r2, [r4, 0x30]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0x2E]
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, =sub_815A49C
- str r0, [r4, 0x1C]
-_0815A48C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A3F0
-
- thumb_func_start sub_815A49C
-sub_815A49C: @ 815A49C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r4, 0x30]
- adds r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815A4CC
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
-_0815A4CC:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815A4E0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_0815A4E0:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _0815A4FE
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815A4FE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815A49C
-
- thumb_func_start sub_815A504
-sub_815A504: @ 815A504
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, =sub_815A52C
- str r0, [r1]
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_815A504
-
- thumb_func_start sub_815A52C
-sub_815A52C: @ 815A52C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80A6D94
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, =gTasks
- lsls r5, r4, 2
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r7
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _0815A59C
- ldr r0, =gPlttBufferFaded
- lsls r2, r6, 4
- adds r1, r2, 0
- adds r1, 0xB
- lsls r1, 1
- adds r1, r0
- ldrh r3, [r1]
- mov r8, r3
- movs r3, 0xA
- mov r9, r7
- adds r7, r5, 0
- mov r12, r0
- adds r5, r2, 0
- lsls r0, r6, 5
- add r0, r12
- adds r2, r0, 0
- adds r2, 0x14
-_0815A57A:
- ldrh r0, [r2]
- strh r0, [r1]
- subs r2, 0x2
- subs r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bgt _0815A57A
- adds r0, r5, 0x1
- lsls r0, 1
- add r0, r12
- movs r1, 0
- mov r2, r8
- strh r2, [r0]
- adds r0, r7, r4
- lsls r0, 3
- add r0, r9
- strh r1, [r0, 0x12]
-_0815A59C:
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _0815A5AC
- adds r0, r4, 0
- bl DestroyTask
-_0815A5AC:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A52C
-
- thumb_func_start sub_815A5C8
-sub_815A5C8: @ 815A5C8
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, =sub_815A5F0
- str r0, [r1]
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_815A5C8
-
- thumb_func_start sub_815A5F0
-sub_815A5F0: @ 815A5F0
- 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
- bl sub_80A6D94
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r5, =gTasks
- mov r0, r8
- lsls r3, r0, 2
- adds r1, r3, r0
- lsls r1, 3
- adds r1, r5
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _0815A692
- ldr r0, =gPlttBufferFaded
- lsls r2, r7, 4
- adds r1, r2, 0
- adds r1, 0xB
- lsls r1, 1
- adds r1, r0
- ldrh r6, [r1]
- movs r4, 0xA
- mov r10, r3
- mov r9, r0
- adds r5, r2, 0
- ldr r2, =gPlttBufferUnfaded
- mov r12, r2
- lsls r0, r7, 5
- add r0, r9
- adds r3, r0, 0
- adds r3, 0x14
-_0815A644:
- ldrh r0, [r3]
- strh r0, [r1]
- subs r3, 0x2
- subs r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bgt _0815A644
- adds r0, r5, 0x1
- lsls r0, 1
- add r0, r9
- strh r6, [r0]
- adds r1, r5, 0
- adds r1, 0xB
- lsls r1, 1
- add r1, r12
- ldrh r6, [r1]
- movs r4, 0xA
- lsls r0, r7, 5
- add r0, r12
- adds r2, r0, 0
- adds r2, 0x14
-_0815A66E:
- ldrh r0, [r2]
- strh r0, [r1]
- subs r2, 0x2
- subs r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bgt _0815A66E
- adds r0, r5, 0x1
- lsls r0, 1
- add r0, r12
- movs r1, 0
- strh r6, [r0]
- mov r0, r10
- add r0, r8
- lsls r0, 3
- ldr r2, =gTasks
- adds r0, r2
- strh r1, [r0, 0x12]
-_0815A692:
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _0815A6A2
- mov r0, r8
- bl DestroyTask
-_0815A6A2:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A5F0
-
- thumb_func_start sub_815A6C4
-sub_815A6C4: @ 815A6C4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- mov r5, sp
- adds r5, 0x2
- movs r1, 0
- mov r2, sp
- adds r3, r5, 0
- bl SetAverageBattlerPositions
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815A6F8
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_0815A6F8:
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x2E]
- mov r2, sp
- ldrh r0, [r1, 0x4]
- ldrh r2, [r2]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x6]
- ldrh r5, [r5]
- adds r0, r5
- strh r0, [r4, 0x36]
- ldr r0, =0x0000ffce
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldr r0, =sub_815A73C
- str r0, [r4, 0x1C]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A6C4
-
- thumb_func_start sub_815A73C
-sub_815A73C: @ 815A73C
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _0815A75E
- movs r1, 0
- movs r0, 0x1E
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- ldr r0, =WaitAnimForDuration
- str r0, [r4, 0x1C]
- ldr r1, =sub_815A76C
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
-_0815A75E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A73C
-
- thumb_func_start sub_815A76C
-sub_815A76C: @ 815A76C
- push {lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0815A798
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- 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
- mov r1, r12
- strb r0, [r1]
-_0815A798:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- bne _0815A7AC
- adds r0, r3, 0
- bl DestroyAnimSprite
-_0815A7AC:
- pop {r0}
- bx r0
- thumb_func_end sub_815A76C
-
- thumb_func_start sub_815A7B0
-sub_815A7B0: @ 815A7B0
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_80A6838
- ldr r5, =gBattleAnimArgs
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_80A6864
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, =sub_80A67D8
- str r0, [r4, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A7B0
-
- thumb_func_start sub_815A7EC
-sub_815A7EC: @ 815A7EC
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815A84C
- adds r0, r4, 0
- bl sub_80A6838
- ldr r5, =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r5, r2]
- adds r0, r4, 0
- bl sub_80A6864
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815A840
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815A830
- ldrh r0, [r5, 0x4]
- b _0815A846
- .pool
-_0815A830:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- negs r0, r0
- strh r0, [r4, 0x30]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- negs r0, r0
- b _0815A84A
-_0815A840:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- negs r0, r0
-_0815A846:
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x6]
-_0815A84A:
- strh r0, [r4, 0x32]
-_0815A84C:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- movs r3, 0xFF
- ldrh r1, [r4, 0x30]
- ldrh r2, [r4, 0x34]
- adds r1, r2
- strh r1, [r4, 0x34]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r1, r2
- strh r1, [r4, 0x36]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- strh r1, [r4, 0x24]
- ands r0, r3
- movs r1, 0x5
- bl Sin
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xF0
- bls _0815A8A4
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815A8A4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815A7EC
-
- thumb_func_start sub_815A8AC
-sub_815A8AC: @ 815A8AC
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0815A8C2
- adds r0, r2, 0
- bl DestroyAnimSprite
-_0815A8C2:
- pop {r0}
- bx r0
- thumb_func_end sub_815A8AC
-
- thumb_func_start AnimTask_IsTargetPlayerSide
-AnimTask_IsTargetPlayerSide: @ 815A8C8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815A8EC
- ldr r1, =gBattleAnimArgs
- movs r0, 0
- b _0815A8F0
- .pool
-_0815A8EC:
- ldr r1, =gBattleAnimArgs
- movs r0, 0x1
-_0815A8F0:
- strh r0, [r1, 0xE]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_IsTargetPlayerSide
-
- thumb_func_start AnimTask_IsHealingMove
-AnimTask_IsHealingMove: @ 815A904
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gAnimMoveDmg
- ldr r0, [r0]
- cmp r0, 0
- ble _0815A920
- ldr r1, =gBattleAnimArgs
- movs r0, 0
- b _0815A924
- .pool
-_0815A920:
- ldr r1, =gBattleAnimArgs
- movs r0, 0x1
-_0815A924:
- strh r0, [r1, 0xE]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_IsHealingMove
-
- thumb_func_start sub_815A934
-sub_815A934: @ 815A934
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r1, =0x00001f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r0, =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r4, =gBattle_WIN0V
- strh r1, [r4]
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x44
- bl SetGpuReg
- adds r0, r5, 0
- movs r1, 0
- bl sub_80A6980
- ldrb r1, [r5, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r5, 0x1]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_815A9A0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A934
-
- thumb_func_start sub_815A9A0
-sub_815A9A0: @ 815A9A0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bhi _0815AA60
- lsls r0, 2
- ldr r1, =_0815A9BC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815A9BC:
- .4byte _0815A9D4
- .4byte _0815A9F2
- .4byte _0815AA12
- .4byte _0815A9F2
- .4byte _0815AA32
- .4byte _0815AA42
-_0815A9D4:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0815AA60
- b _0815AA3A
-_0815A9F2:
- ldrh r0, [r4, 0x30]
- adds r0, 0x75
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _0815AA60
- movs r0, 0
- strh r0, [r4, 0x32]
- b _0815AA3A
-_0815AA12:
- ldrh r0, [r4, 0x30]
- subs r0, 0x75
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x29
- bne _0815AA60
- movs r0, 0
- strh r0, [r4, 0x32]
- b _0815AA3A
-_0815AA32:
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
-_0815AA3A:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0815AA60
-_0815AA42:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0815AA60
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_815AA6C
- str r0, [r4, 0x1C]
-_0815AA60:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815A9A0
-
- thumb_func_start sub_815AA6C
-sub_815AA6C: @ 815AA6C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, =0x00003f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815AA6C
-
- thumb_func_start sub_815AAA4
-sub_815AAA4: @ 815AAA4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _0815AAD0
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_0815AAD0:
- ldrh r0, [r6]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- movs r3, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r6, 0x2]
- ldrh r4, [r5, 0x22]
- adds r0, r4
- strh r0, [r5, 0x22]
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r4, =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _0815AB2C
- ldrb r1, [r5, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r5, 0x3]
- ldr r0, =0x0000fff4
- strh r0, [r5, 0x24]
- movs r0, 0x2
- b _0815AB32
- .pool
-_0815AB2C:
- movs r0, 0xC
- strh r0, [r5, 0x24]
- ldr r0, =0x0000fffe
-_0815AB32:
- strh r0, [r5, 0x30]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x2E]
- movs r2, 0x34
- ldrsh r0, [r5, r2]
- cmp r0, 0xFF
- beq _0815AB46
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x34]
-_0815AB46:
- ldr r0, =sub_815AB5C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815AAA4
-
- thumb_func_start sub_815AB5C
-sub_815AB5C: @ 815AB5C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815AB9A
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- lsls r0, 16
- cmp r0, 0
- bne _0815ABBA
- adds r0, r2, 0x1
- strh r0, [r4, 0x32]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815ABBA
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xDE
- bl PlaySE1WithPanning
- b _0815ABBA
-_0815AB9A:
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x30]
- subs r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _0815ABAC
- negs r0, r0
-_0815ABAC:
- cmp r0, 0xC
- bne _0815ABBA
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- subs r0, r2, 0x1
- strh r0, [r4, 0x32]
-_0815ABBA:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815ABC8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815ABC8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815AB5C
-
- thumb_func_start sub_815ABD0
-sub_815ABD0: @ 815ABD0
- push {lr}
- ldrb r2, [r0, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x1]
- movs r1, 0xFF
- strh r1, [r0, 0x34]
- bl sub_815AAA4
- pop {r0}
- bx r0
- thumb_func_end sub_815ABD0
-
- thumb_func_start sub_815ABEC
-sub_815ABEC: @ 815ABEC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0815AC40
- ldr r1, =0x00001f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =gBattle_WIN1H
- ldr r2, =0x000098f0
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, =gBattle_WIN1V
- movs r0, 0xA0
- strh r0, [r1]
- ldr r0, =gBattle_WIN0H
- ldrh r1, [r0]
- movs r0, 0x42
- bl SetGpuReg
- ldr r0, =gBattle_WIN0V
- ldrh r1, [r0]
- movs r0, 0x46
- bl SetGpuReg
- b _0815AC70
- .pool
-_0815AC40:
- ldr r1, =0x00001f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =gBattle_WIN1H
- movs r0, 0xF0
- strh r0, [r1]
- ldr r4, =gBattle_WIN1V
- ldr r1, =0x000078a0
- adds r0, r1, 0
- strh r0, [r4]
- movs r0, 0x42
- movs r1, 0xF0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x46
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 7
- movs r0, 0
- bl SetGpuRegBits
-_0815AC70:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815ABEC
-
- thumb_func_start sub_815AC8C
-sub_815AC8C: @ 815AC8C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r0, =gBattle_WIN1H
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_WIN1V
- strh r1, [r0]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815ACB8
- movs r1, 0x80
- lsls r1, 7
- movs r0, 0
- bl ClearGpuRegBits
-_0815ACB8:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815AC8C
-
- thumb_func_start sub_815ACD0
-sub_815ACD0: @ 815ACD0
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _0815ACEC
- ldr r4, =gBattleAnimAttacker
- b _0815ACEE
- .pool
-_0815ACEC:
- ldr r4, =gBattleAnimTarget
-_0815ACEE:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x2]
- adds r0, r6
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r2, 0x4]
- strh r0, [r5, 0x26]
- movs r3, 0
- lsls r0, 16
- asrs r0, 16
- ldrh r4, [r2, 0x6]
- movs r6, 0x6
- ldrsh r1, [r2, r6]
- cmp r0, r1
- ble _0815AD26
- movs r3, 0x1
-_0815AD26:
- strh r3, [r5, 0x2E]
- movs r0, 0
- strh r0, [r5, 0x30]
- ldrh r0, [r2, 0x8]
- strh r0, [r5, 0x32]
- ldrh r0, [r2, 0xA]
- strh r0, [r5, 0x34]
- strh r4, [r5, 0x36]
- ldr r0, =sub_815AD4C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815ACD0
-
- thumb_func_start sub_815AD4C
-sub_815AD4C: @ 815AD4C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r2, 0x30]
- ldr r1, =gSineTable
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x34]
- ldrh r3, [r2, 0x26]
- adds r1, r0, r3
- strh r1, [r2, 0x26]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _0815AD98
- lsls r0, r1, 16
- asrs r0, 16
- movs r3, 0x36
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bge _0815ADAA
- adds r0, r2, 0
- bl DestroyAnimSprite
- b _0815ADAA
- .pool
-_0815AD98:
- lsls r0, r1, 16
- asrs r0, 16
- movs r3, 0x36
- ldrsh r1, [r2, r3]
- cmp r0, r1
- ble _0815ADAA
- adds r0, r2, 0
- bl DestroyAnimSprite
-_0815ADAA:
- pop {r0}
- bx r0
- thumb_func_end sub_815AD4C
-
- thumb_func_start sub_815ADB0
-sub_815ADB0: @ 815ADB0
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r5, r1, r0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0815ADDC
- ldr r4, =gBattleAnimAttacker
- b _0815ADDE
- .pool
-_0815ADDC:
- ldr r4, =gBattleAnimTarget
-_0815ADDE:
- ldrb r0, [r4]
- bl GetBattlerYCoordWithElevation
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- bl sub_80A8364
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r6, 0
- adds r1, r0, 0
- adds r1, 0x24
- movs r2, 0
- strh r1, [r5, 0x8]
- strh r1, [r5, 0xA]
- subs r0, 0x21
- strh r0, [r5, 0xC]
- cmp r0, 0
- bge _0815AE08
- strh r2, [r5, 0xC]
-_0815AE08:
- ldrh r0, [r5, 0x8]
- strh r0, [r5, 0xE]
- movs r0, 0x8
- strh r0, [r5, 0x10]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x12]
- strh r2, [r5, 0x14]
- strh r2, [r5, 0x16]
- cmp r7, 0x1
- bne _0815AE30
- ldr r0, =gBattle_BG1_X
- b _0815AE32
- .pool
-_0815AE30:
- ldr r0, =gBattle_BG2_X
-_0815AE32:
- ldrh r2, [r0]
- strh r2, [r5, 0x18]
- adds r3, r2, 0
- adds r3, 0xF0
- strh r3, [r5, 0x1A]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x1C]
- movs r4, 0x4
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bne _0815AE54
- strh r3, [r5, 0x1E]
- ldrh r3, [r5, 0x18]
- b _0815AE58
- .pool
-_0815AE54:
- strh r2, [r5, 0x1E]
- ldrh r3, [r5, 0x1A]
-_0815AE58:
- movs r0, 0
- strh r0, [r5, 0x26]
- ldrh r1, [r5, 0xC]
- lsls r2, r1, 16
- asrs r1, r2, 16
- movs r6, 0xE
- ldrsh r0, [r5, r6]
- cmp r1, r0
- bgt _0815AE8E
- ldr r4, =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r0, r4
- mov r12, r0
-_0815AE74:
- asrs r2, 16
- lsls r1, r2, 1
- adds r0, r1, r4
- strh r3, [r0]
- add r1, r12
- strh r3, [r1]
- adds r2, 0x1
- lsls r2, 16
- asrs r1, r2, 16
- movs r6, 0xE
- ldrsh r0, [r5, r6]
- cmp r1, r0
- ble _0815AE74
-_0815AE8E:
- cmp r7, 0x1
- bne _0815AEA0
- ldr r0, =0x04000014
- b _0815AEA2
- .pool
-_0815AEA0:
- ldr r0, =0x04000018
-_0815AEA2:
- str r0, [sp]
- ldr r0, =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldr r0, =sub_815AED8
- str r0, [r5]
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815ADB0
-
- thumb_func_start sub_815AED8
-sub_815AED8: @ 815AED8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r4, 0xC]
- movs r3, 0xC
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bge _0815AF00
- strh r2, [r4, 0x8]
-_0815AF00:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0815AF2C
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r4, 0xC]
- movs r3, 0xC
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bge _0815AF30
- strh r2, [r4, 0xA]
- movs r0, 0x1
- strh r0, [r4, 0x26]
- b _0815AF30
- .pool
-_0815AF2C:
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
-_0815AF30:
- ldrh r0, [r4, 0x14]
- adds r0, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815AF5C
- movs r0, 0
- strh r0, [r4, 0x14]
- movs r1, 0
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0815AF4E
- movs r1, 0x1
-_0815AF4E:
- strh r1, [r4, 0x16]
- cmp r1, 0
- beq _0815AF58
- ldrh r0, [r4, 0x18]
- b _0815AF5A
-_0815AF58:
- ldrh r0, [r4, 0x1A]
-_0815AF5A:
- strh r0, [r4, 0x20]
-_0815AF5C:
- ldrh r1, [r4, 0x8]
- lsls r3, r1, 16
- asrs r1, r3, 16
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bge _0815AF90
- ldr r5, =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_0815AF72:
- asrs r3, 16
- lsls r1, r3, 1
- adds r2, r1, r5
- ldrh r0, [r4, 0x20]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r4, 0x20]
- strh r0, [r1]
- adds r3, 0x1
- lsls r3, 16
- asrs r1, r3, 16
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _0815AF72
-_0815AF90:
- ldrh r1, [r4, 0xA]
- lsls r3, r1, 16
- asrs r1, r3, 16
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bgt _0815AFC4
- ldr r5, =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_0815AFA6:
- asrs r3, 16
- lsls r1, r3, 1
- adds r2, r1, r5
- ldrh r0, [r4, 0x1E]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r4, 0x1E]
- strh r0, [r1]
- adds r3, 0x1
- lsls r3, 16
- asrs r1, r3, 16
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r1, r0
- ble _0815AFA6
-_0815AFC4:
- movs r3, 0x26
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _0815AFE0
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0815AFDA
- ldr r1, =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_0815AFDA:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_0815AFE0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815AED8
-
- thumb_func_start sub_815AFF0
-sub_815AFF0: @ 815AFF0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r5, 0
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
- ldr r6, =gBattleAnimAttacker
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xC]
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xE]
- movs r0, 0x20
- strh r0, [r4, 0x10]
- ldr r0, =0x0000ffec
- strh r0, [r4, 0x12]
- strh r5, [r4, 0x14]
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, =sub_815B054
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815AFF0
-
- thumb_func_start sub_815B054
-sub_815B054: @ 815B054
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r6, r0, r1
- movs r1, 0x8
- ldrsh r0, [r6, r1]
- cmp r0, 0x5
- bls _0815B074
- b _0815B22E
-_0815B074:
- lsls r0, 2
- ldr r1, =_0815B088
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815B088:
- .4byte _0815B0A0
- .4byte _0815B160
- .4byte _0815B18E
- .4byte _0815B1A2
- .4byte _0815B1B8
- .4byte _0815B220
-_0815B0A0:
- movs r0, 0xC
- ldrsh r2, [r6, r0]
- ldrh r1, [r6, 0xA]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0815B0B6
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- subs r0, r2, r0
- b _0815B0BC
-_0815B0B6:
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- adds r0, r2, r0
-_0815B0BC:
- lsls r0, 16
- lsrs r1, r0, 16
- ldrh r2, [r6, 0x12]
- ldrh r0, [r6, 0xE]
- adds r2, r0
- ldr r0, =gUnknown_08593114
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- ldrb r4, [r6, 0xA]
- movs r3, 0x6
- subs r3, r4
- lsls r3, 24
- lsrs r3, 24
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xBA
- bl PlaySE12WithPanning
- cmp r4, 0x40
- beq _0815B120
- ldr r5, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r3, r1, r5
- ldrh r0, [r6, 0xA]
- movs r2, 0x1
- ands r2, r0
- adds r3, 0x3F
- ldrb r4, [r3]
- movs r0, 0x2
- negs r0, r0
- ands r0, r4
- orrs r0, r2
- strb r0, [r3]
- adds r5, 0x1C
- adds r1, r5
- ldr r0, =SpriteCallbackDummy
- str r0, [r1]
-_0815B120:
- ldrh r1, [r6, 0xA]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0815B138
- ldrh r0, [r6, 0x10]
- subs r0, 0x6
- strh r0, [r6, 0x10]
- ldrh r0, [r6, 0x12]
- subs r0, 0x6
- strh r0, [r6, 0x12]
-_0815B138:
- ldrh r1, [r6, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_085CE2A0
- adds r0, r6, 0
- bl sub_80A7CFC
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
- strh r4, [r6, 0x8]
- b _0815B22E
- .pool
-_0815B160:
- adds r0, r6, 0
- bl sub_80A7D34
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0815B22E
- movs r2, 0xA
- ldrsh r1, [r6, r2]
- cmp r1, 0x6
- bne _0815B180
- movs r0, 0x8
- strh r0, [r6, 0x14]
- movs r0, 0x3
- strh r0, [r6, 0x8]
- b _0815B22E
-_0815B180:
- cmp r1, 0x2
- bgt _0815B186
- movs r0, 0xA
-_0815B186:
- strh r0, [r6, 0x14]
- movs r0, 0x2
- strh r0, [r6, 0x8]
- b _0815B22E
-_0815B18E:
- ldrh r0, [r6, 0x14]
- movs r2, 0x14
- ldrsh r1, [r6, r2]
- cmp r1, 0
- beq _0815B19E
- subs r0, 0x1
- strh r0, [r6, 0x14]
- b _0815B22E
-_0815B19E:
- strh r1, [r6, 0x8]
- b _0815B22E
-_0815B1A2:
- ldrh r1, [r6, 0x14]
- movs r2, 0x14
- ldrsh r0, [r6, r2]
- cmp r0, 0
- beq _0815B1B2
- subs r0, r1, 0x1
- strh r0, [r6, 0x14]
- b _0815B22E
-_0815B1B2:
- movs r0, 0x4
- strh r0, [r6, 0x8]
- b _0815B22E
-_0815B1B8:
- movs r5, 0
- movs r7, 0
- ldr r3, =gSprites
- movs r0, 0x1C
- adds r0, r3
- mov r8, r0
-_0815B1C4:
- lsls r0, r5, 4
- adds r0, r5
- lsls r4, r0, 2
- adds r0, r3, 0
- adds r0, 0x14
- adds r0, r4, r0
- ldr r1, [r0]
- ldr r0, =gUnknown_08593114
- cmp r1, r0
- bne _0815B200
- adds r0, r4, r3
- strh r2, [r0, 0x2E]
- movs r1, 0x6
- strh r1, [r0, 0x30]
- movs r1, 0x2
- str r2, [sp]
- str r3, [sp, 0x4]
- bl StartSpriteAnim
- mov r0, r8
- adds r1, r4, r0
- ldr r0, =sub_815B23C
- str r0, [r1]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r2, [sp]
- ldr r3, [sp, 0x4]
- cmp r7, 0x6
- beq _0815B20A
-_0815B200:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3F
- bls _0815B1C4
-_0815B20A:
- strh r7, [r6, 0x14]
- movs r0, 0x5
- strh r0, [r6, 0x8]
- b _0815B22E
- .pool
-_0815B220:
- movs r1, 0x14
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _0815B22E
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0815B22E:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_815B054
-
- thumb_func_start sub_815B23C
-sub_815B23C: @ 815B23C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0815B270
- ldr r3, =gTasks
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_0815B270:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815B23C
-
- thumb_func_start sub_815B27C
-sub_815B27C: @ 815B27C
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0815B290
- adds r0, r5, 0
- movs r1, 0
- bl InitAnimSpritePos
-_0815B290:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x27
- bgt _0815B2C2
- ldrh r0, [r5, 0x2E]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0815B2B4
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- b _0815B2C0
-_0815B2B4:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
-_0815B2C0:
- strb r0, [r2]
-_0815B2C2:
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x1E
- ble _0815B2D8
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_0815B2D8:
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x3D
- bne _0815B324
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldrh r0, [r5, 0x24]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- movs r1, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r1, [r5, 0x24]
- strh r1, [r5, 0x26]
- movs r0, 0x14
- strh r0, [r5, 0x2E]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
-_0815B324:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815B27C
-
- thumb_func_start sub_815B338
-sub_815B338: @ 815B338
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =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 _0815B35C
- cmp r0, 0x1
- beq _0815B37C
- b _0815B38E
- .pool
-_0815B35C:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_085CE350
- adds r0, r4, 0
- bl sub_80A7CFC
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815B38E
- .pool
-_0815B37C:
- adds r0, r4, 0
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _0815B38E
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0815B38E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815B338
-
- thumb_func_start sub_815B394
-sub_815B394: @ 815B394
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _0815B3F4
- cmp r0, 0x1
- bgt _0815B3B4
- cmp r0, 0
- beq _0815B3BE
- b _0815B496
-_0815B3B4:
- cmp r0, 0x2
- beq _0815B424
- cmp r0, 0x3
- beq _0815B478
- b _0815B496
-_0815B3BE:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- adds r0, r6, 0
- movs r1, 0
- bl sub_80A7270
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0x30]
- strh r0, [r5, 0x32]
- b _0815B46C
- .pool
-_0815B3F4:
- ldrh r0, [r5, 0x30]
- adds r0, 0x60
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- subs r0, 0x1A
- strh r0, [r5, 0x32]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- movs r0, 0x32
- ldrsh r2, [r5, r0]
- adds r0, r6, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _0815B424
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_0815B424:
- ldrh r0, [r5, 0x30]
- adds r0, 0x60
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x30
- strh r0, [r5, 0x32]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- movs r0, 0x32
- ldrsh r2, [r5, r0]
- adds r0, r6, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _0815B496
- movs r0, 0
- strh r0, [r5, 0x34]
- ldr r1, =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r6, 0
- bl sub_80A7344
-_0815B46C:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _0815B496
- .pool
-_0815B478:
- ldrh r0, [r5, 0x26]
- subs r0, 0x6
- strh r0, [r5, 0x26]
- movs r1, 0x22
- ldrsh r0, [r5, r1]
- movs r2, 0x26
- ldrsh r1, [r5, r2]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _0815B496
- adds r0, r5, 0
- bl DestroyAnimSprite
-_0815B496:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_815B394
-
- thumb_func_start sub_815B49C
-sub_815B49C: @ 815B49C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815B4BC
- ldr r0, =0x0000fff0
- b _0815B4C0
- .pool
-_0815B4BC:
- movs r0, 0x80
- lsls r0, 1
-_0815B4C0:
- strh r0, [r4, 0x20]
- movs r0, 0
- strh r0, [r4, 0x22]
- ldr r0, =sub_815B4D4
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815B49C
-
- thumb_func_start sub_815B4D4
-sub_815B4D4: @ 815B4D4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x48
- strh r0, [r4, 0x2E]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815B4F8
- ldrh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 20
- b _0815B500
- .pool
-_0815B4F8:
- ldrh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 20
- negs r0, r0
-_0815B500:
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x10
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r5, r0, r1
- strh r5, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _0815B54C
- ldr r0, =gUnknown_085CE3A0
- ldrh r1, [r4, 0x24]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- ldrh r2, [r4, 0x22]
- adds r2, r5
- lsls r2, 16
- asrs r2, 16
- adds r3, r4, 0
- adds r3, 0x43
- ldrb r3, [r3]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- bl CreateSpriteAndAnimate
-_0815B54C:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- adds r0, 0x20
- movs r1, 0x98
- lsls r1, 1
- cmp r0, r1
- bls _0815B566
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815B566:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815B4D4
-
- thumb_func_start sub_815B570
-sub_815B570: @ 815B570
- push {r4,lr}
- adds r4, r0, 0
- bl Random2
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0815B58A
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x4
- b _0815B592
-_0815B58A:
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x5
-_0815B592:
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- bl Random2
- movs r1, 0x7
- ands r0, r1
- adds r1, r0, 0
- cmp r1, 0x3
- ble _0815B5B4
- negs r0, r1
- lsls r0, 24
- lsrs r0, 24
-_0815B5B4:
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, =sub_815B5D0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815B570
-
- thumb_func_start sub_815B5D0
-sub_815B5D0: @ 815B5D0
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- bgt _0815B612
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _0815B646
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- 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
- mov r1, r12
- strb r0, [r1]
- movs r0, 0
- b _0815B644
-_0815B612:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x2
- bne _0815B628
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_0815B628:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x3
- bne _0815B640
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =0x0000ffff
- strh r0, [r3, 0x30]
-_0815B640:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
-_0815B644:
- strh r0, [r3, 0x30]
-_0815B646:
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0x3C
- ble _0815B654
- adds r0, r3, 0
- bl DestroySprite
-_0815B654:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815B5D0
-
- thumb_func_start sub_815B65C
-sub_815B65C: @ 815B65C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =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 _0815B69C
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_085CE3B8
- adds r0, r4, 0
- bl sub_80A7CFC
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815B6AE
- .pool
-_0815B69C:
- adds r0, r4, 0
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _0815B6AE
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0815B6AE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815B65C
-
- thumb_func_start sub_815B6B4
-sub_815B6B4: @ 815B6B4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =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 _0815B6F4
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_085CE3E0
- adds r0, r4, 0
- bl sub_80A7CFC
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815B706
- .pool
-_0815B6F4:
- adds r0, r4, 0
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _0815B706
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0815B706:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815B6B4
-
- thumb_func_start sub_815B70C
-sub_815B70C: @ 815B70C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0815B71E
- cmp r0, 0x1
- beq _0815B748
- b _0815B770
-_0815B71E:
- adds r0, r4, 0
- movs r1, 0
- bl InitAnimSpritePos
- movs r0, 0x90
- lsls r0, 4
- strh r0, [r4, 0x30]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0815B770
- .pool
-_0815B748:
- ldrh r2, [r4, 0x30]
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r4, 0x26]
- subs r0, r1
- strh r0, [r4, 0x26]
- subs r2, 0x60
- strh r2, [r4, 0x30]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _0815B770
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815B770:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815B70C
-
- thumb_func_start sub_815B778
-sub_815B778: @ 815B778
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =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 _0815B7B8
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_085CE430
- adds r0, r4, 0
- bl sub_80A7CFC
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815B7CA
- .pool
-_0815B7B8:
- adds r0, r4, 0
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _0815B7CA
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0815B7CA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815B778
-
- thumb_func_start sub_815B7D0
-sub_815B7D0: @ 815B7D0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r3, r1, 0
- cmp r0, 0x4
- bls _0815B7F6
- b _0815BAFC
-_0815B7F6:
- lsls r0, 2
- ldr r1, =_0815B808
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815B808:
- .4byte _0815B81C
- .4byte _0815B86C
- .4byte _0815B8A8
- .4byte _0815BA44
- .4byte _0815BA82
-_0815B81C:
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815B844
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x1
- bl SetAnimBgAttribute
- b _0815B84E
- .pool
-_0815B844:
- movs r0, 0x2
- movs r1, 0x2
- movs r2, 0x1
- bl SetAnimBgAttribute
-_0815B84E:
- ldr r0, =gTasks
- mov r6, r8
- lsls r1, r6, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r1, 0x1C]
- b _0815BA26
- .pool
-_0815B86C:
- mov r1, r8
- lsls r0, r1, 2
- add r0, r8
- lsls r0, 3
- adds r4, r0, r3
- ldrh r0, [r4, 0xC]
- adds r1, r0, 0x1
- strh r1, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bgt _0815B886
- b _0815BAFC
-_0815B886:
- movs r0, 0
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- ldrh r5, [r4, 0xA]
- lsls r1, r5, 4
- orrs r1, r5
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4C
- bl SetGpuReg
- cmp r5, 0xF
- beq _0815B8A6
- b _0815BAFC
-_0815B8A6:
- b _0815BA7A
-_0815B8A8:
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- ldr r1, =gBattleAnimTarget
- ldrb r1, [r1]
- mov r2, r8
- lsls r4, r2, 2
- adds r2, r4, r2
- lsls r2, 3
- adds r2, r3
- ldrb r2, [r2, 0x1C]
- bl HandleSpeciesGfxDataChange
- ldrb r1, [r5]
- mov r0, sp
- bl sub_80A6BFC
- bl IsContest
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- beq _0815B8E0
- movs r1, 0
- b _0815B8EA
- .pool
-_0815B8E0:
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r1, r0, 24
-_0815B8EA:
- ldr r0, =gMonSpritesGfxPtr
- ldr r2, [r0]
- lsls r0, r1, 2
- adds r2, 0x4
- adds r2, r0
- ldr r1, =gBattleMonForms
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r1, 11
- ldr r0, [r2]
- adds r0, r1
- ldr r1, [sp]
- ldr r2, =0x04000200
- bl CpuSet
- ldr r1, [sp]
- movs r2, 0x80
- lsls r2, 4
- mov r0, sp
- ldrh r3, [r0, 0xA]
- movs r0, 0x1
- bl LoadBgTiles
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0815BA1C
- ldr r5, =gContestResources
- ldr r0, [r5]
- ldr r0, [r0, 0x18]
- ldrh r0, [r0]
- bl IsSpeciesNotUnown
- adds r4, r0, 0
- ldr r0, [r5]
- ldr r0, [r0, 0x18]
- ldrh r0, [r0, 0x2]
- bl IsSpeciesNotUnown
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0815B99C
- ldr r6, [sp, 0x4]
- movs r5, 0
- movs r0, 0x7
- mov r12, r0
- movs r7, 0
-_0815B950:
- movs r4, 0
- adds r3, r7, r6
- mov r1, r12
- lsls r0, r1, 1
- adds r2, r0, r6
-_0815B95A:
- ldrh r1, [r3]
- ldrh r0, [r2]
- strh r0, [r3]
- strh r1, [r2]
- adds r3, 0x2
- subs r2, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0815B95A
- movs r2, 0x20
- add r12, r2
- adds r7, 0x40
- adds r5, 0x1
- cmp r5, 0x7
- ble _0815B950
- movs r5, 0
- movs r0, 0x80
- lsls r0, 3
- adds r3, r0, 0
-_0815B980:
- adds r2, r5, 0x1
- lsls r0, r5, 6
- adds r1, r0, r6
- movs r4, 0x7
-_0815B988:
- ldrh r0, [r1]
- eors r0, r3
- strh r0, [r1]
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _0815B988
- adds r5, r2, 0
- cmp r5, 0x7
- ble _0815B980
-_0815B99C:
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- ldrh r0, [r0, 0x2]
- bl IsSpeciesNotUnown
- lsls r0, 24
- cmp r0, 0
- beq _0815B9EC
- ldr r3, =gSprites
- ldr r4, =gBattlerSpriteIds
- ldr r2, =gBattleAnimAttacker
- ldrb r0, [r2]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x10
- adds r0, r1
- ldr r1, =gUnknown_082FF6C0
- b _0815BA06
- .pool
-_0815B9EC:
- ldr r3, =gSprites
- ldr r4, =gBattlerSpriteIds
- ldr r2, =gBattleAnimAttacker
- ldrb r0, [r2]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x10
- adds r0, r1
- ldr r1, =gUnknown_082FF694
-_0815BA06:
- str r1, [r0]
- ldrb r0, [r2]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0
- bl StartSpriteAffineAnim
-_0815BA1C:
- ldr r0, =gTasks
- mov r1, r9
- add r1, r8
- lsls r1, 3
- adds r1, r0
-_0815BA26:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0815BAFC
- .pool
-_0815BA44:
- mov r1, r8
- lsls r0, r1, 2
- add r0, r8
- lsls r0, 3
- adds r4, r0, r3
- ldrh r0, [r4, 0xC]
- adds r1, r0, 0x1
- strh r1, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815BAFC
- movs r0, 0
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- ldrh r5, [r4, 0xA]
- lsls r1, r5, 4
- orrs r1, r5
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4C
- bl SetGpuReg
- cmp r5, 0
- bne _0815BAFC
-_0815BA7A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815BAFC
-_0815BA82:
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815BAAC
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl SetAnimBgAttribute
- b _0815BAB6
- .pool
-_0815BAAC:
- movs r0, 0x2
- movs r1, 0x2
- movs r2, 0
- bl SetAnimBgAttribute
-_0815BAB6:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815BAF6
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815BAF6
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r6, 0x1C
- ldrsh r0, [r1, r6]
- cmp r0, 0
- bne _0815BAF6
- ldrb r0, [r4]
- ldr r1, =gBattleSpritesDataPtr
- ldr r1, [r1]
- ldr r2, [r1]
- lsls r1, r0, 2
- adds r1, r2
- ldrh r1, [r1, 0x2]
- bl SetBattlerShadowSpriteCallback
-_0815BAF6:
- mov r0, r8
- bl DestroyAnimVisualTask
-_0815BAFC:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815B7D0
-
- thumb_func_start sub_815BB18
-sub_815BB18: @ 815BB18
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gBattleAnimArgs
- ldr r3, =gSprites
- ldr r2, =gBattlerSpriteIds
- ldr r1, =gBattleAnimAttacker
- ldrb r1, [r1]
- adds r1, r2
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- adds r1, 0x3E
- ldrb r1, [r1]
- lsls r1, 29
- lsrs r1, 31
- strh r1, [r4, 0xE]
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815BB18
-
- thumb_func_start sub_815BB58
-sub_815BB58: @ 815BB58
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- ldr r1, =gBattleAnimTarget
- ldrb r1, [r1]
- movs r2, 0x1
- bl HandleSpeciesGfxDataChange
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815BB58
-
- thumb_func_start sub_815BB84
-sub_815BB84: @ 815BB84
- push {r4,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bls _0815BBA2
- b _0815BDF2
-_0815BBA2:
- lsls r0, 2
- ldr r1, =_0815BBB4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815BBB4:
- .4byte _0815BBC8
- .4byte _0815BCB8
- .4byte _0815BD08
- .4byte _0815BD72
- .4byte _0815BDA6
-_0815BBC8:
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815BC02
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_0815BC02:
- mov r0, sp
- bl sub_80A6B30
- ldr r1, =gUnknown_08C2A6EC
- mov r0, sp
- movs r2, 0
- bl sub_80A6D60
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0815BC34
- ldr r1, =gBattle_BG1_X
- ldr r3, =0x0000ffc8
- b _0815BC5C
- .pool
-_0815BC34:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815BC58
- ldr r1, =gBattle_BG1_X
- ldr r2, =0x0000ff79
- adds r0, r2, 0
- b _0815BC5E
- .pool
-_0815BC58:
- ldr r1, =gBattle_BG1_X
- ldr r3, =0x0000fff6
-_0815BC5C:
- adds r0, r3, 0
-_0815BC5E:
- strh r0, [r1]
- ldr r1, =gBattle_BG1_Y
- movs r0, 0
- strh r0, [r1]
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08C2A634
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80A6CC0
- ldr r0, =gUnknown_08C2A6D4
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r1, 0x1C]
- ldr r0, =gBattle_BG1_Y
- ldrh r0, [r0]
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- b _0815BD8E
- .pool
-_0815BCB8:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x10]
- adds r1, r0, 0x1
- strh r1, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bgt _0815BCCE
- b _0815BDF2
-_0815BCCE:
- movs r0, 0
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _0815BCE4
- movs r0, 0xC
- strh r0, [r4, 0xA]
-_0815BCE4:
- ldrh r0, [r4, 0xA]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0xC
- bne _0815BDF2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815BDF2
-_0815BD08:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _0815BD20
- movs r0, 0
- strh r0, [r4, 0xA]
-_0815BD20:
- ldrh r0, [r4, 0xA]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0815BDF2
- ldr r2, =gBattle_BG1_X
- ldr r1, =gUnknown_085CE460
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r4, 0x1C]
- adds r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _0815BD6C
- strh r0, [r4, 0x8]
- b _0815BDF2
- .pool
-_0815BD6C:
- movs r0, 0x3
- strh r0, [r4, 0x8]
- b _0815BDF2
-_0815BD72:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r0, [r1, 0xE]
- adds r0, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _0815BDF2
- movs r0, 0
- strh r0, [r1, 0xE]
- movs r0, 0x1
-_0815BD8E:
- strh r0, [r1, 0x8]
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xE4
- bl PlaySE12WithPanning
- b _0815BDF2
-_0815BDA6:
- mov r0, sp
- bl sub_80A6B30
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_80A6C68
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815BDC8
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_0815BDC8:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG1_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_0815BDF2:
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815BB84
-
- thumb_func_start sub_815BE04
-sub_815BE04: @ 815BE04
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r7, r0, 0
- bl Random2
- lsls r0, 16
- movs r1, 0xFC
- lsls r1, 14
- ands r1, r0
- lsrs r5, r1, 16
- adds r1, r5, 0
- cmp r1, 0x1F
- ble _0815BE2E
- movs r0, 0x20
- subs r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
-_0815BE2E:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r5
- strh r0, [r7, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r7, 0x22]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r7, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r7, 0x32]
- ldr r4, =gUnknown_085CE48C
- movs r0, 0x20
- ldrsh r1, [r7, r0]
- movs r0, 0x22
- ldrsh r2, [r7, r0]
- adds r5, r7, 0
- adds r5, 0x43
- ldrb r3, [r5]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- bl CreateSprite
- mov r9, r0
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r0, 0x20
- ldrsh r1, [r7, r0]
- movs r0, 0x22
- ldrsh r2, [r7, r0]
- ldrb r3, [r5]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- bl CreateSprite
- mov r8, r0
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r0, r9
- lsls r2, r0, 4
- add r2, r9
- lsls r2, 2
- ldr r1, =gSprites
- mov r10, r1
- adds r5, r2, r1
- adds r0, r5, 0
- movs r1, 0x1
- str r2, [sp]
- bl StartSpriteAnim
- mov r0, r8
- lsls r6, r0, 4
- add r6, r8
- lsls r6, 2
- mov r1, r10
- adds r4, r6, r1
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r5, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x32]
- ldrh r0, [r1]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x32]
- ldr r0, =0x0000ffff
- strh r0, [r5, 0x3C]
- movs r0, 0x1
- negs r0, r0
- strh r0, [r4, 0x3C]
- adds r5, 0x3E
- ldrb r0, [r5]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r5]
- adds r4, 0x3E
- ldrb r0, [r4]
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x1C
- add r10, r0
- ldr r2, [sp]
- add r2, r10
- ldr r0, =sub_815C050
- str r0, [r2]
- add r6, r10
- str r0, [r6]
- mov r1, r9
- strh r1, [r7, 0x3A]
- mov r0, r8
- strh r0, [r7, 0x3C]
- ldr r0, =sub_815BF44
- str r0, [r7, 0x1C]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815BE04
-
- thumb_func_start sub_815BF44
-sub_815BF44: @ 815BF44
- push {lr}
- adds r3, r0, 0
- ldrh r2, [r3, 0x32]
- ldrh r0, [r3, 0x34]
- adds r2, r0
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r1, [r3, 0x26]
- subs r1, r0
- strh r1, [r3, 0x26]
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r3, 0x34]
- movs r2, 0x36
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _0815BF92
- lsls r0, r1, 16
- asrs r0, 16
- movs r1, 0x8
- negs r1, r1
- cmp r0, r1
- bge _0815BF92
- ldr r2, =gSprites
- movs r0, 0x3A
- ldrsh r1, [r3, 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]
- ldrh r0, [r3, 0x36]
- adds r0, 0x1
- strh r0, [r3, 0x36]
-_0815BF92:
- movs r1, 0x36
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- bne _0815BFC6
- movs r2, 0x26
- ldrsh r1, [r3, r2]
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _0815BFC6
- ldr r2, =gSprites
- movs r0, 0x3C
- ldrsh r1, [r3, 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]
- ldrh r0, [r3, 0x36]
- adds r0, 0x1
- strh r0, [r3, 0x36]
-_0815BFC6:
- ldrh r0, [r3, 0x30]
- subs r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0815BFE8
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_815BFF4
- str r0, [r3, 0x1C]
-_0815BFE8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815BF44
-
- thumb_func_start sub_815BFF4
-sub_815BFF4: @ 815BFF4
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, =gSprites
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r3, r0, 2
- adds r6, r5, 0
- adds r6, 0x1C
- adds r0, r3, r6
- ldr r2, [r0]
- ldr r0, =SpriteCallbackDummy
- cmp r2, r0
- bne _0815C040
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldr r0, [r1]
- cmp r0, r2
- bne _0815C040
- adds r0, r3, r5
- bl DestroySprite
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815C040:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815BFF4
-
- thumb_func_start sub_815C050
-sub_815C050: @ 815C050
- push {lr}
- adds r3, r0, 0
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0815C09C
- ldrh r2, [r3, 0x32]
- ldrh r1, [r3, 0x34]
- adds r2, r1
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r3, 0x26]
- subs r0, r1
- strh r0, [r3, 0x26]
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r3, 0x34]
- ldrh r0, [r3, 0x30]
- subs r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0815C09C
- mov r1, r12
- ldrb r0, [r1]
- movs r1, 0x4
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldr r0, =SpriteCallbackDummy
- str r0, [r3, 0x1C]
-_0815C09C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815C050
-
- thumb_func_start sub_815C0A4
-sub_815C0A4: @ 815C0A4
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x5
- bls _0815C0C2
- b _0815C396
-_0815C0C2:
- lsls r0, 2
- ldr r1, =_0815C0D4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815C0D4:
- .4byte _0815C0EC
- .4byte _0815C224
- .4byte _0815C2AC
- .4byte _0815C2E2
- .4byte _0815C310
- .4byte _0815C34A
-_0815C0EC:
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, =0x00000d03
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815C124
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_0815C124:
- mov r0, sp
- bl sub_80A6B30
- ldr r1, =gUnknown_08C2A6EC
- mov r0, sp
- movs r2, 0
- bl sub_80A6D60
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0815C15C
- ldr r1, =gBattle_BG1_X
- ldr r3, =0x0000ffc8
- adds r0, r3, 0
- b _0815C1CA
- .pool
-_0815C15C:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815C1B4
- cmp r4, 0x1
- bne _0815C180
- ldr r1, =gBattle_BG1_X
- ldr r2, =0x0000ff65
- adds r0, r2, 0
- strh r0, [r1]
-_0815C180:
- cmp r4, 0x3
- bne _0815C18C
- ldr r1, =gBattle_BG1_X
- ldr r3, =0x0000ff8d
- adds r0, r3, 0
- strh r0, [r1]
-_0815C18C:
- cmp r4, 0
- bne _0815C196
- ldr r1, =gBattle_BG1_X
- movs r0, 0xE
- strh r0, [r1]
-_0815C196:
- cmp r4, 0x2
- bne _0815C1CC
- ldr r1, =gBattle_BG1_X
- ldr r2, =0x0000ffec
- b _0815C1C8
- .pool
-_0815C1B4:
- cmp r4, 0x1
- bne _0815C1C0
- ldr r1, =gBattle_BG1_X
- ldr r3, =0x0000ff79
- adds r0, r3, 0
- strh r0, [r1]
-_0815C1C0:
- cmp r4, 0
- bne _0815C1CC
- ldr r1, =gBattle_BG1_X
- ldr r2, =0x0000fff6
-_0815C1C8:
- adds r0, r2, 0
-_0815C1CA:
- strh r0, [r1]
-_0815C1CC:
- ldr r1, =gBattle_BG1_Y
- movs r0, 0
- strh r0, [r1]
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08C2A634
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80A6CC0
- ldr r0, =gUnknown_08C2A6D4
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r1, 0x1C]
- ldr r0, =gBattle_BG1_Y
- ldrh r0, [r0]
- strh r0, [r1, 0x1E]
- b _0815C2A4
- .pool
-_0815C224:
- ldr r1, =gTasks
- lsls r4, r6, 2
- adds r0, r4, r6
- lsls r0, 3
- adds r5, r0, r1
- movs r0, 0
- strh r0, [r5, 0xE]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815C268
- ldr r2, =gBattle_BG1_X
- ldr r1, =gUnknown_085CE4A4
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r5, [r5, 0x1C]
- adds r0, r5
- b _0815C27A
- .pool
-_0815C268:
- ldr r2, =gBattle_BG1_X
- ldr r1, =gUnknown_085CE4A4
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- ldrh r0, [r5, 0x1C]
- subs r0, r1
-_0815C27A:
- strh r0, [r2]
- ldr r0, =gTasks
- adds r1, r4, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- adds r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _0815C2A4
- strh r0, [r1, 0x8]
- b _0815C396
- .pool
-_0815C2A4:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0815C396
-_0815C2AC:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r4
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bgt _0815C2C6
- movs r0, 0x5
- strh r0, [r4, 0xA]
-_0815C2C6:
- ldrh r1, [r4, 0xA]
- lsls r1, 8
- movs r0, 0x3
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bne _0815C396
- b _0815C302
-_0815C2E2:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r4
- ldrh r1, [r4, 0xE]
- adds r1, 0x1
- strh r1, [r4, 0xE]
- lsls r1, 16
- asrs r1, 16
- ldr r2, =gUnknown_085CE4A8
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- adds r0, r2
- ldrb r0, [r0]
- cmp r1, r0
- ble _0815C396
-_0815C302:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815C396
- .pool
-_0815C310:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r4
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- ble _0815C32A
- movs r0, 0xD
- strh r0, [r4, 0xA]
-_0815C32A:
- ldrh r1, [r4, 0xA]
- lsls r1, 8
- movs r0, 0x3
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0xD
- bne _0815C396
- movs r0, 0x1
- strh r0, [r4, 0x8]
- b _0815C396
-_0815C34A:
- mov r0, sp
- bl sub_80A6B30
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_80A6C68
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815C36C
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_0815C36C:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG1_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_0815C396:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815C0A4
-
- thumb_func_start sub_815C3A8
-sub_815C3A8: @ 815C3A8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =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 _0815C3E8
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_085CE4B0
- adds r0, r4, 0
- bl sub_80A7CFC
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815C3FA
- .pool
-_0815C3E8:
- adds r0, r4, 0
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _0815C3FA
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0815C3FA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815C3A8
-
- thumb_func_start sub_815C400
-sub_815C400: @ 815C400
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _0815C41E
- adds r0, r4, 0
- movs r1, 0
- bl InitAnimSpritePos
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0815C472
-_0815C41E:
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- cmp r1, 0x14
- ble _0815C472
- ldrh r0, [r4, 0x30]
- adds r0, 0xA0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- adds r0, 0x80
- strh r0, [r4, 0x32]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815C450
- ldrh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- b _0815C456
- .pool
-_0815C450:
- ldrh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
-_0815C456:
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x40
- ble _0815C472
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815C472:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815C400
-
- thumb_func_start sub_815C478
-sub_815C478: @ 815C478
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- ldr r5, =gBattleAnimArgs
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0815C4A4
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _0815C538
- .pool
-_0815C4A4:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bge _0815C4B0
- movs r0, 0
- strh r0, [r5, 0x4]
-_0815C4B0:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0x2
- ble _0815C4BC
- movs r0, 0x2
- strh r0, [r5, 0x4]
-_0815C4BC:
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- movs r0, 0x4
- ldrsh r1, [r5, r0]
- lsls r1, 1
- movs r0, 0x8
- subs r0, r1
- strh r0, [r4, 0xE]
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- lsls r0, 7
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r4, 0x10]
- ldrh r0, [r5, 0x4]
- adds r0, 0x2
- strh r0, [r4, 0x12]
- ldrh r0, [r5, 0x2]
- subs r0, 0x1
- strh r0, [r4, 0x14]
- ldrb r0, [r5]
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0815C508
- ldr r0, =gBattleAnimAttacker
- b _0815C50A
- .pool
-_0815C508:
- ldr r0, =gBattleAnimTarget
-_0815C50A:
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815C528
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x10]
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x12]
-_0815C528:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80A7270
- ldr r0, =sub_815C548
- str r0, [r4]
-_0815C538:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815C478
-
- thumb_func_start sub_815C548
-sub_815C548: @ 815C548
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r6, [r4, r0]
- cmp r6, 0x1
- beq _0815C5D0
- cmp r6, 0x1
- bgt _0815C570
- cmp r6, 0
- beq _0815C57C
- b _0815C6A8
- .pool
-_0815C570:
- cmp r6, 0x2
- beq _0815C628
- cmp r6, 0x3
- bne _0815C57A
- b _0815C698
-_0815C57A:
- b _0815C6A8
-_0815C57C:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x12]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- ldrh r0, [r4, 0xC]
- ldrh r1, [r4, 0x10]
- subs r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0xC]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A73A0
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _0815C6A8
- strh r6, [r4, 0xA]
- b _0815C690
- .pool
-_0815C5D0:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- ldrh r2, [r4, 0x12]
- subs r1, r2
- strh r1, [r0, 0x24]
- ldrh r0, [r4, 0x10]
- ldrh r1, [r4, 0xC]
- adds r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0xC]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A73A0
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- lsls r1, 16
- asrs r1, 16
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- lsls r0, 1
- cmp r1, r0
- blt _0815C6A8
- movs r0, 0
- strh r0, [r4, 0xA]
- b _0815C690
- .pool
-_0815C628:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x12]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- movs r5, 0
- strh r1, [r0, 0x24]
- ldrh r0, [r4, 0xC]
- ldrh r1, [r4, 0x10]
- subs r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0xC]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A73A0
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _0815C6A8
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0815C690
- subs r0, r1, 0x1
- strh r0, [r4, 0x14]
- strh r5, [r4, 0xA]
- strh r5, [r4, 0x8]
- b _0815C6A8
- .pool
-_0815C690:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815C6A8
-_0815C698:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A7344
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0815C6A8:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_815C548
-
- thumb_func_start sub_815C6B0
-sub_815C6B0: @ 815C6B0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0815C6D4
- strh r0, [r4, 0x20]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- b _0815C6DE
- .pool
-_0815C6D4:
- movs r0, 0xF0
- strh r0, [r4, 0x20]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- subs r0, 0x1E
-_0815C6DE:
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x32]
- ldrb r1, [r1, 0x2]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, =sub_815C700
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815C6B0
-
- thumb_func_start sub_815C700
-sub_815C700: @ 815C700
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x3
- strh r0, [r4, 0x2E]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815C744
- ldrh r1, [r4, 0x20]
- adds r1, 0x5
- strh r1, [r4, 0x20]
- ldrh r0, [r4, 0x22]
- subs r0, 0x1
- strh r0, [r4, 0x22]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xF0
- ble _0815C732
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815C732:
- ldrh r1, [r4, 0x2E]
- movs r0, 0xFF
- ands r0, r1
- movs r1, 0x10
- bl Sin
- b _0815C768
- .pool
-_0815C744:
- ldrh r1, [r4, 0x20]
- subs r1, 0x5
- strh r1, [r4, 0x20]
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
- lsls r1, 16
- cmp r1, 0
- bge _0815C75C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815C75C:
- ldrh r1, [r4, 0x2E]
- movs r0, 0xFF
- ands r0, r1
- movs r1, 0x10
- bl Cos
-_0815C768:
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815C700
-
- thumb_func_start sub_815C770
-sub_815C770: @ 815C770
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- movs r0, 0x20
- strh r0, [r4, 0x20]
- movs r0, 0x40
- strh r0, [r4, 0x22]
- movs r0, 0x80
- lsls r0, 4
- strh r0, [r4, 0x24]
- ldr r0, =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- movs r1, 0
- bl sub_80A7270
- ldr r0, =sub_815C7C4
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815C770
-
- thumb_func_start sub_815C7C4
-sub_815C7C4: @ 815C7C4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r7, r0, r1
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- mov r8, r0
- cmp r0, 0x1
- beq _0815C860
- cmp r0, 0x1
- bgt _0815C7F4
- cmp r0, 0
- beq _0815C7FC
- b _0815C8DA
- .pool
-_0815C7F4:
- mov r2, r8
- cmp r2, 0x2
- beq _0815C8C8
- b _0815C8DA
-_0815C7FC:
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r1, [r7, 0xC]
- adds r2, r0, r1
- strh r2, [r7, 0xC]
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r3, [r7, 0x24]
- mov r8, r3
- movs r3, 0x24
- ldrsh r1, [r7, r3]
- cmp r0, r1
- blt _0815C8DA
- mov r0, r8
- subs r5, r0, r2
- lsls r5, 16
- asrs r5, 16
- adds r6, r1, 0
- lsls r6, 1
- adds r0, r5, 0
- adds r1, r6, 0
- bl __divsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- adds r1, r6, 0
- bl __modsi3
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- asrs r4, 16
- movs r1, 0x1
- ands r4, r1
- cmp r4, 0
- bne _0815C854
- lsls r0, 16
- asrs r0, 16
- mov r2, r8
- subs r0, r2, r0
- b _0815C8B2
-_0815C854:
- lsls r0, 16
- asrs r0, 16
- mov r3, r8
- subs r0, r3
- strh r0, [r7, 0xC]
- b _0815C8DA
-_0815C860:
- ldr r1, =0xfffffe00
- adds r0, r1, 0
- ldrh r2, [r7, 0xC]
- adds r1, r0, r2
- strh r1, [r7, 0xC]
- movs r3, 0xC
- ldrsh r0, [r7, r3]
- movs r2, 0x24
- ldrsh r6, [r7, r2]
- cmn r0, r6
- bgt _0815C8DA
- ldrh r3, [r7, 0x24]
- mov r9, r3
- mov r0, r9
- subs r4, r0, r1
- lsls r4, 16
- asrs r4, 16
- lsls r6, 1
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- adds r1, r6, 0
- bl __modsi3
- lsls r0, 16
- lsrs r2, r0, 16
- mov r1, r8
- ands r1, r5
- lsls r0, r1, 16
- asrs r1, r0, 16
- cmp r1, 0
- bne _0815C8BC
- lsls r0, r2, 16
- asrs r0, 16
- mov r2, r9
- subs r0, r2
-_0815C8B2:
- strh r0, [r7, 0xC]
- strh r1, [r7, 0x8]
- b _0815C8DA
- .pool
-_0815C8BC:
- lsls r0, r2, 16
- asrs r0, 16
- mov r3, r9
- subs r0, r3, r0
- strh r0, [r7, 0xC]
- b _0815C8DA
-_0815C8C8:
- ldrh r0, [r7, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A7344
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _0815C950
-_0815C8DA:
- ldrh r0, [r7, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r7, 0xC]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r7, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A73A0
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- movs r2, 0xC
- ldrsh r0, [r7, r2]
- cmp r0, 0
- bge _0815C90E
- adds r0, 0x3F
-_0815C90E:
- asrs r0, 6
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrh r0, [r7, 0xA]
- adds r0, 0x1
- strh r0, [r7, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _0815C950
- ldrh r1, [r7, 0x20]
- movs r3, 0x20
- ldrsh r0, [r7, r3]
- cmp r0, 0
- beq _0815C94C
- subs r0, r1, 0x1
- strh r0, [r7, 0x20]
- ldrh r0, [r7, 0x24]
- ldrh r1, [r7, 0x22]
- subs r0, r1
- strh r0, [r7, 0x24]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _0815C950
- movs r0, 0x10
- strh r0, [r7, 0x24]
- b _0815C950
- .pool
-_0815C94C:
- movs r0, 0x2
- strh r0, [r7, 0x8]
-_0815C950:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_815C7C4
-
- thumb_func_start sub_815C95C
-sub_815C95C: @ 815C95C
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0815C9BC
- ldr r6, =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r0, [r6, r2]
- cmp r0, 0
- bne _0815C990
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_0815C990:
- ldrh r0, [r6]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrh r1, [r6, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r1, r2
- strh r0, [r5, 0x22]
- movs r0, 0x80
- strh r0, [r5, 0x30]
- movs r0, 0xC0
- lsls r0, 2
- strh r0, [r5, 0x32]
- strh r1, [r5, 0x34]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _0815CA1A
- .pool
-_0815C9BC:
- ldrh r1, [r5, 0x30]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r5, 0x24]
- ldrh r0, [r5, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r2, [r5, 0x26]
- adds r0, r2
- strh r0, [r5, 0x26]
- movs r2, 0x36
- ldrsh r0, [r5, r2]
- adds r4, r1, 0
- cmp r0, 0
- bne _0815C9FA
- movs r0, 0x26
- ldrsh r1, [r5, r0]
- movs r2, 0x34
- ldrsh r0, [r5, r2]
- cmn r1, r0
- ble _0815C9FA
- movs r0, 0x1
- strh r0, [r5, 0x36]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- negs r0, r0
- movs r1, 0x3
- bl __divsi3
- lsls r0, 1
- strh r0, [r5, 0x32]
-_0815C9FA:
- adds r0, r4, 0
- adds r0, 0xC0
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x80
- strh r0, [r5, 0x32]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0815CA1A
- adds r0, r5, 0
- bl DestroyAnimSprite
-_0815CA1A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_815C95C
-
- thumb_func_start sub_815CA20
-sub_815CA20: @ 815CA20
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- adds r7, r0, 0
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r2, r0, r1
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _0815CB2C
- ldr r0, =gBattleAnimArgs
- movs r3, 0
- ldrsh r1, [r0, r3]
- mov r8, r0
- cmp r1, 0
- bne _0815CA5C
- ldr r0, =gBattleAnimAttacker
- b _0815CA5E
- .pool
-_0815CA5C:
- ldr r0, =gBattleAnimTarget
-_0815CA5E:
- ldrb r0, [r0]
- strh r0, [r2, 0x1E]
- mov r1, r8
- ldrb r0, [r1]
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r4, r7, 2
- adds r0, r4, r7
- lsls r0, 3
- adds r6, r0, r1
- strh r5, [r6, 0x1C]
- adds r0, r5, 0
- movs r1, 0
- bl sub_80A7270
- mov r2, r8
- movs r3, 0x2
- ldrsh r0, [r2, r3]
- cmp r0, 0x1
- beq _0815CAC0
- cmp r0, 0x1
- bgt _0815CAA0
- cmp r0, 0
- beq _0815CAA8
- lsls r2, r5, 4
- b _0815CB08
- .pool
-_0815CAA0:
- cmp r0, 0x2
- beq _0815CACA
- lsls r2, r5, 4
- b _0815CB08
-_0815CAA8:
- movs r2, 0xA0
- lsls r2, 1
- adds r0, r5, 0
- movs r1, 0xE0
- movs r3, 0
- bl obj_id_set_rotscale
- adds r0, r5, 0
- bl sub_80A7E6C
- lsls r2, r5, 4
- b _0815CB08
-_0815CAC0:
- movs r2, 0x98
- lsls r2, 1
- movs r3, 0xF0
- lsls r3, 4
- b _0815CAD2
-_0815CACA:
- movs r2, 0x98
- lsls r2, 1
- movs r3, 0xF1
- lsls r3, 8
-_0815CAD2:
- adds r0, r5, 0
- movs r1, 0xD0
- bl obj_id_set_rotscale
- adds r0, r5, 0
- bl sub_80A7E6C
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815CAF8
- ldrb r0, [r6, 0x1E]
- bl GetBattlerSide
- lsls r0, 24
- lsls r2, r5, 4
- cmp r0, 0
- bne _0815CB08
-_0815CAF8:
- ldr r0, =gSprites
- lsls r2, r5, 4
- adds r1, r2, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x10
- strh r0, [r1, 0x26]
-_0815CB08:
- ldr r1, =gSprites
- adds r0, r2, r5
- lsls r0, 2
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0, 0x24]
- ldr r0, =gTasks
- adds r1, r4, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0815CB78
- .pool
-_0815CB2C:
- ldrb r5, [r2, 0x1C]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- movs r4, 0
- strh r0, [r2, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0815CB50
- strh r4, [r2, 0xC]
- ldr r0, =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x24]
- negs r0, r0
- strh r0, [r1, 0x24]
-_0815CB50:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- bne _0815CB78
- adds r0, r5, 0
- bl sub_80A7344
- ldr r1, =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- strh r4, [r0, 0x24]
- strh r4, [r0, 0x26]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_0815CB78:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815CA20
-
- thumb_func_start sub_815CB88
-sub_815CB88: @ 815CB88
- push {r4,r5,lr}
- adds r4, r0, 0
- bl Random2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xC
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, r0
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- bl Random2
- ldr r5, =0x000001ff
- ands r5, r0
- bl Random2
- movs r1, 0xFF
- ands r1, r0
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _0815CBE0
- movs r2, 0xBC
- lsls r2, 3
- adds r0, r5, r2
- b _0815CBE8
- .pool
-_0815CBE0:
- movs r3, 0xBC
- lsls r3, 3
- adds r0, r3, 0
- subs r0, r5
-_0815CBE8:
- strh r0, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0815CBFA
- movs r2, 0x90
- lsls r2, 3
- adds r0, r1, r2
- b _0815CC02
-_0815CBFA:
- movs r3, 0x90
- lsls r3, 3
- adds r0, r3, 0
- subs r0, r1
-_0815CC02:
- strh r0, [r4, 0x30]
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r4, 0x32]
- lsls r0, 16
- cmp r0, 0
- bne _0815CC1C
- ldr r0, =0x0000fff8
- b _0815CC1E
- .pool
-_0815CC1C:
- movs r0, 0xF8
-_0815CC1E:
- strh r0, [r4, 0x20]
- movs r0, 0x68
- strh r0, [r4, 0x22]
- ldr r0, =sub_815CC34
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815CB88
-
- thumb_func_start sub_815CC34
-sub_815CC34: @ 815CC34
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815CC4C
- ldrh r3, [r4, 0x2E]
- lsls r0, r3, 16
- asrs r0, 24
- ldrh r1, [r4, 0x24]
- adds r0, r1
- b _0815CC56
-_0815CC4C:
- ldrh r3, [r4, 0x2E]
- lsls r1, r3, 16
- asrs r1, 24
- ldrh r0, [r4, 0x24]
- subs r0, r1
-_0815CC56:
- strh r0, [r4, 0x24]
- ldrh r2, [r4, 0x30]
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r4, 0x26]
- subs r0, r1
- strh r0, [r4, 0x26]
- adds r0, r3, 0
- subs r0, 0x16
- strh r0, [r4, 0x2E]
- adds r1, r2, 0
- subs r1, 0x30
- strh r1, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bge _0815CC7A
- movs r0, 0
- strh r0, [r4, 0x2E]
-_0815CC7A:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _0815CC8E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815CC8E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815CC34
-
- thumb_func_start sub_815CC94
-sub_815CC94: @ 815CC94
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r1, =0x00001f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r0, =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r4, =gBattle_WIN0V
- strh r1, [r4]
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- movs r1, 0
- bl sub_80A6980
- ldrb r1, [r5, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r5, 0x1]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_815CD0C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815CC94
-
- thumb_func_start sub_815CD0C
-sub_815CD0C: @ 815CD0C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0815CD4A
- cmp r0, 0x1
- bgt _0815CD22
- cmp r0, 0
- beq _0815CD2C
- b _0815CDAA
-_0815CD22:
- cmp r0, 0x2
- beq _0815CD60
- cmp r0, 0x3
- beq _0815CD82
- b _0815CDAA
-_0815CD2C:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0815CDAA
- b _0815CD7A
-_0815CD4A:
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _0815CDAA
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
- b _0815CD7A
-_0815CD60:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0815CDAA
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_0815CD7A:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- b _0815CDAA
-_0815CD82:
- ldr r1, =0x00003f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815CDAA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815CD0C
-
- thumb_func_start sub_815CDB4
-sub_815CDB4: @ 815CDB4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- ldr r1, =sub_815CDFC
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815CDB4
-
- thumb_func_start sub_815CDFC
-sub_815CDFC: @ 815CDFC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- bl Sin
- strh r0, [r4, 0x24]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- ldrh r1, [r4, 0x34]
- lsls r1, 16
- asrs r1, 24
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x9
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- lsls r1, r0, 16
- cmp r0, 0x3F
- bls _0815CE36
- asrs r0, r1, 16
- cmp r0, 0xC3
- ble _0815CE48
-_0815CE36:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A82E4
- subs r0, 0x1
- b _0815CE52
- .pool
-_0815CE48:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A82E4
- adds r0, 0x1
-_0815CE52:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- movs r3, 0x38
- ldrsh r2, [r4, r3]
- cmp r2, 0
- bne _0815CE98
- movs r1, 0x80
- lsls r1, 3
- adds r0, r1, 0
- ldrh r3, [r4, 0x32]
- adds r0, r3
- strh r0, [r4, 0x32]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r3, [r4, 0x34]
- adds r0, r3
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x2E
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _0815CEC8
- strh r2, [r4, 0x36]
- movs r0, 0x1
- strh r0, [r4, 0x38]
- b _0815CEC8
- .pool
-_0815CE98:
- cmp r2, 0x1
- bne _0815CEC8
- ldr r1, =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r4, 0x32]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldr r3, =0xffffff00
- adds r0, r3, 0
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _0815CEC8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815CEC8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815CDFC
-
- thumb_func_start sub_815CED8
-sub_815CED8: @ 815CED8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x18]
- movs r0, 0
- bl GetAnimBattlerSpriteId
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0815CF18
- movs r0, 0x1
- str r0, [sp, 0x1C]
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- ldr r1, [r0, 0x10]
- mov r9, r1
- ldr r2, [r0, 0xC]
- mov r8, r2
- ldrh r6, [r0, 0x2]
- movs r3, 0x14
- b _0815D058
- .pool
-_0815CF18:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815CFC4
- movs r0, 0
- str r0, [sp, 0x1C]
- ldr r6, =gBattlerPartyIndexes
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- movs r5, 0x64
- muls r0, r5
- ldr r7, =gPlayerParty
- adds r0, r7
- movs r1, 0
- bl GetMonData
- mov r9, r0
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r7
- movs r1, 0x1
- bl GetMonData
- mov r8, r0
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldrb r2, [r4]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0815CFBC
- adds r0, r2, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815CF9C
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r7
- b _0815CFAA
- .pool
-_0815CF9C:
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- ldr r1, =gEnemyParty
- adds r0, r1
-_0815CFAA:
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- b _0815CFBE
- .pool
-_0815CFBC:
- ldrh r6, [r1, 0x2]
-_0815CFBE:
- movs r1, 0x14
- mov r10, r1
- b _0815D05A
-_0815CFC4:
- movs r2, 0x1
- str r2, [sp, 0x1C]
- ldr r6, =gBattlerPartyIndexes
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- movs r5, 0x64
- muls r0, r5
- ldr r7, =gEnemyParty
- adds r0, r7
- movs r1, 0
- bl GetMonData
- mov r9, r0
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r7
- movs r1, 0x1
- bl GetMonData
- mov r8, r0
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldrb r2, [r4]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0815D054
- adds r0, r2, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815D03C
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- ldr r1, =gPlayerParty
- adds r0, r1
- b _0815D048
- .pool
-_0815D03C:
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r7
-_0815D048:
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- b _0815D056
-_0815D054:
- ldrh r6, [r1, 0x2]
-_0815D056:
- ldr r3, =0x0000ffec
-_0815D058:
- mov r10, r3
-_0815D05A:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A8328
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- adds r4, r1
- lsls r4, 16
- asrs r4, 16
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0x5
- str r0, [sp, 0x4]
- mov r3, r9
- str r3, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- str r0, [sp, 0x10]
- movs r0, 0x1
- str r0, [sp, 0x14]
- adds r0, r6, 0
- ldr r1, [sp, 0x1C]
- movs r2, 0
- adds r3, r4, 0
- bl sub_80A8394
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =gSprites
- lsls r5, r6, 4
- adds r5, r6
- lsls r5, 2
- adds r5, r0
- movs r0, 0x3
- ands r7, r0
- lsls r7, 2
- mov r8, r7
- ldrb r0, [r5, 0x5]
- movs r4, 0xD
- negs r4, r4
- adds r1, r4, 0
- ands r1, r0
- mov r2, r8
- orrs r1, r2
- strb r1, [r5, 0x5]
- ldrb r2, [r5, 0x1]
- adds r0, r4, 0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r5, 0x1]
- ldr r0, =0x00007fff
- lsrs r1, 4
- lsls r1, 4
- movs r3, 0x80
- lsls r3, 1
- adds r2, r3, 0
- orrs r1, r2
- movs r2, 0x20
- bl FillPalette
- ldrb r0, [r5, 0x5]
- ands r4, r0
- mov r0, r8
- orrs r4, r0
- strb r4, [r5, 0x5]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldr r0, =gTasks
- ldr r1, [sp, 0x18]
- lsls r4, r1, 2
- adds r4, r1
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0xA]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- strh r6, [r4, 0x8]
- ldr r0, =sub_815D160
- str r0, [r4]
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815CED8
-
- thumb_func_start sub_815D160
-sub_815D160: @ 815D160
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815D1AE
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _0815D1AE
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x1C]
- strh r0, [r4, 0x1E]
- ldr r0, =sub_815D1BC
- str r0, [r4]
-_0815D1AE:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815D160
-
- thumb_func_start sub_815D1BC
-sub_815D1BC: @ 815D1BC
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- ldrb r2, [r5, 0x8]
- ldrh r0, [r5, 0x1C]
- subs r0, 0x10
- movs r4, 0
- strh r0, [r5, 0x1C]
- ldrh r0, [r5, 0x1E]
- adds r0, 0x80
- strh r0, [r5, 0x1E]
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r6, r0, r1
- ldrb r2, [r6, 0x1]
- lsls r1, r2, 30
- lsrs r1, 30
- movs r0, 0x2
- orrs r1, r0
- subs r0, 0x6
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x1]
- movs r0, 0x1C
- ldrsh r2, [r5, r0]
- movs r0, 0x1E
- ldrsh r3, [r5, r0]
- str r4, [sp]
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_80A73E0
- ldrh r0, [r5, 0x20]
- adds r0, 0x1
- strh r0, [r5, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _0815D22A
- adds r0, r6, 0
- bl sub_80A749C
- adds r0, r6, 0
- bl sub_80A8610
- ldr r0, =sub_80A6814
- str r0, [r5]
-_0815D22A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815D1BC
-
- thumb_func_start sub_815D240
-sub_815D240: @ 815D240
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r4, r1, r0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0815D26C
- ldr r0, =gBattleAnimAttacker
- b _0815D26E
- .pool
-_0815D26C:
- ldr r0, =gBattleAnimTarget
-_0815D26E:
- ldrb r5, [r0]
- movs r6, 0
- strh r6, [r4, 0x8]
- strh r6, [r4, 0xA]
- strh r6, [r4, 0xC]
- movs r0, 0x10
- strh r0, [r4, 0xE]
- strh r6, [r4, 0x10]
- strh r5, [r4, 0x12]
- movs r0, 0x20
- strh r0, [r4, 0x14]
- strh r6, [r4, 0x16]
- movs r0, 0x18
- strh r0, [r4, 0x18]
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815D2A0
- movs r1, 0x18
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x18]
-_0815D2A0:
- adds r0, r5, 0
- bl GetBattlerYCoordWithElevation
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x22
- strh r0, [r4, 0x22]
- cmp r0, 0
- bge _0815D2B4
- strh r6, [r4, 0x22]
-_0815D2B4:
- ldrh r0, [r4, 0x22]
- adds r0, 0x42
- strh r0, [r4, 0x24]
- ldr r0, =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- adds r0, r5, 0
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815D304
- ldr r0, =0x04000014
- str r0, [sp]
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r0, =gBattle_BG1_X
- ldrh r5, [r0]
- ldr r0, =gBattle_BG1_Y
- b _0815D316
- .pool
-_0815D304:
- ldr r0, =0x04000018
- str r0, [sp]
- ldr r1, =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- ldr r0, =gBattle_BG2_X
- ldrh r5, [r0]
- ldr r0, =gBattle_BG2_Y
-_0815D316:
- ldrh r3, [r0]
- movs r7, 0
- movs r2, 0
- ldr r6, =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r0, r6
- mov r12, r0
-_0815D326:
- lsls r2, 16
- asrs r2, 16
- lsls r1, r2, 1
- adds r0, r1, r6
- strh r5, [r0]
- add r1, r12
- strh r5, [r1]
- adds r0, r2, 0x1
- lsls r0, 1
- adds r1, r0, r6
- strh r3, [r1]
- add r0, r12
- strh r3, [r0]
- lsls r0, r7, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- adds r2, 0x2
- lsls r2, 16
- lsrs r2, 16
- lsrs r7, r0, 16
- asrs r0, 16
- cmp r0, 0x9F
- ble _0815D326
- ldr r0, =0xa6600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldr r0, =sub_815D398
- str r0, [r4]
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815D240
-
- thumb_func_start sub_815D398
-sub_815D398: @ 815D398
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r6, r0, r1
- ldrb r0, [r6, 0x12]
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815D3D8
- ldr r0, =gBattle_BG1_X
- ldrh r0, [r0]
- str r0, [sp, 0x4]
- ldr r0, =gBattle_BG1_Y
- b _0815D3E0
- .pool
-_0815D3D8:
- ldr r0, =gBattle_BG2_X
- ldrh r0, [r0]
- str r0, [sp, 0x4]
- ldr r0, =gBattle_BG2_Y
-_0815D3E0:
- ldrh r0, [r0]
- str r0, [sp, 0x8]
- movs r1, 0x8
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bne _0815D3EE
- b _0815D5CC
-_0815D3EE:
- cmp r0, 0x1
- bgt _0815D400
- cmp r0, 0
- beq _0815D40E
- b _0815D63C
- .pool
-_0815D400:
- cmp r0, 0x2
- bne _0815D406
- b _0815D5EC
-_0815D406:
- cmp r0, 0x3
- bne _0815D40C
- b _0815D636
-_0815D40C:
- b _0815D63C
-_0815D40E:
- movs r2, 0x24
- ldrsh r0, [r6, r2]
- lsls r0, 17
- lsrs r5, r0, 16
- movs r3, 0
- str r3, [sp]
- mov r9, r3
- movs r4, 0
- ldrh r0, [r6, 0xA]
- adds r0, 0x2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6, 0xA]
- ldrh r7, [r6, 0xA]
- mov r8, r7
- movs r0, 0x14
- ldrsh r1, [r6, r0]
- movs r0, 0xFC
- lsls r0, 3
- bl __divsi3
- strh r0, [r6, 0x1A]
- movs r1, 0x16
- ldrsh r0, [r6, r1]
- lsls r0, 1
- movs r2, 0x1A
- ldrsh r1, [r6, r2]
- bl __divsi3
- negs r0, r0
- strh r0, [r6, 0x1C]
- ldrh r0, [r6, 0x16]
- strh r0, [r6, 0x1E]
- lsls r0, 16
- asrs r0, 21
- lsls r0, 16
- lsrs r7, r0, 16
- strh r7, [r6, 0x20]
- ldrh r2, [r6, 0x24]
- lsls r3, r2, 16
- mov r12, r3
- asrs r1, r3, 16
- movs r3, 0x22
- ldrsh r0, [r6, r3]
- cmp r1, r0
- ble _0815D52E
- ldr r0, =gScanlineEffect
- mov r10, r0
- ldr r1, [sp, 0x4]
- lsls r0, r1, 16
- asrs r0, 16
- str r0, [sp, 0x10]
- ldr r2, [sp, 0x8]
- lsls r0, r2, 16
- asrs r0, 16
- str r0, [sp, 0xC]
-_0815D47E:
- lsls r5, 16
- asrs r5, 16
- adds r2, r5, 0x1
- lsls r2, 1
- mov r3, r10
- ldrb r1, [r3, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- ldr r0, =gScanlineEffectRegBuffers
- adds r2, r0
- lsls r4, 16
- asrs r4, 16
- mov r1, r9
- lsls r0, r1, 16
- asrs r0, 16
- subs r0, r4, r0
- ldr r3, [sp, 0xC]
- adds r0, r3, r0
- strh r0, [r2]
- lsls r3, r5, 1
- mov r0, r10
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r3, r0
- ldr r1, =gScanlineEffectRegBuffers
- adds r3, r1
- lsls r1, r7, 16
- asrs r1, 16
- ldr r2, [sp, 0x10]
- adds r1, r2, r1
- mov r7, r8
- lsls r2, r7, 16
- asrs r2, 16
- lsls r0, r2, 1
- ldr r7, =gSineTable
- adds r0, r7
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
- adds r1, r0
- strh r1, [r3]
- adds r2, 0xA
- mov r8, r2
- movs r0, 0xFF
- mov r1, r8
- ands r1, r0
- mov r8, r1
- ldrh r0, [r6, 0x1C]
- ldrh r2, [r6, 0x1E]
- adds r0, r2
- strh r0, [r6, 0x1E]
- lsls r0, 16
- asrs r0, 21
- lsls r0, 16
- lsrs r7, r0, 16
- strh r7, [r6, 0x20]
- adds r4, 0x1
- lsls r4, 16
- lsrs r4, 16
- subs r5, 0x2
- lsls r5, 16
- lsrs r5, 16
- ldr r3, [sp]
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r1, [r6, 0x14]
- adds r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- str r2, [sp]
- asrs r0, 21
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- ldr r0, =0xffff0000
- add r0, r12
- lsrs r2, r0, 16
- lsls r3, r2, 16
- mov r12, r3
- asrs r1, r3, 16
- movs r3, 0x22
- ldrsh r0, [r6, r3]
- cmp r1, r0
- bgt _0815D47E
-_0815D52E:
- lsls r1, r2, 17
- cmp r1, 0
- blt _0815D55A
- ldr r4, =gScanlineEffectRegBuffers
- ldr r7, [sp, 0x4]
- lsls r0, r7, 16
- asrs r0, 16
- adds r3, r0, 0
- adds r3, 0xF0
- movs r0, 0xF0
- lsls r0, 3
- adds r5, r4, r0
-_0815D546:
- asrs r2, r1, 16
- lsls r1, r2, 1
- adds r0, r1, r4
- strh r3, [r0]
- adds r1, r5
- strh r3, [r1]
- subs r2, 0x2
- lsls r1, r2, 16
- cmp r1, 0
- bge _0815D546
-_0815D55A:
- ldrh r0, [r6, 0x14]
- adds r0, 0x1
- strh r0, [r6, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3F
- ble _0815D5C2
- movs r0, 0x40
- strh r0, [r6, 0x14]
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0815D594
- ldrh r0, [r6, 0xE]
- subs r0, 0x1
- strh r0, [r6, 0xE]
- b _0815D59A
- .pool
-_0815D594:
- ldrh r0, [r6, 0x10]
- adds r0, 0x1
- strh r0, [r6, 0x10]
-_0815D59A:
- ldrh r1, [r6, 0x10]
- lsls r1, 8
- ldrh r0, [r6, 0xE]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xE
- ldrsh r1, [r6, r2]
- cmp r1, 0
- bne _0815D63C
- movs r3, 0x10
- ldrsh r0, [r6, r3]
- cmp r0, 0x10
- bne _0815D63C
- strh r1, [r6, 0xC]
- strh r1, [r6, 0xE]
- b _0815D62E
-_0815D5C2:
- ldrh r0, [r6, 0x18]
- ldrh r7, [r6, 0x16]
- adds r0, r7
- strh r0, [r6, 0x16]
- b _0815D63C
-_0815D5CC:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _0815D63C
- ldr r1, =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- movs r0, 0
- strh r0, [r6, 0xC]
- b _0815D62E
- .pool
-_0815D5EC:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0815D602
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- b _0815D608
-_0815D602:
- ldrh r0, [r6, 0x10]
- subs r0, 0x1
- strh r0, [r6, 0x10]
-_0815D608:
- ldrh r1, [r6, 0x10]
- lsls r1, 8
- ldrh r0, [r6, 0xE]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- cmp r0, 0x10
- bne _0815D63C
- movs r2, 0x10
- ldrsh r0, [r6, r2]
- cmp r0, 0
- bne _0815D63C
- strh r0, [r6, 0xC]
- strh r0, [r6, 0xE]
-_0815D62E:
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- b _0815D63C
-_0815D636:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_0815D63C:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_815D398
-
- thumb_func_start sub_815D64C
-sub_815D64C: @ 815D64C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r0, =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x26]
- ldr r2, =gUnknown_085CE5F0
- adds r0, r4, 0
- bl sub_80A7CFC
- ldr r0, =sub_815D694
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815D64C
-
- thumb_func_start sub_815D694
-sub_815D694: @ 815D694
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r2, =gTasks
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- adds r1, r0, 0x1
- movs r5, 0
- strh r1, [r3, 0x8]
- subs r0, 0x14
- lsls r0, 16
- lsrs r0, 16
- adds r6, r2, 0
- cmp r0, 0x16
- bhi _0815D6F8
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815D708
- strh r5, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- movs r5, 0x1
- ands r0, r5
- cmp r0, 0
- bne _0815D6F8
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000ffff
- strh r1, [r0, 0x24]
- b _0815D708
- .pool
-_0815D6F8:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
-_0815D708:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r6
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _0815D720
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_0815D720:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815D694
-
- thumb_func_start sub_815D72C
-sub_815D72C: @ 815D72C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- adds r5, r2, 0
- adds r0, r3, 0
- ldr r4, [sp, 0x14]
- ldr r6, [sp, 0x18]
- lsls r1, 16
- lsrs r1, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r6, 16
- lsrs r6, 16
- mov r2, r8
- strh r1, [r2, 0x20]
- strh r5, [r2, 0x22]
- lsls r1, 16
- asrs r1, 16
- lsls r2, r1, 4
- mov r3, r8
- strh r2, [r3, 0x36]
- lsls r5, 16
- asrs r5, 16
- lsls r2, r5, 4
- strh r2, [r3, 0x38]
- lsls r0, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 4
- adds r1, r6, 0
- bl __divsi3
- mov r1, r8
- strh r0, [r1, 0x3A]
- lsls r4, 16
- asrs r4, 16
- subs r4, r5
- lsls r4, 4
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- mov r2, r8
- strh r0, [r2, 0x3C]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_815D72C
-
- thumb_func_start sub_815D794
-sub_815D794: @ 815D794
- ldrh r1, [r0, 0x3A]
- ldrh r2, [r0, 0x36]
- adds r1, r2
- strh r1, [r0, 0x36]
- ldrh r2, [r0, 0x3C]
- ldrh r3, [r0, 0x38]
- adds r2, r3
- strh r2, [r0, 0x38]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r0, 0x20]
- lsls r2, 16
- asrs r2, 20
- strh r2, [r0, 0x22]
- bx lr
- thumb_func_end sub_815D794
-
- thumb_func_start sub_815D7B4
-sub_815D7B4: @ 815D7B4
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldrh r6, [r4, 0x20]
- ldrh r5, [r4, 0x22]
- bl sub_80A6838
- ldr r0, =gBattleAnimArgs
- ldrb r1, [r0]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x22
- ldrsh r2, [r4, r0]
- lsls r6, 16
- asrs r6, 16
- lsls r5, 16
- asrs r5, 16
- str r5, [sp]
- movs r0, 0x40
- str r0, [sp, 0x4]
- adds r0, r4, 0
- adds r3, r6, 0
- bl sub_815D72C
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, =sub_815D804
- str r0, [r4, 0x1C]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815D7B4
-
- thumb_func_start sub_815D804
-sub_815D804: @ 815D804
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- lsls r4, 3
- movs r0, 0xFF
- ands r4, r0
- adds r0, r5, 0
- bl sub_815D794
- adds r0, r4, 0
- movs r1, 0x8
- bl Sin
- strh r0, [r5, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x3A
- ble _0815D86A
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815D86A
- movs r0, 0
- strh r0, [r5, 0x30]
- ldrh r1, [r5, 0x32]
- adds r1, 0x1
- strh r1, [r5, 0x32]
- movs r0, 0x1
- ands r1, r0
- adds r3, r5, 0
- adds r3, 0x3E
- lsls r1, 2
- ldrb r2, [r3]
- subs r0, 0x6
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- cmp r0, 0x3
- ble _0815D86A
- adds r0, r5, 0
- bl move_anim_8074EE0
-_0815D86A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815D804
-
- thumb_func_start sub_815D870
-sub_815D870: @ 815D870
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, =gBattleAnimArgs
- ldrh r0, [r6, 0x6]
- strh r0, [r5, 0x2E]
- ldrb r1, [r6]
- adds r0, r5, 0
- bl StartSpriteAffineAnim
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815D896
- ldrh r0, [r6, 0x2]
- negs r0, r0
- strh r0, [r6, 0x2]
-_0815D896:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x2]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x4]
- adds r0, r6
- strh r0, [r5, 0x22]
- ldr r0, =sub_810E2C8
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815D870
-
- thumb_func_start sub_815D8D8
-sub_815D8D8: @ 815D8D8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r7, 0
- ldr r2, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- subs r0, 0x1
- strh r0, [r3, 0x8]
- movs r1, 0x14
- ldrsh r0, [r3, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _0815D95A
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0815D95A
- movs r2, 0x1A
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _0815D92C
- ldrh r0, [r3, 0x10]
- strh r0, [r3, 0x1A]
- negs r0, r0
- strh r0, [r3, 0x10]
- b _0815D92E
- .pool
-_0815D92C:
- strh r7, [r3, 0x1A]
-_0815D92E:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- mov r2, r8
- adds r1, r0, r2
- movs r2, 0x1C
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0815D94A
- ldrh r0, [r1, 0x12]
- strh r0, [r1, 0x1C]
- negs r0, r0
- strh r0, [r1, 0x12]
- b _0815D94E
-_0815D94A:
- movs r0, 0
- strh r0, [r1, 0x1C]
-_0815D94E:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- add r0, r8
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0xA]
-_0815D95A:
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- ldrh r6, [r4, 0x16]
- ldrh r7, [r4, 0x18]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r12, r2
- cmp r0, 0
- beq _0815D998
- ldr r3, =gSprites
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- lsrs r2, r6, 8
- ldrh r0, [r4, 0x1A]
- subs r0, r2
- strh r0, [r1, 0x24]
- adds r2, r3, 0
- b _0815D9AE
- .pool
-_0815D998:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- lsrs r1, r6, 8
- ldrh r4, [r4, 0x1A]
- adds r1, r4
- strh r1, [r0, 0x24]
-_0815D9AE:
- mov r1, r12
- adds r0, r1, r5
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0815D9E0
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r2, r7, 8
- ldrh r0, [r4, 0x1C]
- subs r0, r2
- b _0815D9F2
- .pool
-_0815D9E0:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r0, r7, 8
- ldrh r4, [r4, 0x1C]
- adds r0, r4
-_0815D9F2:
- strh r0, [r1, 0x26]
- mov r2, r12
- adds r0, r2, r5
- lsls r0, 3
- add r0, r8
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bgt _0815DA12
- adds r0, r5, 0
- bl DestroyTask
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_0815DA12:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815D8D8
-
- thumb_func_start sub_815DA20
-sub_815DA20: @ 815DA20
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r7, 0
- ldr r2, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- subs r0, 0x1
- strh r0, [r3, 0x8]
- movs r1, 0x14
- ldrsh r0, [r3, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _0815DAA6
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0815DAA6
- movs r2, 0x1A
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _0815DA78
- ldrh r0, [r3, 0x10]
- strh r0, [r3, 0x1A]
- negs r0, r0
- strh r0, [r3, 0x10]
- b _0815DA7A
- .pool
-_0815DA78:
- strh r7, [r3, 0x1A]
-_0815DA7A:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- mov r2, r8
- adds r1, r0, r2
- movs r2, 0x1C
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0815DA96
- ldrh r0, [r1, 0x12]
- strh r0, [r1, 0x1C]
- negs r0, r0
- strh r0, [r1, 0x12]
- b _0815DA9A
-_0815DA96:
- movs r0, 0
- strh r0, [r1, 0x1C]
-_0815DA9A:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- add r0, r8
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0xA]
-_0815DAA6:
- lsls r3, r6, 2
- adds r0, r3, r6
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- ldrh r2, [r4, 0xC]
- ldr r1, =0x00007fff
- adds r0, r1, 0
- ands r0, r2
- ldrh r2, [r4, 0x16]
- adds r0, r2
- lsls r5, r0, 16
- lsrs r0, r5, 16
- mov r9, r0
- ldrh r0, [r4, 0xE]
- ands r1, r0
- ldrh r2, [r4, 0x18]
- adds r1, r2
- lsls r1, 16
- lsrs r7, r1, 16
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r12, r3
- cmp r0, 0
- beq _0815DB00
- ldr r3, =gSprites
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- lsrs r2, r5, 24
- ldrh r0, [r4, 0x1A]
- subs r0, r2
- strh r0, [r1, 0x24]
- adds r2, r3, 0
- b _0815DB16
- .pool
-_0815DB00:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- lsrs r1, r5, 24
- ldrh r4, [r4, 0x1A]
- adds r1, r4
- strh r1, [r0, 0x24]
-_0815DB16:
- mov r1, r12
- adds r0, r1, r6
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0815DB48
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r2, r7, 8
- ldrh r0, [r4, 0x1C]
- subs r0, r2
- b _0815DB5A
- .pool
-_0815DB48:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r0, r7, 8
- ldrh r4, [r4, 0x1C]
- adds r0, r4
-_0815DB5A:
- strh r0, [r1, 0x26]
- mov r2, r12
- adds r0, r2, r6
- lsls r0, 3
- mov r1, r8
- adds r2, r0, r1
- mov r0, r9
- strh r0, [r2, 0x16]
- strh r7, [r2, 0x18]
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bgt _0815DB80
- movs r0, 0x1E
- strh r0, [r2, 0x8]
- movs r0, 0
- strh r0, [r2, 0x22]
- ldr r0, =sub_815D8D8
- str r0, [r2]
-_0815DB80:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815DA20
-
- thumb_func_start sub_815DB90
-sub_815DB90: @ 815DB90
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gTasks
- mov r8, r0
- lsls r7, r6, 2
- adds r0, r7, r6
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- ldr r1, =gBattlerSpriteIds
- ldr r2, =gBattleAnimAttacker
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x26]
- ldr r5, =gBattleAnimArgs
- ldrh r0, [r5]
- strh r0, [r4, 0x24]
- ldrh r0, [r5]
- strh r0, [r4, 0x8]
- ldrh r0, [r5, 0xC]
- strh r0, [r4, 0x22]
- movs r3, 0x6
- ldrsh r0, [r5, r3]
- cmp r0, 0
- beq _0815DBD4
- ldrh r0, [r4, 0x14]
- ldr r3, =0xffff8000
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r4, 0x14]
-_0815DBD4:
- ldrb r0, [r2]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815DC04
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0xC]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0xE]
- mov r3, r8
- adds r4, r7, 0
- b _0815DC74
- .pool
-_0815DC04:
- movs r7, 0x2
- ldrsh r0, [r5, r7]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0815DC20
- ldrh r1, [r5, 0x2]
- ldr r0, =0x00007fff
- ands r0, r1
- b _0815DC28
- .pool
-_0815DC20:
- ldrh r0, [r5, 0x2]
- ldr r2, =0xffff8000
- adds r1, r2, 0
- orrs r0, r1
-_0815DC28:
- strh r0, [r4, 0xC]
- ldr r0, =gBattleAnimArgs
- movs r3, 0x4
- ldrsh r1, [r0, r3]
- movs r2, 0x80
- lsls r2, 8
- ands r1, r2
- adds r5, r0, 0
- cmp r1, 0
- beq _0815DC60
- ldr r3, =gTasks
- lsls r4, r6, 2
- adds r1, r4, r6
- lsls r1, 3
- adds r1, r3
- ldrh r2, [r5, 0x4]
- ldr r0, =0x00007fff
- ands r0, r2
- b _0815DC72
- .pool
-_0815DC60:
- ldr r3, =gTasks
- lsls r4, r6, 2
- adds r1, r4, r6
- lsls r1, 3
- adds r1, r3
- ldrh r2, [r5, 0x4]
- ldr r7, =0xffff8000
- adds r0, r7, 0
- orrs r0, r2
-_0815DC72:
- strh r0, [r1, 0xE]
-_0815DC74:
- adds r0, r4, r6
- lsls r0, 3
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x18]
- strh r1, [r0, 0x16]
- ldrh r1, [r5, 0x8]
- strh r1, [r0, 0x10]
- ldrh r1, [r5, 0xA]
- strh r1, [r0, 0x12]
- ldr r1, =sub_815DA20
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815DB90
-
- thumb_func_start sub_815DCA4
-sub_815DCA4: @ 815DCA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- ldr r4, =gBattleAnimArgs
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815DCC4
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0815DCC4:
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r0, [r5, 0xA]
- strh r0, [r5, 0xC]
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0xE]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815DCE8
- ldr r0, =gBattleAnimAttacker
- b _0815DCEA
- .pool
-_0815DCE8:
- ldr r0, =gBattleAnimTarget
-_0815DCEA:
- ldrb r4, [r0]
- adds r0, r4, 0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x10]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x12]
- adds r0, r4, 0
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x14]
- ldr r0, =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r5, 0x26]
- ldr r2, =gUnknown_085CE74C
- adds r0, r5, 0
- bl sub_80A7CFC
- ldr r0, =sub_815DD48
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815DCA4
-
- thumb_func_start sub_815DD48
-sub_815DD48: @ 815DD48
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0815DD6C
- cmp r0, 0x1
- beq _0815DDCC
- b _0815DDDA
- .pool
-_0815DD6C:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _0815DD82
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_815DDE0
-_0815DD82:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x12
- bne _0815DD92
- adds r0, r5, 0
- movs r1, 0
- bl sub_815DDE0
-_0815DD92:
- adds r0, r4, 0
- bl sub_80A7D34
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0815DDDA
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _0815DDB4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815DDDA
-_0815DDB4:
- strh r1, [r4, 0xA]
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_085CE74C
- adds r0, r4, 0
- bl sub_80A7CFC
- b _0815DDDA
- .pool
-_0815DDCC:
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815DDDA
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0815DDDA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815DD48
-
- thumb_func_start sub_815DDE0
-sub_815DDE0: @ 815DDE0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r2, =gTasks
- adds r4, r0, r2
- cmp r1, 0
- bne _0815DE08
- movs r1, 0x12
- movs r3, 0xEC
- b _0815DE0C
- .pool
-_0815DE08:
- movs r1, 0x1E
- movs r3, 0x14
-_0815DE0C:
- mov r2, sp
- ldrh r0, [r4, 0x10]
- subs r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0x10]
- subs r0, r1
- subs r0, 0x4
- strh r0, [r2, 0x2]
- ldrh r0, [r4, 0x10]
- adds r0, r1
- strh r0, [r2, 0x4]
- ldrh r0, [r4, 0x10]
- adds r0, r1
- adds r0, 0x4
- strh r0, [r2, 0x6]
- add r2, sp, 0x8
- lsls r1, r3, 24
- asrs r1, 24
- ldrh r0, [r4, 0x12]
- adds r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0x12]
- adds r0, r1
- adds r0, 0x6
- strh r0, [r2, 0x2]
- movs r5, 0
- mov r8, r2
- ldr r7, =gSprites
-_0815DE44:
- lsls r0, r5, 1
- add r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- ands r0, r5
- lsls r0, 1
- add r0, r8
- movs r3, 0
- ldrsh r2, [r0, r3]
- ldrb r3, [r4, 0x14]
- subs r3, 0x5
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =gUnknown_085CE76C
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _0815DE98
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r7
- movs r0, 0
- strh r0, [r1, 0x2E]
- movs r0, 0x2
- cmp r5, 0x1
- bhi _0815DE86
- movs r2, 0x2
- negs r2, r2
- adds r0, r2, 0
-_0815DE86:
- strh r0, [r1, 0x30]
- ldr r0, =0x0000ffff
- strh r0, [r1, 0x32]
- strh r6, [r1, 0x34]
- movs r0, 0x2
- strh r0, [r1, 0x36]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
-_0815DE98:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _0815DE44
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815DDE0
-
- thumb_func_start sub_815DEBC
-sub_815DEBC: @ 815DEBC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x32]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _0815DF02
- ldr r3, =gTasks
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x34
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_0815DF02:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815DEBC
-
- thumb_func_start sub_815DF0C
-sub_815DF0C: @ 815DF0C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0xA]
- ldrb r0, [r1]
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x5]
- lsrs r0, 4
- lsls r0, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- adds r0, r1
- strh r0, [r4, 0xC]
- ldr r0, =sub_815DF64
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815DF0C
-
- thumb_func_start sub_815DF64
-sub_815DF64: @ 815DF64
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0815DFB4
- ldrh r0, [r4, 0xC]
- ldr r2, =gUnknown_085CE784
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r1, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x10
- movs r2, 0x8
- bl BlendPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- ble _0815DFA4
- movs r0, 0
- strh r0, [r4, 0x8]
-_0815DFA4:
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- b _0815DFC6
- .pool
-_0815DFB4:
- ldrh r0, [r4, 0xC]
- movs r1, 0x10
- movs r2, 0
- movs r3, 0
- bl BlendPalette
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0815DFC6:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815DF64
-
- thumb_func_start sub_815DFCC
-sub_815DFCC: @ 815DFCC
- push {lr}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xD0
- lsls r2, 1
- ldr r1, =gBattleAnimAttacker
- ldrb r3, [r1]
- ldr r1, =gBattleAnimArgs
- ldrb r1, [r1]
- str r1, [sp]
- movs r1, 0xA
- str r1, [sp, 0x4]
- movs r1, 0x2
- str r1, [sp, 0x8]
- movs r1, 0x1E
- str r1, [sp, 0xC]
- ldr r1, =gUnknown_08C2DC68
- str r1, [sp, 0x10]
- ldr r1, =gUnknown_08C2DDC4
- str r1, [sp, 0x14]
- ldr r1, =gUnknown_08C2DDA4
- str r1, [sp, 0x18]
- movs r1, 0
- bl sub_8117854
- add sp, 0x1C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815DFCC
-
- thumb_func_start sub_815E01C
-sub_815E01C: @ 815E01C
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, =gBattleAnimAttacker
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815E038
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_0815E038:
- ldrb r0, [r6]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r5, 0x22]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815E080
- movs r0, 0xA0
- lsls r0, 2
- strh r0, [r5, 0x2E]
- ldr r0, =0x0000fd80
- strh r0, [r5, 0x30]
- b _0815E0A8
- .pool
-_0815E080:
- cmp r0, 0x1
- bne _0815E09A
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0xA0
- lsls r0, 2
- strh r0, [r5, 0x2E]
- strh r0, [r5, 0x30]
- b _0815E0A8
-_0815E09A:
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0xA0
- lsls r0, 2
- strh r0, [r5, 0x2E]
-_0815E0A8:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815E0C8
- ldrh r0, [r5, 0x2E]
- negs r0, r0
- strh r0, [r5, 0x2E]
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_0815E0C8:
- ldr r0, =sub_815E0DC
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815E01C
-
- thumb_func_start sub_815E0DC
-sub_815E0DC: @ 815E0DC
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x3A]
- adds r0, r1
- strh r0, [r2, 0x3A]
- ldrh r1, [r2, 0x30]
- ldrh r3, [r2, 0x3C]
- adds r1, r3
- strh r1, [r2, 0x3C]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r2, 0x26]
- ldrh r0, [r2, 0x38]
- adds r0, 0x1
- strh r0, [r2, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xE
- bne _0815E110
- adds r0, r2, 0
- bl DestroyAnimSprite
-_0815E110:
- pop {r0}
- bx r0
- thumb_func_end sub_815E0DC
-
- thumb_func_start sub_815E114
-sub_815E114: @ 815E114
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r6, r1, r0
- bl IsContest
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0815E144
- movs r0, 0x8
- strh r0, [r6, 0x12]
- movs r0, 0x3
- strh r0, [r6, 0x14]
- movs r0, 0x1
- strh r0, [r6, 0x16]
- b _0815E14E
- .pool
-_0815E144:
- movs r0, 0xC
- strh r0, [r6, 0x12]
- movs r0, 0x3
- strh r0, [r6, 0x14]
- strh r1, [r6, 0x16]
-_0815E14E:
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815E188
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- ldrb r0, [r5]
- movs r1, 0
- bl sub_80A861C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0815E17C
- adds r0, 0x3
-_0815E17C:
- asrs r0, 2
- adds r0, r4, r0
- b _0815E1AC
- .pool
-_0815E188:
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- ldrb r0, [r5]
- movs r1, 0
- bl sub_80A861C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0815E1A8
- adds r0, 0x3
-_0815E1A8:
- asrs r0, 2
- subs r0, r4, r0
-_0815E1AC:
- strh r0, [r6, 0x1E]
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- ldrb r0, [r5]
- movs r1, 0
- bl sub_80A861C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0815E1D0
- adds r0, 0x3
-_0815E1D0:
- asrs r0, 2
- subs r0, r4, r0
- strh r0, [r6, 0x20]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x22]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x24]
- ldr r0, =sub_815E20C
- str r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815E114
-
- thumb_func_start sub_815E20C
-sub_815E20C: @ 815E20C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- cmp r1, 0
- beq _0815E238
- cmp r1, 0x1
- bne _0815E230
- b _0815E330
-_0815E230:
- b _0815E33E
- .pool
-_0815E238:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0815E33E
- strh r1, [r5, 0xA]
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- movs r3, 0x22
- ldrsh r2, [r5, r3]
- movs r4, 0x24
- ldrsh r3, [r5, r4]
- ldrb r4, [r5, 0x12]
- str r4, [sp]
- ldrb r4, [r5, 0xC]
- str r4, [sp, 0x4]
- add r4, sp, 0x10
- str r4, [sp, 0x8]
- adds r4, 0x2
- str r4, [sp, 0xC]
- bl sub_815E34C
- movs r6, 0
- mov r8, r4
- ldr r4, =gSprites
-_0815E272:
- add r0, sp, 0x10
- movs r2, 0
- ldrsh r1, [r0, r2]
- mov r3, r8
- movs r0, 0
- ldrsh r2, [r3, r0]
- ldr r0, =gUnknown_085CE7EC
- movs r3, 0x23
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _0815E306
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0815E2C6
- cmp r6, 0
- bne _0815E2B4
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- negs r0, r0
- strh r0, [r1, 0x26]
- strh r0, [r1, 0x24]
- b _0815E2EE
- .pool
-_0815E2B4:
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- strh r0, [r1, 0x26]
- ldrh r0, [r5, 0x14]
- strh r0, [r1, 0x24]
- b _0815E2EE
-_0815E2C6:
- cmp r6, 0
- bne _0815E2DC
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrh r0, [r5, 0x14]
- b _0815E2EC
-_0815E2DC:
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- strh r0, [r1, 0x24]
- ldrh r0, [r5, 0x14]
- negs r0, r0
-_0815E2EC:
- strh r0, [r1, 0x26]
-_0815E2EE:
- ldr r1, =gSprites
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x2E]
- strh r7, [r0, 0x30]
- movs r1, 0xA
- strh r1, [r0, 0x32]
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
-_0815E306:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bls _0815E272
- ldrh r2, [r5, 0xC]
- movs r3, 0xC
- ldrsh r1, [r5, r3]
- movs r4, 0x12
- ldrsh r0, [r5, r4]
- cmp r1, r0
- bne _0815E324
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
-_0815E324:
- adds r0, r2, 0x1
- strh r0, [r5, 0xC]
- b _0815E33E
- .pool
-_0815E330:
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0815E33E
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_0815E33E:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_815E20C
-
- thumb_func_start sub_815E34C
-sub_815E34C: @ 815E34C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r4, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- ldr r6, [sp, 0x30]
- mov r9, r6
- ldr r6, [sp, 0x34]
- mov r10, r6
- lsls r0, 16
- lsrs r0, 16
- mov r12, r0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- lsls r2, 16
- lsrs r2, 16
- adds r7, r2, 0
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp, 0x4]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r8, r5
- cmp r5, 0
- bne _0815E394
- mov r2, r9
- strh r0, [r2]
- mov r6, r10
- strh r1, [r6]
- b _0815E3F2
-_0815E394:
- cmp r5, r6
- bcc _0815E3A2
- mov r0, r9
- strh r2, [r0]
- mov r1, r10
- strh r3, [r1]
- b _0815E3F2
-_0815E3A2:
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- mov r2, r12
- lsls r1, r2, 16
- asrs r1, 16
- lsls r5, r1, 8
- lsls r0, r7, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 8
- adds r1, r6, 0
- bl __divsi3
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r5, r0
- ldr r2, [sp]
- lsls r1, r2, 16
- asrs r1, 16
- lsls r4, r1, 8
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 8
- adds r1, r6, 0
- bl __divsi3
- mov r6, r8
- muls r6, r0
- adds r0, r6, 0
- adds r4, r0
- asrs r5, 8
- mov r0, r9
- strh r5, [r0]
- asrs r4, 8
- mov r1, r10
- strh r4, [r1]
-_0815E3F2:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_815E34C
-
- thumb_func_start sub_815E404
-sub_815E404: @ 815E404
- 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, 0x24
- ble _0815E43A
- ldr r3, =gTasks
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_0815E43A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815E404
-
- thumb_func_start sub_815E444
-sub_815E444: @ 815E444
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x2E]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A70C0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815E444
-
- thumb_func_start sub_815E47C
-sub_815E47C: @ 815E47C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- ldr r1, =gTasks
- adds r7, r0, r1
- ldr r0, =gBattleAnimAttacker
- mov r10, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x1E]
- mov r1, r10
- ldrb r0, [r1]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x20]
- ldr r0, =gBattleAnimTarget
- mov r8, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x22]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0
- bl sub_80A861C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0815E4EE
- adds r0, 0x3
-_0815E4EE:
- asrs r0, 2
- adds r0, r4, r0
- strh r0, [r7, 0x24]
- ldr r4, =gUnknown_085CE84C
- movs r0, 0x1E
- ldrsh r5, [r7, r0]
- movs r1, 0x20
- ldrsh r6, [r7, r1]
- mov r1, r8
- ldrb r0, [r1]
- bl sub_80A82E4
- adds r3, r0, 0
- subs r3, 0x5
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x26]
- cmp r0, 0x40
- beq _0815E5B8
- ldr r4, =gSprites
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x10
- strh r1, [r0, 0x2E]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r7, 0x22]
- strh r1, [r0, 0x32]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r7, 0x24]
- strh r1, [r0, 0x36]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, =0x0000ffe0
- strh r1, [r0, 0x38]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl InitAnimArcTranslation
- mov r1, r10
- ldrb r0, [r1]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815E596
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_0815E596:
- ldr r0, =sub_815E5CC
- str r0, [r7]
- b _0815E5BE
- .pool
-_0815E5B8:
- mov r0, r9
- bl DestroyAnimVisualTask
-_0815E5BE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_815E47C
-
- thumb_func_start sub_815E5CC
-sub_815E5CC: @ 815E5CC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _0815E634
- cmp r1, 0x1
- bgt _0815E5F4
- cmp r1, 0
- beq _0815E5FE
- b _0815E6D2
- .pool
-_0815E5F4:
- cmp r1, 0x2
- beq _0815E658
- cmp r1, 0x3
- beq _0815E6CC
- b _0815E6D2
-_0815E5FE:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815E6D2
- strh r1, [r4, 0xA]
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl TranslateAnimArc
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _0815E6D2
- b _0815E6BE
- .pool
-_0815E634:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _0815E6D2
- movs r0, 0
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- b _0815E6BE
- .pool
-_0815E658:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815E6D2
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r2, [r4, 0xC]
- adds r2, 0x1
- strh r2, [r4, 0xC]
- ldr r5, =gSprites
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- movs r0, 0x1
- ands r2, r0
- adds r1, 0x3E
- lsls r2, 2
- ldrb r3, [r1]
- subs r0, 0x6
- ands r0, r3
- orrs r0, r2
- strb r0, [r1]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _0815E6D2
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
-_0815E6BE:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815E6D2
- .pool
-_0815E6CC:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0815E6D2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815E5CC
-
- thumb_func_start sub_815E6D8
-sub_815E6D8: @ 815E6D8
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r6, r0, 0
- cmp r1, 0
- bne _0815E6F4
- ldr r0, =gBattleAnimAttacker
- b _0815E6F6
- .pool
-_0815E6F4:
- ldr r0, =gBattleAnimTarget
-_0815E6F6:
- ldrb r5, [r0]
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r1, r6, 0
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x3A]
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- movs r1, 0x1
- cmp r0, 0
- bne _0815E724
- movs r3, 0x1
- negs r3, r3
- adds r1, r3, 0
-_0815E724:
- strh r1, [r4, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _0815E768
- ldrb r2, [r4, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x47
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x3]
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_80A861C
- subs r0, 0x8
- b _0815E772
- .pool
-_0815E768:
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_80A861C
- adds r0, 0x8
-_0815E772:
- strh r0, [r4, 0x20]
- ldr r0, =sub_815E784
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815E6D8
-
- thumb_func_start sub_815E784
-sub_815E784: @ 815E784
- push {lr}
- adds r2, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- cmp r1, 0x1
- beq _0815E7CC
- cmp r1, 0x1
- bgt _0815E79A
- cmp r1, 0
- beq _0815E7A4
- b _0815E83C
-_0815E79A:
- cmp r1, 0x2
- beq _0815E7DC
- cmp r1, 0x3
- beq _0815E802
- b _0815E83C
-_0815E7A4:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815E83C
- strh r1, [r2, 0x30]
- ldrh r0, [r2, 0x3C]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x32]
- adds r0, 0x1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _0815E83C
- b _0815E7FA
-_0815E7CC:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bne _0815E83C
- b _0815E7F6
-_0815E7DC:
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- lsls r1, 2
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _0815E83C
-_0815E7F6:
- movs r0, 0
- strh r0, [r2, 0x30]
-_0815E7FA:
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- b _0815E83C
-_0815E802:
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bne _0815E83C
- ldrh r0, [r2, 0x3A]
- subs r0, 0x1
- strh r0, [r2, 0x3A]
- lsls r0, 16
- cmp r0, 0
- beq _0815E836
- movs r0, 0
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- b _0815E83C
-_0815E836:
- adds r0, r2, 0
- bl DestroyAnimSprite
-_0815E83C:
- pop {r0}
- bx r0
- thumb_func_end sub_815E784
-
- thumb_func_start sub_815E840
-sub_815E840: @ 815E840
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, =gBattleAnimArgs
- movs r3, 0
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _0815E85C
- adds r0, r1, 0
- bl DestroyAnimVisualTask
- b _0815E884
- .pool
-_0815E85C:
- ldr r0, =gTasks
- lsls r4, r1, 2
- adds r4, r1
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r2, 0x2]
- strh r0, [r4, 0x8]
- ldrb r0, [r2]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x26]
- ldr r2, =gUnknown_085CE87C
- adds r0, r4, 0
- bl sub_80A7CFC
- ldr r0, =sub_815E898
- str r0, [r4]
-_0815E884:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815E840
-
- thumb_func_start sub_815E898
-sub_815E898: @ 815E898
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815E8F2
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0815E8E0
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x2
- b _0815E8F0
- .pool
-_0815E8E0:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000fffe
-_0815E8F0:
- strh r1, [r0, 0x24]
-_0815E8F2:
- adds r0, r4, 0
- bl sub_80A7D34
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0815E94E
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
- ldrh r0, [r4, 0x8]
- subs r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- cmp r0, 0
- beq _0815E948
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_085CE87C
- bl sub_80A7CFC
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- b _0815E94E
- .pool
-_0815E948:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_0815E94E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_815E898
-
- thumb_func_start sub_815E954
-sub_815E954: @ 815E954
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0815E970
- ldr r4, =gBattleAnimAttacker
- b _0815E972
- .pool
-_0815E970:
- ldr r4, =gBattleAnimTarget
-_0815E972:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_80A861C
- strh r0, [r5, 0x22]
- movs r1, 0x22
- ldrsh r0, [r5, r1]
- cmp r0, 0x7
- bgt _0815E996
- movs r0, 0x8
- strh r0, [r5, 0x22]
-_0815E996:
- movs r2, 0
- strh r2, [r5, 0x2E]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x30]
- strh r2, [r5, 0x32]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x34]
- ldr r0, =sub_815E9BC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815E954
-
- thumb_func_start sub_815E9BC
-sub_815E9BC: @ 815E9BC
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x30
- ldrsh r1, [r3, r2]
- cmp r0, r1
- blt _0815EA10
- movs r0, 0
- strh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x32]
- adds r1, 0x1
- movs r0, 0x1
- ands r1, r0
- strh r1, [r3, 0x32]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- lsls r1, 2
- ldrb r2, [r0]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- movs r2, 0x32
- ldrsh r0, [r3, r2]
- cmp r0, 0
- beq _0815EA10
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _0815EA10
- adds r0, r3, 0
- bl DestroyAnimSprite
-_0815EA10:
- pop {r0}
- bx r0
- thumb_func_end sub_815E9BC
-
- thumb_func_start sub_815EA14
-sub_815EA14: @ 815EA14
- push {lr}
- adds r3, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0815EA44
- ldrb r2, [r3, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x47
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x3]
- movs r0, 0x64
- strh r0, [r3, 0x20]
- movs r0, 0x1
- b _0815EA4A
- .pool
-_0815EA44:
- movs r0, 0x8C
- strh r0, [r3, 0x20]
- ldr r0, =0x0000ffff
-_0815EA4A:
- strh r0, [r3, 0x3C]
- movs r0, 0x38
- strh r0, [r3, 0x22]
- ldr r0, =sub_815EA60
- str r0, [r3, 0x1C]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815EA14
-
- thumb_func_start sub_815EA60
-sub_815EA60: @ 815EA60
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bls _0815EA6E
- b _0815EC40
-_0815EA6E:
- lsls r0, 2
- ldr r1, =_0815EA7C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815EA7C:
- .4byte _0815EAA0
- .4byte _0815EAD2
- .4byte _0815EAE4
- .4byte _0815EB24
- .4byte _0815EB36
- .4byte _0815EB74
- .4byte _0815EBD8
- .4byte _0815EBF8
- .4byte _0815EC1E
-_0815EAA0:
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- lsls r0, 1
- ldrh r1, [r4, 0x22]
- subs r1, r0
- strh r1, [r4, 0x22]
- ldrh r2, [r4, 0x30]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0815EAC2
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- ldrh r0, [r4, 0x20]
- subs r0, r1
- strh r0, [r4, 0x20]
-_0815EAC2:
- adds r0, r2, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- beq _0815EAD0
- b _0815EC40
-_0815EAD0:
- b _0815EC12
-_0815EAD2:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- beq _0815EAE2
- b _0815EC40
-_0815EAE2:
- b _0815EC12
-_0815EAE4:
- ldrh r2, [r4, 0x30]
- adds r2, 0x1
- strh r2, [r4, 0x30]
- movs r3, 0x3C
- ldrsh r1, [r4, r3]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r3, =gSineTable
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x3C]
- muls r0, r1
- strh r0, [r4, 0x24]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0xC
- beq _0815EB1C
- b _0815EC40
-_0815EB1C:
- b _0815EC12
- .pool
-_0815EB24:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- beq _0815EB34
- b _0815EC40
-_0815EB34:
- b _0815EC12
-_0815EB36:
- ldrh r2, [r4, 0x30]
- adds r2, 0x1
- strh r2, [r4, 0x30]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- ldrh r0, [r4, 0x22]
- subs r0, r1
- strh r0, [r4, 0x22]
- ldr r3, =gSineTable
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x3C]
- muls r0, r1
- strh r0, [r4, 0x24]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0xC
- bne _0815EC40
- b _0815EC16
- .pool
-_0815EB74:
- ldrh r2, [r4, 0x30]
- adds r2, 0x1
- strh r2, [r4, 0x30]
- movs r3, 0x3C
- ldrsh r1, [r4, r3]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r3, =gSineTable
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x3C]
- muls r0, r1
- strh r0, [r4, 0x24]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0xF
- bne _0815EBC0
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
-_0815EBC0:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x12
- bne _0815EC40
- b _0815EC12
- .pool
-_0815EBD8:
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4, 0x20]
- adds r1, r0
- strh r1, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _0815EC40
- b _0815EC12
-_0815EBF8:
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r0, 1
- ldrh r3, [r4, 0x20]
- adds r0, r3
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _0815EC40
-_0815EC12:
- movs r0, 0
- strh r0, [r4, 0x30]
-_0815EC16:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0815EC40
-_0815EC1E:
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- ldrh r0, [r4, 0x20]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _0815EC40
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815EC40:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815EA60
-
- thumb_func_start sub_815EC48
-sub_815EC48: @ 815EC48
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r6, r1, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x26]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815ECD0
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x1
- bne _0815ECB4
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r1, [r5]
- movs r0, 0x2
- eors r0, r1
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- ble _0815ECAC
- strh r7, [r6, 0x24]
- b _0815ECD4
- .pool
-_0815ECAC:
- ldr r0, =0x0000ffff
- b _0815ECD2
- .pool
-_0815ECB4:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815ECD0
- ldr r0, =0x0000ffff
- b _0815ECD2
- .pool
-_0815ECD0:
- movs r0, 0x1
-_0815ECD2:
- strh r0, [r6, 0x24]
-_0815ECD4:
- ldr r0, =sub_815ECE4
- str r0, [r6]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815EC48
-
- thumb_func_start sub_815ECE4
-sub_815ECE4: @ 815ECE4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r3, r0, r1
- movs r1, 0x8
- ldrsh r0, [r3, r1]
- cmp r0, 0x8
- bls _0815ECFE
- b _0815EE78
-_0815ECFE:
- lsls r0, 2
- ldr r1, =_0815ED10
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815ED10:
- .4byte _0815ED34
- .4byte _0815ED46
- .4byte _0815ED78
- .4byte _0815EDA8
- .4byte _0815EDCE
- .4byte _0815EDF8
- .4byte _0815EE08
- .4byte _0815EE28
- .4byte _0815EE60
-_0815ED34:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- beq _0815ED44
- b _0815EE78
-_0815ED44:
- b _0815EE50
-_0815ED46:
- ldr r2, =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- lsls r2, r0, 1
- adds r2, r0
- ldrh r0, [r1, 0x24]
- subs r0, r2
- strh r0, [r1, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- beq _0815ED72
- b _0815EE78
-_0815ED72:
- b _0815EE50
- .pool
-_0815ED78:
- ldr r2, =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x24
- ldrsh r2, [r3, r0]
- lsls r0, r2, 1
- adds r0, r2
- ldrh r2, [r1, 0x24]
- adds r0, r2
- strh r0, [r1, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _0815EE78
- b _0815EE50
- .pool
-_0815EDA8:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _0815EE78
- movs r0, 0
- strh r0, [r3, 0xA]
- ldrh r1, [r3, 0xC]
- movs r2, 0xC
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _0815EE54
- adds r0, r1, 0x1
- strh r0, [r3, 0xC]
- movs r0, 0x1
- strh r0, [r3, 0x8]
- b _0815EE78
-_0815EDCE:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x24]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0815EE78
- b _0815EE50
- .pool
-_0815EDF8:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _0815EE78
- b _0815EE50
-_0815EE08:
- ldr r2, =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x24
- ldrsh r2, [r3, r0]
- lsls r2, 2
- ldrh r0, [r1, 0x24]
- subs r0, r2
- b _0815EE40
- .pool
-_0815EE28:
- ldr r2, =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- lsls r0, 2
- ldrh r2, [r1, 0x24]
- adds r0, r2
-_0815EE40:
- strh r0, [r1, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _0815EE78
-_0815EE50:
- movs r0, 0
- strh r0, [r3, 0xA]
-_0815EE54:
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- b _0815EE78
- .pool
-_0815EE60:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x24]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_0815EE78:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815ECE4
-
- thumb_func_start sub_815EE84
-sub_815EE84: @ 815EE84
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0815EEA8
- adds r0, r4, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimAttacker
- b _0815EEAA
- .pool
-_0815EEA8:
- ldr r0, =gBattleAnimTarget
-_0815EEAA:
- ldrb r0, [r0]
- strh r0, [r4, 0x3C]
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815EECE
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r4, 0x3]
-_0815EECE:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A8328
- movs r2, 0x3
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r3
- orrs r0, r2
- strb r0, [r4, 0x5]
- ldrb r0, [r4, 0x1]
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x1]
- ldr r0, =sub_815EF08
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815EE84
-
- thumb_func_start sub_815EF08
-sub_815EF08: @ 815EF08
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _0815EF16
- b _0815F106
-_0815EF16:
- lsls r0, 2
- ldr r1, =_0815EF24
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815EF24:
- .4byte _0815EF38
- .4byte _0815F038
- .4byte _0815F0A0
- .4byte _0815F0B4
- .4byte _0815F100
-_0815EF38:
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- bhi _0815EF68
- lsls r0, 2
- ldr r1, =_0815EF50
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815EF50:
- .4byte _0815EF6C
- .4byte _0815EF88
- .4byte _0815EFAA
- .4byte _0815EFC6
- .4byte _0815EF6C
- .4byte _0815EFEC
-_0815EF68:
- movs r0, 0
- strh r0, [r4, 0x3A]
-_0815EF6C:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x5
- bl sub_80A861C
- subs r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- b _0815EFE0
-_0815EF88:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x5
- bl sub_80A861C
- subs r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_80A861C
- adds r0, 0x4
- b _0815EFE6
-_0815EFAA:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x4
- bl sub_80A861C
- adds r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- b _0815EFE0
-_0815EFC6:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x4
- bl sub_80A861C
- adds r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
-_0815EFE0:
- bl sub_80A861C
- subs r0, 0x4
-_0815EFE6:
- lsls r0, 16
- lsrs r1, r0, 16
- b _0815F00C
-_0815EFEC:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r1, r0, 24
-_0815F00C:
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0x4
- bne _0815F018
- movs r0, 0x18
- b _0815F022
-_0815F018:
- cmp r0, 0x5
- bne _0815F020
- movs r0, 0x6
- b _0815F022
-_0815F020:
- movs r0, 0xC
-_0815F022:
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- strh r1, [r4, 0x36]
- adds r0, r4, 0
- bl InitAnimLinearTranslation
- b _0815F0F8
-_0815F038:
- adds r0, r4, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _0815F106
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- beq _0815F070
- cmp r0, 0x5
- beq _0815F090
- ldrh r0, [r4, 0x24]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _0815F088
-_0815F070:
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x38]
-_0815F088:
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
- strh r0, [r4, 0x3A]
- b _0815F106
-_0815F090:
- movs r0, 0
- strh r0, [r4, 0x2E]
- movs r1, 0x10
- strh r1, [r4, 0x30]
- strh r0, [r4, 0x32]
- movs r0, 0x3
- strh r0, [r4, 0x38]
- b _0815F106
-_0815F0A0:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _0815F106
- movs r0, 0
- strh r0, [r4, 0x38]
- b _0815F106
-_0815F0B4:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0815F0C6
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- strh r0, [r4, 0x30]
- b _0815F0CC
-_0815F0C6:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
-_0815F0CC:
- ldrh r1, [r4, 0x32]
- lsls r1, 8
- ldrh r0, [r4, 0x30]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- bne _0815F106
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_0815F0F8:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _0815F106
-_0815F100:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815F106:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815EF08
-
- thumb_func_start sub_815F10C
-sub_815F10C: @ 815F10C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- subs r0, r1
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- muls r0, r1
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- adds r5, r0, 0
- strh r5, [r4, 0x24]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- subs r0, r1
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- muls r0, r1
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- adds r3, r0, 0
- strh r3, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0815F16A
- ldr r0, =gUnknown_085CE3A0
- ldrh r1, [r4, 0x20]
- adds r1, r5
- lsls r1, 16
- asrs r1, 16
- ldrh r2, [r4, 0x22]
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x5
- bl CreateSprite
-_0815F16A:
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _0815F17C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815F17C:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815F10C
-
- thumb_func_start sub_815F18C
-sub_815F18C: @ 815F18C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0815F1B8
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0815F1D0
-_0815F1B8:
- ldr r2, =gBattleAnimArgs
- ldrh r1, [r5, 0x20]
- ldrh r0, [r2]
- subs r0, r1, r0
- strh r0, [r5, 0x2E]
- ldrh r0, [r2, 0x4]
- subs r1, r0
- b _0815F1DE
- .pool
-_0815F1D0:
- ldr r2, =gBattleAnimArgs
- ldrh r1, [r5, 0x20]
- ldrh r0, [r2]
- adds r0, r1, r0
- strh r0, [r5, 0x2E]
- ldrh r0, [r2, 0x4]
- adds r1, r0
-_0815F1DE:
- strh r1, [r5, 0x32]
- adds r3, r2, 0
- ldrh r1, [r5, 0x22]
- ldrh r2, [r3, 0x2]
- adds r2, r1, r2
- strh r2, [r5, 0x30]
- ldrh r0, [r3, 0x6]
- adds r1, r0
- strh r1, [r5, 0x34]
- ldrh r0, [r3, 0x8]
- strh r0, [r5, 0x36]
- ldrh r0, [r5, 0x2E]
- strh r0, [r5, 0x20]
- strh r2, [r5, 0x22]
- ldr r0, =sub_815F10C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815F18C
-
- thumb_func_start AnimTask_MonToSubstitute
-AnimTask_MonToSubstitute: @ 815F20C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r5, r0, 24
- adds r2, r5, 0
- ldr r0, =gTasks
- mov r9, r0
- lsls r7, r6, 2
- adds r0, r7, r6
- lsls r0, 3
- mov r8, r0
- mov r4, r8
- add r4, r9
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815F254
- adds r0, r5, 0
- movs r1, 0
- bl sub_80A7270
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- b _0815F2A0
- .pool
-_0815F254:
- cmp r0, 0x1
- bne _0815F2AC
- ldrh r0, [r4, 0xA]
- adds r0, 0x60
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- subs r0, 0xD
- strh r0, [r4, 0xC]
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- movs r0, 0xC
- ldrsh r2, [r4, r0]
- adds r0, r5, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _0815F310
- movs r0, 0
- strh r0, [r4, 0xE]
- adds r0, r5, 0
- bl sub_80A7344
- ldr r1, =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_0815F2A0:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815F310
- .pool
-_0815F2AC:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl LoadBattleMonGfxAndAnimate
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0815F2EE
- ldr r3, =gSprites
- ldr r2, =gBattlerSpriteIds
- ldrb r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x10
- adds r0, r1
- ldr r1, =gUnknown_082FF6C0
- str r1, [r0]
- ldrb r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0
- bl StartSpriteAffineAnim
-_0815F2EE:
- mov r4, r9
- adds r3, r7, 0
- ldr r5, =sub_815F330
- movs r1, 0xF
- mov r2, r8
- adds r0, r4, r2
- adds r0, 0x26
- movs r2, 0
-_0815F2FE:
- strh r2, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _0815F2FE
- adds r0, r3, r6
- lsls r0, 3
- adds r0, r4
- str r5, [r0]
-_0815F310:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_MonToSubstitute
-
- thumb_func_start sub_815F330
-sub_815F330: @ 815F330
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _0815F394
- cmp r5, 0x1
- bgt _0815F360
- cmp r5, 0
- beq _0815F36A
- b _0815F482
- .pool
-_0815F360:
- cmp r5, 0x2
- beq _0815F400
- cmp r5, 0x3
- beq _0815F43C
- b _0815F482
-_0815F36A:
- ldr r0, =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldr r0, =0x0000ff38
- strh r0, [r1, 0x26]
- movs r0, 0xC8
- strh r0, [r1, 0x24]
- adds r1, 0x3E
- ldrb r2, [r1]
- subs r0, 0xCD
- ands r0, r2
- strb r0, [r1]
- strh r5, [r4, 0x1C]
- b _0815F42E
- .pool
-_0815F394:
- ldrh r1, [r4, 0x1C]
- adds r1, 0x70
- movs r5, 0
- strh r1, [r4, 0x1C]
- ldr r2, =gSprites
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- adds r2, r0, r2
- lsls r1, 16
- asrs r1, 24
- ldrh r3, [r2, 0x26]
- adds r1, r3
- strh r1, [r2, 0x26]
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- blt _0815F3C4
- strh r5, [r2, 0x24]
-_0815F3C4:
- movs r1, 0x26
- ldrsh r0, [r2, r1]
- cmp r0, 0
- ble _0815F3CE
- strh r5, [r2, 0x26]
-_0815F3CE:
- movs r3, 0x26
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _0815F482
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x7D
- bl PlaySE12WithPanning
- ldr r1, =0xfffff800
- adds r0, r1, 0
- ldrh r2, [r4, 0x1C]
- adds r0, r2
- strh r0, [r4, 0x1C]
- b _0815F42E
- .pool
-_0815F400:
- ldrh r0, [r4, 0x1C]
- subs r0, 0x70
- strh r0, [r4, 0x1C]
- lsls r0, 16
- cmp r0, 0
- bge _0815F410
- movs r0, 0
- strh r0, [r4, 0x1C]
-_0815F410:
- ldr r0, =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r4, 0x1C]
- lsls r2, 16
- asrs r2, 24
- ldrh r0, [r1, 0x26]
- subs r0, r2
- strh r0, [r1, 0x26]
- movs r3, 0x1C
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _0815F482
-_0815F42E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815F482
- .pool
-_0815F43C:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x70
- strh r0, [r4, 0x1C]
- ldr r2, =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- lsls r0, 16
- asrs r0, 24
- ldrh r2, [r1, 0x26]
- adds r0, r2
- strh r0, [r1, 0x26]
- lsls r0, 16
- cmp r0, 0
- ble _0815F460
- movs r0, 0
- strh r0, [r1, 0x26]
-_0815F460:
- movs r3, 0x26
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _0815F482
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x7D
- bl PlaySE12WithPanning
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_0815F482:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815F330
-
- thumb_func_start sub_815F48C
-sub_815F48C: @ 815F48C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815F4B8
- ldrb r0, [r4]
- bl sub_80A82E4
- subs r0, 0x2
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldr r4, =0x0000ff70
- b _0815F4C8
- .pool
-_0815F4B8:
- ldrb r0, [r4]
- bl sub_80A82E4
- adds r0, 0x2
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldr r4, =0x0000ffa0
-_0815F4C8:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- strh r4, [r5, 0x26]
- ldr r0, =sub_815F4F0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815F48C
-
- thumb_func_start sub_815F4F0
-sub_815F4F0: @ 815F4F0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _0815F4FE
- b _0815F61A
-_0815F4FE:
- lsls r0, 2
- ldr r1, =_0815F50C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815F50C:
- .4byte _0815F520
- .4byte _0815F544
- .4byte _0815F584
- .4byte _0815F5B4
- .4byte _0815F5E0
-_0815F520:
- ldrh r0, [r4, 0x26]
- adds r0, 0xA
- strh r0, [r4, 0x26]
- lsls r0, 16
- cmp r0, 0
- blt _0815F61A
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xCD
- bl PlaySE12WithPanning
- movs r0, 0
- strh r0, [r4, 0x26]
- b _0815F5D8
-_0815F544:
- ldrh r1, [r4, 0x30]
- adds r1, 0x4
- movs r5, 0
- strh r1, [r4, 0x30]
- ldr r2, =gSineTable
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- negs r0, r0
- strh r0, [r4, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _0815F61A
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xCD
- bl PlaySE12WithPanning
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x26]
- b _0815F5D8
- .pool
-_0815F584:
- ldrh r1, [r4, 0x30]
- adds r1, 0x6
- movs r3, 0
- strh r1, [r4, 0x30]
- ldr r2, =gSineTable
- movs r5, 0x30
- ldrsh r0, [r4, r5]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- negs r0, r0
- strh r0, [r4, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _0815F61A
- strh r3, [r4, 0x30]
- strh r3, [r4, 0x26]
- b _0815F5D8
- .pool
-_0815F5B4:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _0815F61A
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xC0
- bl PlaySE12WithPanning
- movs r0, 0
- strh r0, [r4, 0x30]
-_0815F5D8:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0815F61A
-_0815F5E0:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _0815F61A
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x32]
- adds r1, 0x1
- strh r1, [r4, 0x32]
- movs r0, 0x1
- ands r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- lsls r1, 2
- ldrb r2, [r3]
- subs r0, 0x6
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bne _0815F61A
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815F61A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815F4F0
-
- thumb_func_start sub_815F620
-sub_815F620: @ 815F620
- 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
- bl IsContest
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0
- bne _0815F66E
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r1, r0, 16
- mov r10, r1
- asrs r6, r0, 16
- cmp r6, 0
- blt _0815F66E
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r1, r0, 16
- mov r9, r1
- asrs r1, r0, 16
- cmp r1, 0
- bge _0815F67C
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
-_0815F66E:
- mov r0, r8
- bl DestroyAnimVisualTask
- b _0815F780
- .pool
-_0815F67C:
- ldr r4, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r5, r0, r4
- ldrh r0, [r5, 0x24]
- adds r0, 0x18
- strh r0, [r5, 0x24]
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r6, r0, r4
- ldrh r0, [r6, 0x24]
- subs r0, 0x18
- strh r0, [r6, 0x24]
- strh r7, [r5, 0x2E]
- strh r7, [r6, 0x2E]
- strh r7, [r5, 0x30]
- strh r7, [r6, 0x30]
- strh r7, [r5, 0x32]
- strh r7, [r6, 0x32]
- movs r0, 0x10
- strh r0, [r5, 0x34]
- ldr r0, =0x0000fff0
- strh r0, [r6, 0x34]
- strh r7, [r5, 0x36]
- movs r0, 0x80
- strh r0, [r6, 0x36]
- movs r0, 0x18
- strh r0, [r5, 0x38]
- strh r0, [r6, 0x38]
- mov r0, r8
- strh r0, [r5, 0x3A]
- strh r0, [r6, 0x3A]
- strh r7, [r5, 0x3C]
- strh r7, [r6, 0x3C]
- ldr r2, =gTasks
- mov r1, r8
- lsls r3, r1, 2
- adds r0, r3, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x2
- strh r1, [r0, 0x8]
- ldr r0, =gBattleSpritesDataPtr
- ldr r1, [r0]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- adds r7, r4, 0
- mov r12, r3
- cmp r0, 0
- bne _0815F720
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r2, r6, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- b _0815F736
- .pool
-_0815F720:
- adds r1, r5, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- adds r1, r6, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- orrs r0, r2
- strb r0, [r1]
-_0815F736:
- mov r1, r9
- lsls r0, r1, 16
- asrs r0, 16
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r4, r2, r7
- ldrb r1, [r4, 0x1]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r0, r1
- strb r0, [r4, 0x1]
- mov r1, r10
- lsls r0, r1, 16
- asrs r0, 16
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r4, r1, r7
- ldrb r0, [r4, 0x1]
- ands r3, r0
- strb r3, [r4, 0x1]
- adds r3, r7, 0
- adds r3, 0x1C
- adds r2, r3
- ldr r0, =sub_815F7C4
- str r0, [r2]
- adds r1, r3
- str r0, [r1]
- mov r0, r12
- add r0, r8
- lsls r0, 3
- ldr r1, =gTasks
- adds r0, r1
- ldr r1, =sub_815F79C
- str r1, [r0]
-_0815F780:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815F620
-
- thumb_func_start sub_815F79C
-sub_815F79C: @ 815F79C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0815F7BA
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0815F7BA:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815F79C
-
- thumb_func_start sub_815F7C4
-sub_815F7C4: @ 815F7C4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0815F80E
- movs r0, 0
- strh r0, [r4, 0x30]
- ldr r0, =gBattleSpritesDataPtr
- ldr r1, [r0]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0815F80E
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r1, r2, 29
- lsrs r1, 31
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_0815F80E:
- ldrh r0, [r4, 0x34]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- movs r5, 0
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x36]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0815F840
- cmp r0, 0x1
- beq _0815F858
- b _0815F896
- .pool
-_0815F840:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- bne _0815F896
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0815F896
-_0815F858:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- cmp r0, 0
- ble _0815F896
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x38]
- subs r0, 0x2
- strh r0, [r4, 0x38]
- lsls r0, 16
- cmp r0, 0
- bge _0815F896
- ldr r3, =gTasks
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl obj_delete_but_dont_free_vram
-_0815F896:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815F7C4
-
- thumb_func_start AnimTask_GetReturnPowerLevel
-AnimTask_GetReturnPowerLevel: @ 815F8A0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r3, =gBattleAnimArgs
- movs r2, 0
- strh r2, [r3, 0xE]
- ldr r1, =gAnimFriendship
- ldrb r0, [r1]
- ldrb r1, [r1]
- adds r0, r1, 0
- subs r0, 0x3D
- lsls r0, 24
- lsrs r0, 24
- adds r2, r1, 0
- cmp r0, 0x1E
- bhi _0815F8C4
- movs r0, 0x1
- strh r0, [r3, 0xE]
-_0815F8C4:
- adds r0, r2, 0
- subs r0, 0x5C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6C
- bhi _0815F8D4
- movs r0, 0x2
- strh r0, [r3, 0xE]
-_0815F8D4:
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, 0xC8
- bls _0815F8E0
- movs r0, 0x3
- strh r0, [r3, 0xE]
-_0815F8E0:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_GetReturnPowerLevel
-
- thumb_func_start sub_815F8F4
-sub_815F8F4: @ 815F8F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x4
- bls _0815F91A
- b _0815FE68
-_0815F91A:
- lsls r0, 2
- ldr r1, =_0815F92C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815F92C:
- .4byte _0815F940
- .4byte _0815F9F4
- .4byte _0815FBE8
- .4byte _0815FD08
- .4byte _0815FD8C
-_0815F940:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gTasks
- mov r2, r8
- lsls r4, r2, 2
- adds r0, r4, r2
- lsls r0, 3
- adds r6, r0, r1
- movs r3, 0x80
- lsls r3, 4
- adds r0, r3, 0
- ldrh r1, [r6, 0xA]
- adds r0, r1
- strh r0, [r6, 0xA]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- bne _0815F998
- ldr r2, =gSprites
- lsls r3, r7, 4
- adds r1, r3, r7
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r6, 0xA]
- lsls r0, 16
- asrs r0, 24
- ldrh r4, [r1, 0x24]
- adds r0, r4
- strh r0, [r1, 0x24]
- b _0815F9B2
- .pool
-_0815F998:
- ldr r3, =gSprites
- lsls r4, r7, 4
- adds r2, r4, r7
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r6, 0xA]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r2, r3, 0
- adds r3, r4, 0
-_0815F9B2:
- ldr r1, =gTasks
- mov r0, r9
- add r0, r8
- lsls r0, 3
- adds r4, r0, r1
- ldrb r0, [r4, 0xA]
- strh r0, [r4, 0xA]
- adds r1, r3, r7
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x24]
- ldrh r1, [r1, 0x20]
- adds r0, r1
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 14
- adds r0, r1
- movs r1, 0x98
- lsls r1, 17
- cmp r0, r1
- bhi _0815F9DE
- b _0815FE68
-_0815F9DE:
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0815FE68
- .pool
-_0815F9F4:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0815FA28
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- ldr r2, [r0, 0x8]
- mov r10, r2
- ldr r3, [r0, 0xC]
- mov r9, r3
- ldrh r6, [r0]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r7, 0
- b _0815FB4E
- .pool
-_0815FA28:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815FAC8
- ldr r7, =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0
- bl GetMonData
- mov r10, r0
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0x1
- bl GetMonData
- mov r9, r0
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldrb r2, [r4]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0815FA9C
- lsls r0, r2, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- b _0815FA9E
- .pool
-_0815FA9C:
- ldrh r6, [r1, 0x2]
-_0815FA9E:
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- ldr r2, =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- movs r7, 0
- movs r5, 0x88
- lsls r5, 1
- b _0815FB50
- .pool
-_0815FAC8:
- ldr r7, =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gEnemyParty
- adds r0, r5
- movs r1, 0
- bl GetMonData
- mov r10, r0
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0x1
- bl GetMonData
- mov r9, r0
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldrb r2, [r4]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0815FB2C
- lsls r0, r2, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- b _0815FB2E
- .pool
-_0815FB2C:
- ldrh r6, [r1, 0x2]
-_0815FB2E:
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- ldr r2, =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- movs r7, 0x1
-_0815FB4E:
- ldr r5, =0x0000ffe0
-_0815FB50:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- lsls r3, r5, 16
- asrs r3, 16
- str r0, [sp]
- str r4, [sp, 0x4]
- mov r4, r10
- str r4, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- str r0, [sp, 0x10]
- movs r0, 0
- str r0, [sp, 0x14]
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0
- bl sub_80A8394
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gBattleSpritesDataPtr
- ldr r1, [r0]
- ldrb r0, [r4]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- beq _0815FBBA
- ldr r1, =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- lsls r0, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- orrs r0, r1
- ldr r3, =0x00007fff
- movs r1, 0x10
- movs r2, 0x6
- bl BlendPalette
-_0815FBBA:
- ldr r0, =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- strh r5, [r1, 0x26]
- b _0815FD7E
- .pool
-_0815FBE8:
- ldr r1, =gTasks
- mov r0, r8
- lsls r4, r0, 2
- adds r0, r4, r0
- lsls r0, 3
- adds r6, r0, r1
- ldrh r0, [r6, 0x26]
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x80
- lsls r1, 4
- adds r0, r1, 0
- ldrh r2, [r6, 0xA]
- adds r0, r2
- strh r0, [r6, 0xA]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- bne _0815FC40
- ldr r3, =gSprites
- lsls r4, r5, 4
- adds r2, r4, r5
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r6, 0xA]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r2, r3, 0
- adds r3, r4, 0
- b _0815FC56
- .pool
-_0815FC40:
- ldr r2, =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r6, 0xA]
- lsls r0, 16
- asrs r0, 24
- ldrh r4, [r1, 0x24]
- adds r0, r4
- strh r0, [r1, 0x24]
-_0815FC56:
- ldr r1, =gTasks
- mov r0, r9
- add r0, r8
- lsls r0, 3
- adds r6, r0, r1
- ldrb r0, [r6, 0xA]
- strh r0, [r6, 0xA]
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x24]
- ldrh r1, [r1, 0x20]
- adds r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- movs r1, 0x24
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _0815FCD6
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815FCB4
- lsls r4, r5, 16
- asrs r4, 16
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bge _0815FCD6
- b _0815FCCA
- .pool
-_0815FCB4:
- lsls r4, r5, 16
- asrs r4, 16
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- ble _0815FCD6
-_0815FCCA:
- ldrh r0, [r6, 0x24]
- adds r0, 0x1
- strh r0, [r6, 0x24]
- ldr r1, =gBattleAnimArgs
- ldr r0, =0x0000ffff
- strh r0, [r1, 0xE]
-_0815FCD6:
- lsls r0, r5, 16
- movs r2, 0x80
- lsls r2, 14
- adds r0, r2
- movs r1, 0x98
- lsls r1, 17
- cmp r0, r1
- bhi _0815FCE8
- b _0815FE68
-_0815FCE8:
- ldr r0, =gTasks
- mov r1, r9
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0xA]
- b _0815FD7E
- .pool
-_0815FD08:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gTasks
- mov r3, r8
- lsls r4, r3, 2
- adds r0, r4, r3
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x26]
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r5, =gSprites
- adds r0, r5
- bl sub_80A8610
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- bne _0815FD60
- lsls r1, r7, 4
- adds r1, r7
- lsls r1, 2
- adds r1, r5
- ldrh r0, [r1, 0x20]
- negs r0, r0
- subs r0, 0x20
- strh r0, [r1, 0x24]
- b _0815FD74
- .pool
-_0815FD60:
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r0, r5
- ldrh r2, [r0, 0x20]
- movs r4, 0x88
- lsls r4, 1
- adds r1, r4, 0
- subs r1, r2
- strh r1, [r0, 0x24]
-_0815FD74:
- ldr r0, =gTasks
- mov r1, r9
- add r1, r8
- lsls r1, 3
- adds r1, r0
-_0815FD7E:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0815FE68
- .pool
-_0815FD8C:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gTasks
- mov r0, r8
- lsls r4, r0, 2
- adds r0, r4, r0
- lsls r0, 3
- adds r2, r0, r1
- movs r1, 0x80
- lsls r1, 4
- adds r0, r1, 0
- ldrh r3, [r2, 0xA]
- adds r0, r3
- strh r0, [r2, 0xA]
- ldr r0, =gBattleAnimAttacker
- mov r10, r0
- ldrb r0, [r0]
- str r2, [sp, 0x18]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- ldr r2, [sp, 0x18]
- cmp r0, 0
- bne _0815FE0C
- ldr r1, =gSprites
- lsls r5, r7, 4
- adds r0, r5, r7
- lsls r0, 2
- adds r6, r0, r1
- ldrh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r6, 0x24]
- adds r0, r1
- strh r0, [r6, 0x24]
- movs r2, 0x24
- ldrsh r4, [r6, r2]
- movs r3, 0x20
- ldrsh r0, [r6, r3]
- adds r4, r0
- mov r1, r10
- ldrb r0, [r1]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r3, r5, 0
- cmp r4, r0
- blt _0815FE44
- movs r2, 0
- strh r2, [r6, 0x24]
- b _0815FE44
- .pool
-_0815FE0C:
- ldr r1, =gSprites
- lsls r5, r7, 4
- adds r0, r5, r7
- lsls r0, 2
- adds r6, r0, r1
- ldrh r1, [r2, 0xA]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r6, 0x24]
- subs r0, r1
- strh r0, [r6, 0x24]
- movs r3, 0x24
- ldrsh r4, [r6, r3]
- movs r1, 0x20
- ldrsh r0, [r6, r1]
- adds r4, r0
- mov r2, r10
- ldrb r0, [r2]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r3, r5, 0
- cmp r4, r0
- bgt _0815FE44
- movs r4, 0
- strh r4, [r6, 0x24]
-_0815FE44:
- ldr r1, =gTasks
- mov r0, r9
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0xA]
- strh r1, [r0, 0xA]
- ldr r1, =gSprites
- adds r0, r3, r7
- lsls r0, 2
- adds r0, r1
- movs r1, 0x24
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0815FE68
- mov r0, r8
- bl DestroyAnimVisualTask
-_0815FE68:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815F8F4
-
- thumb_func_start sub_815FE80
-sub_815FE80: @ 815FE80
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0815FE92
- cmp r0, 0x1
- beq _0815FF3A
- b _0815FFBC
-_0815FE92:
- ldr r0, =gBattleAnimArgs
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _0815FF2C
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x7A
- bl PlaySE12WithPanning
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- strh r0, [r4, 0x22]
- ldr r0, =0x0000ffe0
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0815FFBC
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0815FFBC
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- ldr r2, =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- b _0815FFBC
- .pool
-_0815FF2C:
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _0815FFBC
-_0815FF3A:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x30]
- adds r0, r2, 0x5
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7F
- ble _0815FF6E
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- adds r0, r2, 0
- subs r0, 0x7A
- strh r0, [r4, 0x30]
-_0815FF6E:
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0815FF9C
- ldrh r2, [r4, 0x32]
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r4, 0x24]
- subs r0, r1
- strh r0, [r4, 0x24]
- adds r1, r2, 0
- b _0815FFA8
- .pool
-_0815FF9C:
- ldrh r1, [r4, 0x32]
- lsls r0, r1, 16
- asrs r0, 24
- ldrh r2, [r4, 0x24]
- adds r0, r2
- strh r0, [r4, 0x24]
-_0815FFA8:
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x2
- bne _0815FFBC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0815FFBC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815FE80
-
- thumb_func_start sub_815FFC4
-sub_815FFC4: @ 815FFC4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x26
- ldrsh r0, [r0, r2]
- adds r3, r1, 0
- cmp r0, 0x4
- bls _0815FFE0
- b _08160132
-_0815FFE0:
- lsls r0, 2
- ldr r1, =_0815FFF4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0815FFF4:
- .4byte _08160008
- .4byte _08160058
- .4byte _081600B4
- .4byte _081600CC
- .4byte _08160132
-_08160008:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0x6
- strh r0, [r1, 0x8]
- cmp r5, r2
- ble _0816003E
- negs r0, r0
- strh r0, [r1, 0x8]
-_0816003E:
- strh r5, [r1, 0xA]
- strh r2, [r1, 0xC]
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08160150
- .pool
-_08160058:
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r3
- ldrh r0, [r2, 0x8]
- ldrh r3, [r1, 0x24]
- adds r0, r3
- strh r0, [r1, 0x24]
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _081600A0
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x24
- ldrsh r1, [r1, r3]
- adds r0, r1
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- b _08160126
- .pool
-_081600A0:
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x24
- ldrsh r1, [r1, r3]
- adds r0, r1
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bgt _08160150
- b _0816012A
-_081600B4:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r3
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- negs r1, r1
- strh r1, [r0, 0x8]
- ldrh r1, [r0, 0x26]
- adds r1, 0x1
- strh r1, [r0, 0x26]
- b _08160150
-_081600CC:
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r3
- ldrh r0, [r2, 0x8]
- ldrh r3, [r1, 0x24]
- adds r0, r3
- strh r0, [r1, 0x24]
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bge _08160118
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x24
- ldrsh r1, [r1, r3]
- adds r0, r1
- movs r3, 0xA
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bgt _08160150
- b _0816012A
- .pool
-_08160118:
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x24
- ldrsh r1, [r1, r3]
- adds r0, r1
- movs r3, 0xA
- ldrsh r1, [r2, r3]
-_08160126:
- cmp r0, r1
- blt _08160150
-_0816012A:
- ldrh r0, [r2, 0x26]
- adds r0, 0x1
- strh r0, [r2, 0x26]
- b _08160150
-_08160132:
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x24]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08160150:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815FFC4
-
- thumb_func_start sub_8160164
-sub_8160164: @ 8160164
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r4, r1, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0xE]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _08160198
- movs r1, 0x1
-_08160198:
- strh r1, [r4, 0x10]
- ldr r2, =gSprites
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x14]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x20]
- strh r0, [r4, 0x12]
- strh r5, [r4, 0x1A]
- strh r5, [r4, 0x1E]
- movs r0, 0x1
- strh r0, [r4, 0x1C]
- strh r5, [r4, 0x20]
- ldr r0, =sub_81601DC
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8160164
-
- thumb_func_start sub_81601DC
-sub_81601DC: @ 81601DC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08160284
- cmp r0, 0x1
- bgt _08160204
- cmp r0, 0
- beq _0816020A
- b _081602DA
- .pool
-_08160204:
- cmp r0, 0x2
- beq _081602D4
- b _081602DA
-_0816020A:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x8
- movs r2, 0xFF
- ands r0, r2
- strh r0, [r4, 0x1E]
- ldr r5, =gSprites
- movs r6, 0xE
- ldrsh r0, [r4, r6]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldr r3, =gSineTable
- movs r6, 0x1E
- ldrsh r0, [r4, r6]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
- strh r0, [r1, 0x24]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x2
- ands r0, r2
- strh r0, [r4, 0x1A]
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- movs r6, 0x1A
- ldrsh r0, [r4, r6]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x10]
- muls r0, r1
- ldrh r1, [r4, 0x12]
- adds r0, r1
- strh r0, [r2, 0x20]
- movs r6, 0x1A
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bne _081602DA
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r4, 0x12]
- strh r1, [r0, 0x20]
- b _081602C4
- .pool
-_08160284:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x1E]
- ldr r3, =gSprites
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldr r2, =gSineTable
- movs r5, 0x1E
- ldrsh r0, [r4, r5]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
- strh r0, [r1, 0x24]
- movs r6, 0x1E
- ldrsh r2, [r4, r6]
- cmp r2, 0
- bne _081602DA
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- strh r2, [r1, 0x24]
-_081602C4:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _081602DA
- .pool
-_081602D4:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_081602DA:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81601DC
-
- thumb_func_start sub_81602E0
-sub_81602E0: @ 81602E0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- ldrh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x14
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x14
- bl Sin
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08160326
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08160326:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81602E0
-
- thumb_func_start sub_8160338
-sub_8160338: @ 8160338
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0816037C
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, =0x0000fff5
- strh r0, [r4, 0x2E]
- movs r0, 0xC0
- strh r0, [r4, 0x30]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _08160396
- .pool
-_0816037C:
- movs r0, 0xB
- strh r0, [r4, 0x2E]
- movs r0, 0xC0
- strh r0, [r4, 0x30]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
-_08160396:
- ldr r0, =sub_81602E0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8160338
-
- thumb_func_start sub_81603A8
-sub_81603A8: @ 81603A8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_80A861C
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _081603D2
- movs r0, 0x10
- strh r0, [r5, 0x22]
-_081603D2:
- movs r0, 0
- strh r0, [r5, 0x3A]
- movs r1, 0x10
- strh r1, [r5, 0x3C]
- ldr r0, =sub_81603F4
- str r0, [r5, 0x1C]
- lsls r1, 8
- movs r0, 0x52
- bl SetGpuReg
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81603A8
-
- thumb_func_start sub_81603F4
-sub_81603F4: @ 81603F4
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _0816046C
- cmp r1, 0x1
- bgt _0816040A
- cmp r1, 0
- beq _08160414
- b _081604E8
-_0816040A:
- cmp r1, 0x2
- beq _08160482
- cmp r1, 0x3
- beq _081604E2
- b _081604E8
-_08160414:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _081604E8
- strh r1, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0816043E
- ldrh r2, [r4, 0x3A]
- movs r3, 0x3A
- ldrsh r0, [r4, r3]
- cmp r0, 0xF
- bgt _0816044C
- adds r0, r2, 0x1
- strh r0, [r4, 0x3A]
- b _0816044C
-_0816043E:
- ldrh r2, [r4, 0x3C]
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _0816044C
- subs r0, r2, 0x1
- strh r0, [r4, 0x3C]
-_0816044C:
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081604E8
- b _081604DA
-_0816046C:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _081604E8
- strh r1, [r4, 0x2E]
- strh r1, [r4, 0x30]
- b _081604DA
-_08160482:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _081604E8
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081604AE
- ldrh r2, [r4, 0x3A]
- movs r3, 0x3A
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _081604BC
- subs r0, r2, 0x1
- strh r0, [r4, 0x3A]
- b _081604BC
-_081604AE:
- ldrh r2, [r4, 0x3C]
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- cmp r0, 0xF
- bgt _081604BC
- adds r0, r2, 0x1
- strh r0, [r4, 0x3C]
-_081604BC:
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _081604E8
-_081604DA:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- b _081604E8
-_081604E2:
- adds r0, r4, 0
- bl move_anim_8074EE0
-_081604E8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81603F4
-
- thumb_func_start AnimTask_GetWeather
-AnimTask_GetWeather: @ 81604F0
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, =gBattleAnimArgs
- movs r0, 0
- strh r0, [r2, 0xE]
- ldr r0, =gWeatherMoveAnim
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _08160514
- movs r0, 0x1
- b _08160536
- .pool
-_08160514:
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08160520
- movs r0, 0x2
- b _08160536
-_08160520:
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _0816052C
- movs r0, 0x3
- b _08160536
-_0816052C:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08160538
- movs r0, 0x4
-_08160536:
- strh r0, [r2, 0xE]
-_08160538:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- thumb_func_end AnimTask_GetWeather
-
- thumb_func_start sub_8160544
-sub_8160544: @ 8160544
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r0, =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x26]
- ldr r2, =gUnknown_085CE9C8
- adds r0, r4, 0
- bl sub_80A7CFC
- ldr r0, =sub_816058C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8160544
-
- thumb_func_start sub_816058C
-sub_816058C: @ 816058C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r2, =gTasks
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- adds r1, r0, 0x1
- movs r5, 0
- strh r1, [r3, 0x8]
- subs r0, 0x10
- lsls r0, 16
- lsrs r0, 16
- adds r6, r2, 0
- cmp r0, 0x16
- bhi _081605F0
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _08160600
- strh r5, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- movs r5, 0x1
- ands r0, r5
- cmp r0, 0
- bne _081605F0
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000ffff
- strh r1, [r0, 0x24]
- b _08160600
- .pool
-_081605F0:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
-_08160600:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r6
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _08160618
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08160618:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_816058C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s
deleted file mode 100644
index 44a5d624b..000000000
--- a/asm/battle_anim_8170478.s
+++ /dev/null
@@ -1,5832 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8170478
-sub_8170478: @ 8170478
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- ldr r0, =gBattleAnimAttacker
- ldrb r4, [r0]
- ldr r0, =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_WIN0V
- strh r1, [r0]
- ldr r1, =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, =gHealthboxSpriteIds
- adds r4, r0
- ldrb r0, [r4]
- ldr r1, =gSprites
- mov r9, r1
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- add r4, r9
- ldrb r7, [r4, 0x6]
- ldrh r6, [r4, 0x38]
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- ldr r0, =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- mov r10, r0
- mov r2, r10
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldrb r1, [r4, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x4
- mov r8, r1
- mov r2, r8
- orrs r0, r2
- strb r0, [r4, 0x5]
- lsls r5, r7, 4
- adds r5, r7
- lsls r5, 2
- add r5, r9
- ldrb r1, [r5, 0x5]
- adds r0, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- add r1, r9
- ldrb r2, [r1, 0x5]
- adds r0, r3, 0
- ands r0, r2
- mov r2, r8
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldr r0, [sp, 0x14]
- lsls r6, r0, 4
- adds r6, r0
- lsls r6, 2
- mov r1, r9
- adds r7, r6, r1
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0x44
- str r3, [sp, 0x18]
- bl memcpy
- mov r2, r10
- lsls r4, r2, 4
- add r4, r10
- lsls r4, 2
- adds r0, r4, 0
- add r0, r9
- mov r8, r0
- adds r1, r5, 0
- movs r2, 0x44
- bl memcpy
- ldrb r1, [r7, 0x1]
- ldr r3, [sp, 0x18]
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r7, 0x1]
- mov r2, r8
- ldrb r0, [r2, 0x1]
- ands r3, r0
- orrs r3, r1
- strb r3, [r2, 0x1]
- movs r0, 0x1C
- add r9, r0
- add r6, r9
- ldr r1, =SpriteCallbackDummy
- str r1, [r6]
- add r4, r9
- str r1, [r4]
- mov r0, sp
- bl sub_80A6B30
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08C2EA9C
- bl sub_80A6D48
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08C2EA50
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80A6CC0
- ldr r0, =gUnknown_08C2DDA4
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r7, 0x20]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r1]
- ldr r1, =gBattle_BG1_Y
- ldrh r0, [r7, 0x22]
- negs r0, r0
- subs r0, 0x20
- strh r0, [r1]
- ldr r1, =gTasks
- ldr r2, [sp, 0x10]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0xA0
- lsls r1, 2
- strh r1, [r0, 0xA]
- mov r1, sp
- ldrh r1, [r1, 0x14]
- strh r1, [r0, 0x8]
- mov r2, r10
- strh r2, [r0, 0xC]
- ldr r1, =sub_8170660
- str r1, [r0]
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170478
-
- thumb_func_start sub_8170660
-sub_8170660: @ 8170660
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r5, r0, r1
- ldrh r1, [r5, 0xA]
- ldrh r0, [r5, 0x22]
- adds r1, r0
- movs r3, 0
- strh r1, [r5, 0x22]
- ldr r2, =gBattle_BG1_Y
- lsls r0, r1, 16
- lsrs r0, 24
- ldrh r4, [r2]
- adds r0, r4
- strh r0, [r2]
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r5, 0x22]
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _081706F0
- cmp r0, 0x1
- bgt _081706B4
- cmp r0, 0
- beq _081706BA
- b _08170814
- .pool
-_081706B4:
- cmp r0, 0x2
- beq _08170708
- b _08170814
-_081706BA:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bgt _081706CA
- b _08170814
-_081706CA:
- strh r3, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- adds r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x20
- ldrsh r0, [r5, r2]
- cmp r0, 0x8
- beq _081706EE
- b _08170814
-_081706EE:
- b _08170700
-_081706F0:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- beq _08170700
- b _08170814
-_08170700:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
- b _08170814
-_08170708:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08170814
- strh r3, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- subs r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x20
- ldrsh r4, [r5, r0]
- cmp r4, 0
- bne _08170814
- movs r0, 0
- bl sub_80A477C
- ldr r0, =gBattle_WIN0H
- strh r4, [r0]
- ldr r0, =gBattle_WIN0V
- strh r4, [r0]
- ldr r4, =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0817076C
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_0817076C:
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r4, 0x8
- ldrsh r1, [r5, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r6, =gSprites
- adds r0, r6
- bl DestroySprite
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetAnimBgAttribute
- ldr r0, =gHealthboxSpriteIds
- add r0, r8
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x6]
- mov r8, r2
- ldrh r4, [r1, 0x38]
- lsls r4, 24
- lsrs r4, 24
- ldrb r3, [r1, 0x5]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- movs r5, 0x4
- orrs r0, r5
- strb r0, [r1, 0x5]
- mov r0, r8
- lsls r1, r0, 4
- add r1, r8
- lsls r1, 2
- adds r1, r6
- ldrb r3, [r1, 0x5]
- adds r0, r2, 0
- ands r0, r3
- orrs r0, r5
- strb r0, [r1, 0x5]
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0, 0x5]
- ands r2, r1
- orrs r2, r5
- strb r2, [r0, 0x5]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_08170814:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170660
-
- thumb_func_start sub_8170834
-sub_8170834: @ 8170834
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r9, r0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, =gHealthboxSpriteIds
- adds r2, r0
- ldrb r0, [r2]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r0, =gSprites
- adds r5, r0
- ldrb r1, [r5, 0x6]
- mov r10, r1
- ldrh r4, [r5, 0x38]
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =0x0000d709
- bl AllocSpritePalette
- mov r2, r9
- strb r0, [r2]
- ldr r0, =0x0000d70a
- bl AllocSpritePalette
- strb r0, [r7]
- ldrb r0, [r5, 0x5]
- lsrs r0, 4
- lsls r0, 4
- movs r1, 0x80
- lsls r1, 1
- adds r3, r1, 0
- orrs r0, r3
- lsls r6, r4, 4
- adds r6, r4
- lsls r6, 2
- ldr r2, =gSprites
- adds r6, r2
- ldrb r4, [r6, 0x5]
- lsrs r4, 4
- lsls r4, 4
- orrs r4, r3
- lsls r0, 1
- ldr r1, =gPlttBufferUnfaded
- mov r8, r1
- add r0, r8
- mov r2, r9
- ldrb r1, [r2]
- lsls r1, 4
- adds r1, r3, r1
- movs r2, 0x20
- str r3, [sp]
- bl LoadPalette
- lsls r4, 1
- add r4, r8
- ldrb r0, [r7]
- lsls r0, 4
- ldr r3, [sp]
- adds r3, r0
- adds r0, r4, 0
- adds r1, r3, 0
- movs r2, 0x20
- bl LoadPalette
- mov r0, r9
- ldrb r1, [r0]
- lsls r1, 4
- ldrb r2, [r5, 0x5]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- mov r2, r10
- lsls r1, r2, 4
- add r1, r10
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- mov r0, r9
- ldrb r2, [r0]
- lsls r2, 4
- ldrb r4, [r1, 0x5]
- adds r0, r3, 0
- ands r0, r4
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldrb r0, [r7]
- lsls r0, 4
- ldrb r1, [r6, 0x5]
- ands r3, r1
- orrs r3, r0
- strb r3, [r6, 0x5]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170834
-
- thumb_func_start sub_8170920
-sub_8170920: @ 8170920
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, sp
- adds r1, 0x1
- ldr r0, =gBattleAnimAttacker
- ldrb r2, [r0]
- mov r0, sp
- bl sub_8170834
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170920
-
- thumb_func_start sub_817094C
-sub_817094C: @ 817094C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gHealthboxSpriteIds
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, =gSprites
- mov r8, r1
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- add r5, r8
- ldrb r0, [r5, 0x6]
- mov r9, r0
- ldrh r6, [r5, 0x38]
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =0x0000d709
- bl FreeSpritePaletteByTag
- ldr r0, =0x0000d70a
- bl FreeSpritePaletteByTag
- ldr r0, =0x0000d6ff
- bl IndexOfSpritePaletteTag
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =0x0000d704
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsls r4, 4
- ldrb r2, [r5, 0x5]
- movs r3, 0xF
- adds r1, r3, 0
- ands r1, r2
- orrs r1, r4
- strb r1, [r5, 0x5]
- mov r1, r9
- lsls r2, r1, 4
- add r2, r9
- lsls r2, 2
- add r2, r8
- ldrb r5, [r2, 0x5]
- adds r1, r3, 0
- ands r1, r5
- orrs r1, r4
- strb r1, [r2, 0x5]
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- add r1, r8
- lsrs r0, 20
- ldrb r2, [r1, 0x5]
- ands r3, r2
- orrs r3, r0
- strb r3, [r1, 0x5]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817094C
-
- thumb_func_start sub_81709EC
-sub_81709EC: @ 81709EC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_817094C
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81709EC
-
- thumb_func_start sub_8170A0C
-sub_8170A0C: @ 8170A0C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r2]
- strh r0, [r1, 0x1C]
- ldrh r0, [r2, 0x2]
- strh r0, [r1, 0x1E]
- ldr r0, =sub_8170A38
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_8170A0C
-
- thumb_func_start sub_8170A38
-sub_8170A38: @ 8170A38
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r6, 0
- adds r1, r0, 0x1
- strh r1, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _08170AF8
- strh r6, [r4, 0x8]
- ldr r0, =0x0000d709
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r2, r0, 24
- movs r3, 0x1C
- ldrsh r0, [r4, r3]
- movs r1, 0x2
- cmp r0, 0
- bne _08170A76
- movs r1, 0x6
-_08170A76:
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _08170A8C
- cmp r0, 0x1
- beq _08170AC8
- b _08170AF8
- .pool
-_08170A8C:
- ldrh r0, [r4, 0xC]
- adds r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _08170A9E
- movs r0, 0x10
- strh r0, [r4, 0xC]
-_08170A9E:
- lsls r0, r2, 4
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2
- orrs r0, r1
- ldrb r2, [r4, 0xC]
- ldr r3, =0x00007f74
- movs r1, 0x1
- bl BlendPalette
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x10
- bne _08170AF8
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _08170AF8
- .pool
-_08170AC8:
- ldrh r0, [r4, 0xC]
- subs r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- cmp r0, 0
- bge _08170AD6
- strh r6, [r4, 0xC]
-_08170AD6:
- lsls r0, r2, 4
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2
- orrs r0, r1
- ldrb r2, [r4, 0xC]
- ldr r3, =0x00007f74
- movs r1, 0x1
- bl BlendPalette
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _08170AF8
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08170AF8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170A38
-
- thumb_func_start sub_8170B04
-sub_8170B04: @ 8170B04
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r5, [r0]
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08170B52
- cmp r0, 0x1
- bgt _08170B3C
- cmp r0, 0
- beq _08170B42
- b _08170BA4
- .pool
-_08170B3C:
- cmp r0, 0x2
- beq _08170B84
- b _08170BA4
-_08170B42:
- adds r0, r5, 0
- movs r1, 0
- bl sub_80A7270
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x1C]
- b _08170B76
-_08170B52:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x30
- strh r0, [r4, 0x1C]
- movs r0, 0x1C
- ldrsh r2, [r4, r0]
- adds r0, r5, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- adds r0, r5, 0
- bl sub_80A7E6C
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- ldr r0, =0x000002cf
- cmp r1, r0
- ble _08170BA4
-_08170B76:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08170BA4
- .pool
-_08170B84:
- adds r0, r5, 0
- bl sub_80A7344
- ldr r1, =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_08170BA4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170B04
-
- thumb_func_start sub_8170BB0
-sub_8170BB0: @ 8170BB0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gBattlerSpriteIds
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- adds r1, r0, r1
- ldrb r1, [r1]
- mov r9, r1
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08170BF8
- ldr r1, =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- b _08170C08
- .pool
-_08170BF8:
- ldr r1, =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
-_08170C08:
- adds r0, r1
- movs r1, 0x26
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r2, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r6, r0, r2
- movs r0, 0x8
- ldrsh r7, [r6, r0]
- cmp r7, 0
- beq _08170C44
- cmp r7, 0x1
- beq _08170CC4
- b _08170CEE
- .pool
-_08170C44:
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- adds r1, r0, 0
- lsls r1, 24
- ldr r2, =gSprites
- mov r3, r9
- lsls r0, r3, 4
- add r0, r9
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x5]
- lsls r2, 28
- lsrs r2, 30
- adds r0, 0x43
- ldrb r3, [r0]
- movs r0, 0x80
- lsls r0, 22
- adds r1, r0
- lsrs r1, 24
- mov r0, r8
- str r0, [sp]
- adds r0, r4, 0
- bl LaunchBallStarsTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x1C]
- str r7, [sp]
- str r7, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_80A75AC
- adds r2, r0, 0
- ldrb r1, [r5]
- movs r0, 0
- mov r3, r8
- bl LaunchBallFadeMonTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x1E]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- b _08170CEE
- .pool
-_08170CC4:
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- bne _08170CEE
- movs r3, 0x1E
- ldrsh r0, [r6, r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- bne _08170CEE
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08170CEE:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8170BB0
-
- thumb_func_start sub_8170CFC
-sub_8170CFC: @ 8170CFC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r0, 24
- bl LoadBallGfx
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170CFC
-
- thumb_func_start sub_8170D24
-sub_8170D24: @ 8170D24
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r0, 24
- bl FreeBallGfx
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170D24
-
- thumb_func_start AnimTask_IsBallBlockedByTrainer
-AnimTask_IsBallBlockedByTrainer: @ 8170D4C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x5
- bne _08170D70
- ldr r1, =gBattleAnimArgs
- ldr r0, =0x0000ffff
- b _08170D74
- .pool
-_08170D70:
- ldr r1, =gBattleAnimArgs
- movs r0, 0
-_08170D74:
- strh r0, [r1, 0xE]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_IsBallBlockedByTrainer
-
- thumb_func_start ItemIdToBallId
-ItemIdToBallId: @ 8170D84
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- subs r0, 0x1
- cmp r0, 0xB
- bhi _08170DFC
- lsls r0, 2
- ldr r1, =_08170DA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08170DA0:
- .4byte _08170DD0
- .4byte _08170DD4
- .4byte _08170DD8
- .4byte _08170DFC
- .4byte _08170DDC
- .4byte _08170DE0
- .4byte _08170DE4
- .4byte _08170DE8
- .4byte _08170DEC
- .4byte _08170DF0
- .4byte _08170DF4
- .4byte _08170DF8
-_08170DD0:
- movs r0, 0x4
- b _08170DFE
-_08170DD4:
- movs r0, 0x3
- b _08170DFE
-_08170DD8:
- movs r0, 0x1
- b _08170DFE
-_08170DDC:
- movs r0, 0x2
- b _08170DFE
-_08170DE0:
- movs r0, 0x5
- b _08170DFE
-_08170DE4:
- movs r0, 0x6
- b _08170DFE
-_08170DE8:
- movs r0, 0x7
- b _08170DFE
-_08170DEC:
- movs r0, 0x8
- b _08170DFE
-_08170DF0:
- movs r0, 0x9
- b _08170DFE
-_08170DF4:
- movs r0, 0xA
- b _08170DFE
-_08170DF8:
- movs r0, 0xB
- b _08170DFE
-_08170DFC:
- movs r0, 0
-_08170DFE:
- pop {r1}
- bx r1
- thumb_func_end ItemIdToBallId
-
- thumb_func_start sub_8170E04
-sub_8170E04: @ 8170E04
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- mov r10, r0
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r1, =gBallSpriteTemplates
- adds r0, r1
- movs r1, 0x20
- movs r2, 0x50
- movs r3, 0x1D
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gSprites
- mov r9, r1
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r6, r4, r1
- movs r0, 0x22
- strh r0, [r6, 0x2E]
- ldr r2, =gBattleAnimTarget
- mov r8, r2
- ldrb r0, [r2]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x30]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x10
- strh r0, [r6, 0x32]
- mov r0, r9
- adds r0, 0x1C
- adds r4, r0
- ldr r0, =sub_8171104
- str r0, [r4]
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r3, [r0, 0x8]
- ldr r1, =gBattlerSpriteIds
- mov r2, r8
- ldrb r0, [r2]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- adds r0, 0x3E
- ldrb r1, [r0]
- lsls r1, 29
- lsrs r1, 31
- lsls r1, 1
- ldrb r2, [r3, 0x9]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x9]
- ldr r1, =gTasks
- mov r2, r10
- lsls r0, r2, 2
- add r0, r10
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- ldr r1, =sub_8170EF0
- str r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170E04
-
- thumb_func_start sub_8170EF0
-sub_8170EF0: @ 8170EF0
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x8]
- ldr r2, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x2E]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08170F1A
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_08170F1A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170EF0
-
- thumb_func_start sub_8170F2C
-sub_8170F2C: @ 8170F2C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _08170F50
- movs r6, 0x20
- movs r5, 0xB
- b _08170F54
- .pool
-_08170F50:
- movs r6, 0x17
- movs r5, 0x5
-_08170F54:
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A82E4
- adds r3, r0, 0
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r1, =gBallSpriteTemplates
- adds r0, r1
- adds r1, r6, 0
- adds r1, 0x20
- movs r2, 0x50
- orrs r5, r2
- adds r2, r5, 0
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gSprites
- mov r9, r0
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r6, r4, r0
- movs r0, 0x22
- strh r0, [r6, 0x2E]
- ldr r1, =gBattleAnimTarget
- mov r8, r1
- ldrb r0, [r1]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x30]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x10
- strh r0, [r6, 0x32]
- movs r0, 0x1C
- add r9, r0
- add r4, r9
- ldr r0, =SpriteCallbackDummy
- str r0, [r4]
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, =gBattlerSpriteIds
- lsls r0, 24
- lsrs r0, 24
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- ldr r1, =sub_8039E84
- str r1, [r0]
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- ldr r1, =sub_8171030
- str r1, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170F2C
-
- thumb_func_start sub_8171030
-sub_8171030: @ 8171030
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, =gSprites
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, =gBattlerSpriteIds
- lsls r0, 24
- lsrs r0, 24
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0817108A
- movs r0, 0x3D
- movs r1, 0
- bl PlaySE12WithPanning
- ldr r0, =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_8171104
- str r1, [r0]
- ldr r0, =sub_81710A8
- movs r1, 0xA
- bl CreateTask
- ldr r0, =sub_8170EF0
- str r0, [r4]
-_0817108A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171030
-
- thumb_func_start sub_81710A8
-sub_81710A8: @ 81710A8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, =gSprites
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r4, =gBattlerSpriteIds
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- bge _081710F4
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0
- bl StartSpriteAnim
- adds r0, r5, 0
- bl DestroyTask
-_081710F4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81710A8
-
- thumb_func_start sub_8171104
-sub_8171104: @ 8171104
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- ldrh r2, [r4, 0x32]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r1, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- strh r2, [r4, 0x36]
- ldr r0, =0x0000ffd8
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldr r0, =sub_8171134
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171104
-
- thumb_func_start sub_8171134
-sub_8171134: @ 8171134
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _081711D2
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x5
- bne _08171160
- ldr r0, =sub_8171CAC
- str r0, [r4, 0x1C]
- b _081711D2
- .pool
-_08171160:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x26]
- adds r1, r4, 0
- adds r1, 0x2E
- movs r2, 0
- adds r0, r4, 0
- adds r0, 0x3C
-_08171188:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _08171188
- movs r0, 0
- strh r0, [r4, 0x38]
- ldr r0, =sub_81711E8
- str r0, [r4, 0x1C]
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xB
- bgt _081711D2
- cmp r5, 0
- blt _081711D2
- ldrh r0, [r4, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- str r5, [sp]
- movs r2, 0x1
- movs r3, 0x1C
- bl LaunchBallStarsTask
- ldr r0, =gBattleAnimTarget
- ldrb r1, [r0]
- movs r0, 0
- movs r2, 0xE
- adds r3, r5, 0
- bl LaunchBallFadeMonTask
-_081711D2:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171134
-
- thumb_func_start sub_81711E8
-sub_81711E8: @ 81711E8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _08171224
- ldr r0, =TaskDummy
- movs r1, 0x32
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x38]
- ldr r0, =sub_8171240
- str r0, [r4, 0x1C]
- ldr r2, =gSprites
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x30]
-_08171224:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81711E8
-
- thumb_func_start sub_8171240
-sub_8171240: @ 8171240
- push {r4-r7,lr}
- adds r7, r0, 0
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- adds r0, r1
- ldrb r4, [r0]
- ldrh r0, [r7, 0x38]
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- bne _08171272
- movs r0, 0x3C
- bl PlaySE
-_08171272:
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _081712E8
- cmp r0, 0x1
- bgt _08171290
- cmp r0, 0
- beq _08171296
- b _08171354
- .pool
-_08171290:
- cmp r0, 0x2
- beq _0817132C
- b _08171354
-_08171296:
- adds r0, r4, 0
- movs r1, 0
- bl sub_80A7270
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0x1C]
- ldr r1, =gUnknown_030062DC
- movs r0, 0x1C
- str r0, [r1]
- ldr r2, =gUnknown_030062E4
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- ldrh r0, [r7, 0x26]
- ldrh r7, [r7, 0x22]
- adds r0, r7
- subs r1, r0
- strh r1, [r2]
- ldr r4, =gUnknown_030062E0
- ldrh r0, [r2]
- lsls r0, 8
- movs r1, 0x1C
- bl __udivsi3
- strh r0, [r4]
- strh r0, [r5, 0xC]
- b _08171346
- .pool
-_081712E8:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x20
- strh r0, [r5, 0x1C]
- movs r0, 0x1C
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0xC]
- ldrh r1, [r5, 0xE]
- adds r0, r1
- strh r0, [r5, 0xE]
- ldr r0, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- negs r0, r0
- asrs r0, 8
- strh r0, [r1, 0x26]
- movs r0, 0x1C
- ldrsh r1, [r5, r0]
- ldr r0, =0x0000047f
- cmp r1, r0
- ble _0817137C
- b _08171346
- .pool
-_0817132C:
- adds r0, r4, 0
- bl sub_80A7344
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_08171346:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _0817137C
- .pool
-_08171354:
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0xA
- ble _0817137C
- adds r0, r6, 0
- bl DestroyTask
- adds r0, r7, 0
- movs r1, 0x2
- bl StartSpriteAnim
- movs r0, 0
- strh r0, [r7, 0x38]
- ldr r0, =sub_817138C
- str r0, [r7, 0x1C]
-_0817137C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171240
-
- thumb_func_start sub_817138C
-sub_817138C: @ 817138C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081713C6
- movs r1, 0
- strh r1, [r4, 0x34]
- movs r0, 0x28
- strh r0, [r4, 0x36]
- strh r1, [r4, 0x38]
- movs r0, 0
- movs r1, 0x28
- bl Cos
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- movs r0, 0
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldr r0, =sub_81713D0
- str r0, [r4, 0x1C]
-_081713C6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817138C
-
- thumb_func_start sub_81713D0
-sub_81713D0: @ 81713D0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0xFF
- ands r1, r0
- cmp r1, 0
- beq _081713E6
- cmp r1, 0x1
- beq _0817145A
- b _08171486
-_081713E6:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- adds r1, 0x4
- ldrh r2, [r4, 0x34]
- lsls r0, r2, 16
- asrs r0, 24
- adds r1, r0
- strh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x3F
- ble _08171486
- ldrh r0, [r4, 0x36]
- subs r0, 0xA
- strh r0, [r4, 0x36]
- ldr r1, =0x00000101
- adds r0, r2, r1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 24
- cmp r0, 0x4
- bne _08171422
- movs r5, 0x1
-_08171422:
- cmp r0, 0x2
- beq _08171442
- cmp r0, 0x2
- bgt _08171434
- cmp r0, 0x1
- beq _0817143A
- b _08171452
- .pool
-_08171434:
- cmp r0, 0x3
- beq _0817144A
- b _08171452
-_0817143A:
- movs r0, 0x38
- bl PlaySE
- b _08171486
-_08171442:
- movs r0, 0x39
- bl PlaySE
- b _08171486
-_0817144A:
- movs r0, 0x3A
- bl PlaySE
- b _08171486
-_08171452:
- movs r0, 0x3B
- bl PlaySE
- b _08171486
-_0817145A:
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- subs r1, 0x4
- ldrh r2, [r4, 0x34]
- lsls r0, r2, 16
- asrs r0, 24
- subs r1, r0
- strh r1, [r4, 0x38]
- lsls r1, 16
- cmp r1, 0
- bgt _08171486
- strh r5, [r4, 0x38]
- ldr r0, =0xffffff00
- ands r0, r2
- strh r0, [r4, 0x34]
-_08171486:
- cmp r5, 0
- beq _081714CA
- movs r5, 0
- strh r5, [r4, 0x34]
- movs r0, 0x40
- movs r1, 0x28
- bl Cos
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x26]
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _081714C0
- strh r5, [r4, 0x38]
- ldr r0, =sub_81717B4
- str r0, [r4, 0x1C]
- b _081714CA
- .pool
-_081714C0:
- ldr r0, =sub_81714D4
- str r0, [r4, 0x1C]
- movs r0, 0x1
- strh r0, [r4, 0x36]
- strh r5, [r4, 0x38]
-_081714CA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81713D0
-
- thumb_func_start sub_81714D4
-sub_81714D4: @ 81714D4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _08171510
- strh r5, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- strh r5, [r0, 0xC]
- ldr r0, =sub_8171520
- str r0, [r4, 0x1C]
- movs r0, 0x17
- bl PlaySE
-_08171510:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81714D4
-
- thumb_func_start sub_8171520
-sub_8171520: @ 8171520
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0xFF
- ands r1, r0
- cmp r1, 0x6
- bls _08171530
- b _08171768
-_08171530:
- lsls r0, r1, 2
- ldr r1, =_08171540
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08171540:
- .4byte _0817155C
- .4byte _081715AE
- .4byte _081715F4
- .4byte _08171654
- .4byte _081716A4
- .4byte _08171708
- .4byte _08171768
-_0817155C:
- ldr r1, =gBattleSpritesDataPtr
- ldr r5, [r1]
- ldr r2, [r5, 0x8]
- ldrh r3, [r2, 0xC]
- movs r6, 0xC
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0xFF
- ble _08171584
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldr r1, [r5, 0x8]
- ldrb r0, [r1, 0xC]
- strh r0, [r1, 0xC]
- b _0817158A
- .pool
-_08171584:
- adds r0, r3, 0
- adds r0, 0xB0
- strh r0, [r2, 0xC]
-_0817158A:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xE
- bhi _081715AC
- b _081717AE
-_081715AC:
- b _08171644
-_081715AE:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _08171660
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- movs r6, 0x36
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bge _081715EA
- adds r0, r4, 0
- movs r1, 0x2
- bl ChangeSpriteAffineAnim
- b _081717AE
-_081715EA:
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
- b _081717AE
-_081715F4:
- ldr r1, =gBattleSpritesDataPtr
- ldr r5, [r1]
- ldr r2, [r5, 0x8]
- ldrh r3, [r2, 0xC]
- movs r6, 0xC
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0xFF
- ble _0817161C
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldr r1, [r5, 0x8]
- ldrb r0, [r1, 0xC]
- strh r0, [r1, 0xC]
- b _08171622
- .pool
-_0817161C:
- adds r0, r3, 0
- adds r0, 0xB0
- strh r0, [r2, 0xC]
-_08171622:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0xC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x18
- bhi _08171644
- b _081717AE
-_08171644:
- ldr r0, [r6]
- ldr r0, [r0, 0x8]
- strh r3, [r0, 0xC]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- strh r3, [r4, 0x38]
- b _081717AE
-_08171654:
- ldrh r0, [r4, 0x38]
- adds r1, r0, 0x1
- strh r1, [r4, 0x38]
- lsls r0, 16
- cmp r0, 0
- bge _0817166E
-_08171660:
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- b _081717AE
-_0817166E:
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- movs r6, 0x36
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bge _0817169C
- adds r0, r4, 0
- movs r1, 0x2
- bl ChangeSpriteAffineAnim
- b _081716A4
-_0817169C:
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
-_081716A4:
- ldr r1, =gBattleSpritesDataPtr
- ldr r5, [r1]
- ldr r2, [r5, 0x8]
- ldrh r3, [r2, 0xC]
- movs r6, 0xC
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0xFF
- ble _081716CC
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldr r1, [r5, 0x8]
- ldrb r0, [r1, 0xC]
- strh r0, [r1, 0xC]
- b _081716D2
- .pool
-_081716CC:
- adds r0, r3, 0
- adds r0, 0xB0
- strh r0, [r2, 0xC]
-_081716D2:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0x4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bls _081717AE
- ldr r0, [r6]
- ldr r0, [r0, 0x8]
- strh r3, [r0, 0xC]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- strh r3, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- b _081717AE
-_08171708:
- movs r6, 0x80
- lsls r6, 1
- adds r0, r6, 0
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r1, r0, 24
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r1, r0
- bne _08171740
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_81717B4
- str r0, [r4, 0x1C]
- b _081717AE
- .pool
-_08171740:
- cmp r0, 0x4
- bne _08171754
- cmp r1, 0x3
- bne _08171754
- ldr r0, =sub_81717D8
- str r0, [r4, 0x1C]
- b _0817175A
- .pool
-_08171754:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
-_0817175A:
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- b _081717AE
-_08171768:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _081717AE
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r1, [r4, 0x34]
- ldr r0, =0xffffff00
- ands r0, r1
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- movs r1, 0x3
- bl StartSpriteAffineAnim
- movs r6, 0x36
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bge _081717A0
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- b _081717A8
- .pool
-_081717A0:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_081717A8:
- movs r0, 0x17
- bl PlaySE
-_081717AE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8171520
-
- thumb_func_start sub_81717B4
-sub_81717B4: @ 81717B4
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x38]
- adds r0, 0x1
- strh r0, [r1, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _081717CE
- movs r0, 0
- strh r0, [r1, 0x38]
- ldr r0, =sub_8171AE4
- str r0, [r1, 0x1C]
-_081717CE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81717B4
-
- thumb_func_start sub_81717D8
-sub_81717D8: @ 81717D8
- adds r3, r0, 0
- adds r3, 0x2C
- ldrb r1, [r3]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r3]
- ldr r1, =sub_81717F8
- str r1, [r0, 0x1C]
- movs r1, 0
- strh r1, [r0, 0x34]
- strh r1, [r0, 0x36]
- strh r1, [r0, 0x38]
- bx lr
- .pool
- thumb_func_end sub_81717D8
-
- thumb_func_start sub_81717F8
-sub_81717F8: @ 81717F8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r7, =gBattleAnimTarget
- ldrh r0, [r6, 0x36]
- adds r0, 0x1
- movs r1, 0
- mov r8, r1
- strh r0, [r6, 0x36]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0x28
- bne _0817183C
- movs r0, 0xFE
- bl PlaySE
- ldrb r1, [r6, 0x5]
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r1
- movs r1, 0x6
- movs r2, 0
- bl BlendPalettes
- adds r0, r6, 0
- bl sub_81719EC
- b _081718BC
- .pool
-_0817183C:
- cmp r1, 0x3C
- bne _0817185A
- ldrb r1, [r6, 0x5]
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r1
- mov r1, r8
- str r1, [sp]
- movs r1, 0x2
- movs r2, 0x6
- movs r3, 0
- bl BeginNormalPaletteFade
- b _081718BC
-_0817185A:
- cmp r1, 0x5F
- bne _08171880
- ldr r0, =gDoingBattleAnim
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
- bl m4aMPlayAllStop
- ldr r0, =0x00000213
- bl PlaySE
- b _081718BC
- .pool
-_08171880:
- ldr r0, =0x0000013b
- cmp r1, r0
- bne _081718BC
- ldr r5, =gSprites
- ldr r4, =gBattlerSpriteIds
- ldrb r0, [r7]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r0, [r7]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- mov r0, r8
- strh r0, [r6, 0x2E]
- ldr r0, =sub_81718D8
- str r0, [r6, 0x1C]
-_081718BC:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81717F8
-
- thumb_func_start sub_81718D8
-sub_81718D8: @ 81718D8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08171944
- cmp r0, 0x1
- bgt _081718F0
- cmp r0, 0
- beq _081718F6
- b _0817198A
-_081718F0:
- cmp r0, 0x2
- beq _08171976
- b _0817198A
-_081718F6:
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrb r1, [r4, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4, 0x1]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, [r4, 0x14]
- ldrh r0, [r0, 0x2]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- ldr r0, =0x00007fff
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08171982
- .pool
-_08171944:
- ldrh r0, [r4, 0x30]
- adds r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- ble _081719B0
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r2, [r4, 0x32]
- adds r2, 0x1
- strh r2, [r4, 0x32]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _081719B0
- b _08171982
-_08171976:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_08171982:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _081719B0
-_0817198A:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _081719B0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- strh r5, [r4, 0x2E]
- ldr r0, =sub_81719C0
- str r0, [r4, 0x1C]
-_081719B0:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81718D8
-
- thumb_func_start sub_81719C0
-sub_81719C0: @ 81719C0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _081719D8
- ldr r0, =0x0000ffff
- strh r0, [r4, 0x2E]
- b _081719E4
- .pool
-_081719D8:
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_081719E4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81719C0
-
- thumb_func_start sub_81719EC
-sub_81719EC: @ 81719EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- adds r1, r6, 0
- adds r1, 0x43
- ldrb r0, [r1]
- cmp r0, 0
- beq _08171A0C
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- b _08171A14
-_08171A0C:
- movs r0, 0
- mov r8, r0
- movs r0, 0x1
- strb r0, [r1]
-_08171A14:
- movs r0, 0x4
- bl sub_8171D60
- movs r7, 0
- ldr r2, =gSprites
- mov r9, r2
- movs r0, 0x1C
- add r0, r9
- mov r10, r0
-_08171A26:
- movs r2, 0x20
- ldrsh r1, [r6, r2]
- movs r0, 0x22
- ldrsh r2, [r6, r0]
- ldr r0, =gUnknown_085E5250
- mov r3, r8
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08171A82
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- mov r2, r9
- adds r5, r4, r2
- movs r0, 0x18
- strh r0, [r5, 0x2E]
- ldr r0, =gUnknown_085E5088
- lsls r1, r7, 2
- adds r1, r0
- movs r0, 0
- ldrsb r0, [r1, r0]
- ldrh r2, [r6, 0x20]
- adds r0, r2
- strh r0, [r5, 0x32]
- movs r0, 0x1
- ldrsb r0, [r1, r0]
- ldrh r2, [r6, 0x22]
- adds r0, r2
- strh r0, [r5, 0x36]
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl InitAnimArcTranslation
- add r4, r10
- ldr r0, =sub_8171AAC
- str r0, [r4]
- ldr r0, =gUnknown_085E51B4
- ldrb r1, [r0, 0x4]
- adds r0, r5, 0
- bl StartSpriteAnim
-_08171A82:
- adds r7, 0x1
- cmp r7, 0x2
- bls _08171A26
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81719EC
-
- thumb_func_start sub_8171AAC
-sub_8171AAC: @ 8171AAC
- push {r4,lr}
- adds r4, r0, 0
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r0, r4, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _08171ADC
- adds r0, r4, 0
- bl DestroySprite
-_08171ADC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8171AAC
-
- thumb_func_start sub_8171AE4
-sub_8171AE4: @ 8171AE4
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0x1
- bl StartSpriteAnim
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- ldr r0, =sub_8171BAC
- str r0, [r4, 0x1C]
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xB
- bgt _08171B36
- cmp r5, 0
- blt _08171B36
- ldrh r0, [r4, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- str r5, [sp]
- movs r2, 0x1
- movs r3, 0x1C
- bl LaunchBallStarsTask
- ldr r0, =gBattleAnimTarget
- ldrb r1, [r0]
- movs r0, 0x1
- movs r2, 0xE
- adds r3, r5, 0
- bl LaunchBallFadeMonTask
-_08171B36:
- ldr r6, =gSprites
- ldr r5, =gBattlerSpriteIds
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl AnimateSprite
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x80
- lsls r1, 5
- strh r1, [r0, 0x30]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171AE4
-
- thumb_func_start sub_8171BAC
-sub_8171BAC: @ 8171BAC
- push {r4-r7,lr}
- adds r7, r0, 0
- movs r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08171BCA
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_08171BCA:
- ldr r4, =gSprites
- ldr r3, =gBattlerSpriteIds
- ldr r2, =gBattleAnimTarget
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r4
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _08171C04
- adds r0, r1, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- movs r5, 0x1
- b _08171C24
- .pool
-_08171C04:
- ldr r6, =0xfffffee0
- adds r0, r6, 0
- ldrh r6, [r1, 0x30]
- adds r0, r6
- strh r0, [r1, 0x30]
- ldrb r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r1, 0x26]
-_08171C24:
- adds r0, r7, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08171C8A
- cmp r5, 0
- beq _08171C8A
- ldr r4, =gSprites
- ldr r3, =gBattlerSpriteIds
- ldr r2, =gBattleAnimTarget
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r6, 0
- movs r5, 0
- strh r5, [r0, 0x26]
- ldrb r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- lsls r1, 30
- 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]
- strh r5, [r7, 0x2E]
- ldr r0, =sub_81719C0
- str r0, [r7, 0x1C]
- ldr r0, =gDoingBattleAnim
- strb r6, [r0]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
-_08171C8A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171BAC
-
- thumb_func_start sub_8171CAC
-sub_8171CAC: @ 8171CAC
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x24]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x26]
- ldrh r3, [r2, 0x22]
- adds r0, r3
- strh r0, [r2, 0x22]
- strh r1, [r2, 0x26]
- strh r1, [r2, 0x24]
- ldr r4, =sub_8171CE8
- movs r3, 0
- movs r1, 0x5
- adds r0, r2, 0
- adds r0, 0x38
-_08171CD0:
- strh r3, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _08171CD0
- str r4, [r2, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171CAC
-
- thumb_func_start sub_8171CE8
-sub_8171CE8: @ 8171CE8
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x80
- lsls r0, 4
- adds r2, r0, 0
- ldrh r1, [r4, 0x2E]
- adds r2, r1
- movs r0, 0xD0
- lsls r0, 3
- adds r3, r0, 0
- ldrh r1, [r4, 0x30]
- adds r3, r1
- lsls r1, r3, 16
- asrs r1, 24
- ldrh r0, [r4, 0x24]
- subs r0, r1
- strh r0, [r4, 0x24]
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r4, 0x2E]
- ands r3, r0
- strh r3, [r4, 0x30]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- cmp r0, 0xA0
- bgt _08171D3E
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x8
- negs r1, r1
- cmp r0, r1
- bge _08171D52
-_08171D3E:
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, =sub_81719C0
- str r0, [r4, 0x1C]
- ldr r1, =gDoingBattleAnim
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
-_08171D52:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171CE8
-
- thumb_func_start sub_8171D60
-sub_8171D60: @ 8171D60
- push {r4,r5,lr}
- lsls r0, 24
- ldr r1, =gUnknown_085E5094
- lsrs r5, r0, 21
- adds r4, r5, r1
- ldrh r0, [r4, 0x6]
- bl GetSpriteTileStartByTag
- lsls r0, 16
- ldr r1, =0xffff0000
- cmp r0, r1
- bne _08171D86
- adds r0, r4, 0
- bl LoadCompressedSpriteSheetUsingHeap
- ldr r0, =gUnknown_085E50F4
- adds r0, r5, r0
- bl LoadCompressedSpritePaletteUsingHeap
-_08171D86:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171D60
-
- thumb_func_start LaunchBallStarsTask
-LaunchBallStarsTask: @ 8171D98
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r6, r0, 0
- mov r8, r1
- mov r9, r2
- mov r10, r3
- ldr r5, [sp, 0x1C]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r5, 0
- bl sub_8171D60
- ldr r1, =gUnknown_085E51C0
- lsls r0, r5, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x5
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r6, [r0, 0xA]
- mov r1, r8
- strh r1, [r0, 0xC]
- mov r1, r9
- strh r1, [r0, 0xE]
- mov r1, r10
- strh r1, [r0, 0x10]
- strh r5, [r0, 0x26]
- movs r0, 0xF
- bl PlaySE
- adds r0, r4, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end LaunchBallStarsTask
-
- thumb_func_start sub_8171E20
-sub_8171E20: @ 8171E20
- push {lr}
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08171E3E
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0, 0x8]
- ldrb r0, [r1, 0xA]
- adds r0, 0x1
- strb r0, [r1, 0xA]
-_08171E3E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171E20
-
- thumb_func_start sub_8171E50
-sub_8171E50: @ 8171E50
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r6, r0, r1
- ldrh r0, [r6, 0x26]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r2, 0x8
- ldrsh r0, [r6, r2]
- adds r2, r1, 0
- cmp r0, 0xF
- bgt _08171F48
- ldrb r1, [r6, 0xA]
- ldrb r2, [r6, 0xC]
- ldrb r4, [r6, 0xE]
- mov r9, r4
- ldrb r3, [r6, 0x10]
- ldr r4, [sp]
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r4, =gUnknown_085E51F0
- adds r0, r4
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- cmp r0, 0x40
- beq _08171EEC
- bl sub_8171E20
- mov r0, r10
- lsls r4, r0, 4
- add r4, r10
- lsls r4, 2
- ldr r5, =gSprites
- adds r7, r4, r5
- ldr r0, =gUnknown_085E51B4
- ldr r1, [sp]
- adds r0, r1, r0
- ldrb r1, [r0]
- adds r0, r7, 0
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, =sub_8171F68
- str r0, [r4]
- movs r0, 0x3
- mov r2, r9
- ands r2, r0
- lsls r2, 2
- ldrb r1, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r7, 0x5]
- ldrb r0, [r6, 0x8]
- cmp r0, 0x7
- bls _08171EE8
- subs r0, 0x8
- lsls r0, 24
- lsrs r0, 24
-_08171EE8:
- lsls r0, 5
- strh r0, [r7, 0x2E]
-_08171EEC:
- ldr r0, =gTasks
- mov r4, r8
- lsls r1, r4, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r1, [r1, r2]
- adds r2, r0, 0
- cmp r1, 0xF
- bne _08171F48
- ldr r0, =gMain
- ldr r4, =0x00000439
- adds r0, r4
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08171F22
- ldr r0, =gSprites
- mov r2, r10
- lsls r1, r2, 4
- add r1, r10
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08171F22:
- mov r0, r8
- bl DestroyTask
- b _08171F58
- .pool
-_08171F48:
- mov r4, r8
- lsls r0, r4, 2
- add r0, r8
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
-_08171F58:
- 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_8171E50
-
- thumb_func_start sub_8171F68
-sub_8171F68: @ 8171F68
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x30]
- movs r3, 0x30
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _08171F80
- ldr r0, =sub_8171F88
- str r0, [r1, 0x1C]
- b _08171F84
- .pool
-_08171F80:
- subs r0, r2, 0x1
- strh r0, [r1, 0x30]
-_08171F84:
- pop {r0}
- bx r0
- thumb_func_end sub_8171F68
-
- thumb_func_start sub_8171F88
-sub_8171F88: @ 8171F88
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x2
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x32
- bne _08171FBC
- adds r0, r4, 0
- bl sub_8172944
-_08171FBC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8171F88
-
- thumb_func_start sub_8171FC4
-sub_8171FC4: @ 8171FC4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x4]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0x8]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0xC]
- movs r7, 0
- ldr r3, =gSprites
- mov r10, r3
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 3
- str r0, [sp, 0x10]
-_0817200A:
- ldr r0, =gUnknown_085E51F0
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _0817206A
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r3, r10
- adds r5, r4, r3
- ldr r0, =gUnknown_085E51B4
- add r0, r8
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0xA
- strh r0, [r5, 0x36]
- movs r0, 0x2
- strh r0, [r5, 0x38]
- movs r0, 0x1
- strh r0, [r5, 0x3A]
-_0817206A:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _0817200A
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172092
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08172092:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171FC4
-
- thumb_func_start sub_81720C8
-sub_81720C8: @ 81720C8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x4]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0x8]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0xC]
- movs r7, 0
- ldr r3, =gSprites
- mov r10, r3
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 3
- str r0, [sp, 0x10]
-_0817210E:
- ldr r0, =gUnknown_085E51F0
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _0817216E
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r3, r10
- adds r5, r4, r3
- ldr r0, =gUnknown_085E51B4
- add r0, r8
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0xA
- strh r0, [r5, 0x36]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- movs r0, 0x2
- strh r0, [r5, 0x3A]
-_0817216E:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _0817210E
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172196
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08172196:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81720C8
-
- thumb_func_start sub_81721CC
-sub_81721CC: @ 81721CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xA]
- str r2, [sp]
- ldrb r3, [r0, 0xC]
- str r3, [sp, 0x4]
- ldrb r2, [r0, 0xE]
- str r2, [sp, 0x8]
- ldrb r0, [r0, 0x10]
- str r0, [sp, 0xC]
- movs r7, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- str r0, [sp, 0x10]
- ldr r3, =gSprites
- mov r8, r3
- ldr r0, =gUnknown_085E51B4
- adds r1, r0
- mov r10, r1
-_08172212:
- ldr r0, =gUnknown_085E51F0
- ldr r1, [sp, 0x10]
- adds r0, r1, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _0817226E
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r2, r8
- adds r5, r4, r2
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0x4
- strh r0, [r5, 0x36]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- strh r0, [r5, 0x3A]
-_0817226E:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _08172212
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172296
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08172296:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81721CC
-
- thumb_func_start sub_81722CC
-sub_81722CC: @ 81722CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x4]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0x8]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0xC]
- movs r7, 0
- ldr r3, =gSprites
- mov r10, r3
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 3
- str r0, [sp, 0x10]
-_08172312:
- ldr r0, =gUnknown_085E51F0
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _08172376
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r3, r10
- adds r5, r4, r3
- ldr r0, =gUnknown_085E51B4
- add r0, r8
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- adds r0, r7
- strh r0, [r5, 0x2E]
- movs r0, 0x5
- strh r0, [r5, 0x36]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- strh r0, [r5, 0x3A]
-_08172376:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x9
- bls _08172312
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0817239E
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_0817239E:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81722CC
-
- thumb_func_start sub_81723D4
-sub_81723D4: @ 81723D4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r2, r0, 2
- adds r0, r2, r0
- lsls r0, 3
- adds r3, r0, r1
- ldrh r1, [r3, 0x16]
- movs r4, 0x16
- ldrsh r0, [r3, r4]
- cmp r0, 0
- beq _08172404
- subs r0, r1, 0x1
- strh r0, [r3, 0x16]
- b _081724D6
- .pool
-_08172404:
- ldrh r0, [r3, 0x26]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r3, 0xA]
- str r1, [sp]
- ldrb r4, [r3, 0xC]
- str r4, [sp, 0x4]
- ldrb r1, [r3, 0xE]
- str r1, [sp, 0x8]
- ldrb r3, [r3, 0x10]
- str r3, [sp, 0xC]
- movs r7, 0
- str r2, [sp, 0x14]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- str r1, [sp, 0x10]
- ldr r3, =gSprites
- mov r9, r3
- ldr r1, =gUnknown_085E51B4
- adds r0, r1
- mov r10, r0
-_08172430:
- ldr r0, =gUnknown_085E51F0
- ldr r4, [sp, 0x10]
- adds r0, r4, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _0817248C
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r0, r9
- adds r5, r4, r0
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0x8
- strh r0, [r5, 0x36]
- movs r0, 0x2
- strh r0, [r5, 0x38]
- strh r0, [r5, 0x3A]
-_0817248C:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _08172430
- ldr r0, =gTasks
- ldr r1, [sp, 0x14]
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x8
- strh r0, [r1, 0x16]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0x2
- bne _081724D6
- ldr r0, =gMain
- ldr r4, =0x00000439
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _081724D0
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_081724D0:
- mov r0, r8
- bl DestroyTask
-_081724D6:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81723D4
-
- thumb_func_start sub_8172508
-sub_8172508: @ 8172508
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- ldrh r2, [r4, 0x30]
- adds r0, r2
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _08172558
- adds r0, r4, 0
- bl sub_8172944
-_08172558:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8172508
-
- thumb_func_start sub_8172560
-sub_8172560: @ 8172560
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xA]
- str r2, [sp]
- ldrb r3, [r0, 0xC]
- str r3, [sp, 0x4]
- ldrb r2, [r0, 0xE]
- str r2, [sp, 0x8]
- ldrb r0, [r0, 0x10]
- str r0, [sp, 0xC]
- movs r7, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- str r0, [sp, 0x10]
- ldr r3, =gSprites
- mov r8, r3
- ldr r0, =gUnknown_085E51B4
- adds r1, r0
- mov r10, r1
-_081725A6:
- ldr r0, =gUnknown_085E51F0
- ldr r1, [sp, 0x10]
- adds r0, r1, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _081725FE
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r2, r8
- adds r5, r4, r2
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_817265C
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 2
- adds r0, r7
- strh r0, [r5, 0x2E]
-_081725FE:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xB
- bls _081725A6
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172626
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08172626:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172560
-
- thumb_func_start sub_817265C
-sub_817265C: @ 817265C
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- adds r0, r4, 0
- bl Sin
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl Cos
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _081726B4
- adds r0, r5, 0
- bl sub_8172944
-_081726B4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_817265C
-
- thumb_func_start sub_81726BC
-sub_81726BC: @ 81726BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- ldr r0, =gTasks
- ldr r2, [sp]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp, 0x4]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x8]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0xC]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0x10]
- movs r3, 0
- mov r8, r3
- mov r1, r9
- lsls r0, r1, 1
- add r0, r9
- lsls r0, 3
- str r0, [sp, 0x14]
-_08172700:
- movs r7, 0
- movs r2, 0x1
- add r2, r8
- mov r10, r2
-_08172708:
- ldr r0, =gUnknown_085E51F0
- ldr r3, [sp, 0x14]
- adds r0, r3, r0
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- ldr r3, [sp, 0x10]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _08172790
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- ldr r0, =gSprites
- adds r5, r4, r0
- ldr r0, =gUnknown_085E51B4
- add r0, r9
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r1, =gSprites + 0x1C
- adds r4, r1
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r1, [sp, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r2, r3, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0x8
- strh r0, [r5, 0x36]
- mov r0, r8
- cmp r0, 0
- bne _08172788
- movs r0, 0x2
- strh r0, [r5, 0x38]
- movs r0, 0x1
- b _0817278E
- .pool
-_08172788:
- movs r0, 0x1
- strh r0, [r5, 0x38]
- movs r0, 0x2
-_0817278E:
- strh r0, [r5, 0x3A]
-_08172790:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _08172708
- mov r1, r10
- lsls r0, r1, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x1
- bls _08172700
- ldr r0, =gMain
- ldr r2, =0x00000439
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081727C4
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_081727C4:
- ldr r0, [sp]
- bl DestroyTask
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81726BC
-
- thumb_func_start sub_81727E8
-sub_81727E8: @ 81727E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xA]
- str r2, [sp]
- ldrb r3, [r0, 0xC]
- str r3, [sp, 0x4]
- ldrb r2, [r0, 0xE]
- str r2, [sp, 0x8]
- ldrb r0, [r0, 0x10]
- str r0, [sp, 0xC]
- movs r7, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- str r0, [sp, 0x10]
- ldr r3, =gSprites
- mov r8, r3
- ldr r0, =gUnknown_085E51B4
- adds r1, r0
- mov r10, r1
-_0817282E:
- ldr r0, =gUnknown_085E51F0
- ldr r1, [sp, 0x10]
- adds r0, r1, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _08172880
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r2, r8
- adds r5, r4, r2
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_81728E0
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
-_08172880:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _0817282E
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081728A8
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_081728A8:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81727E8
-
- thumb_func_start sub_81728E0
-sub_81728E0: @ 81728E0
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- ldrh r1, [r5, 0x2E]
- movs r0, 0x3F
- ands r0, r1
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- bl Sin
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl Cos
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x2E]
- adds r0, 0xA
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _0817293C
- adds r0, r5, 0
- bl sub_8172944
-_0817293C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81728E0
-
- thumb_func_start sub_8172944
-sub_8172944: @ 8172944
- push {r4-r7,lr}
- adds r7, r0, 0
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172970
- movs r1, 0x3C
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- bne _081729CA
- adds r0, r7, 0
- bl DestroySpriteAndFreeResources
- b _081729E2
- .pool
-_08172970:
- ldr r2, =gBattleSpritesDataPtr
- ldr r0, [r2]
- ldr r1, [r0, 0x8]
- ldrb r0, [r1, 0xA]
- subs r0, 0x1
- strb r0, [r1, 0xA]
- ldr r0, [r2]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- bne _081729DC
- movs r4, 0
- ldr r5, =gUnknown_085E51C0
- b _08172998
- .pool
-_08172994:
- adds r5, 0x4
- adds r4, 0x1
-_08172998:
- cmp r4, 0xB
- bgt _081729AA
- ldr r0, [r5]
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08172994
-_081729AA:
- cmp r4, 0xC
- bne _081729CA
- movs r6, 0
- ldr r5, =gUnknown_085E5094
- ldr r4, =gUnknown_085E50F4
-_081729B4:
- ldrh r0, [r5, 0x6]
- bl FreeSpriteTilesByTag
- ldrh r0, [r4, 0x4]
- bl FreeSpritePaletteByTag
- adds r5, 0x8
- adds r4, 0x8
- adds r6, 0x1
- cmp r6, 0xB
- ble _081729B4
-_081729CA:
- adds r0, r7, 0
- bl DestroySprite
- b _081729E2
- .pool
-_081729DC:
- adds r0, r7, 0
- bl DestroySprite
-_081729E2:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8172944
-
- thumb_func_start LaunchBallFadeMonTask
-LaunchBallFadeMonTask: @ 81729E8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r0, 0
- mov r9, r2
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r3, 24
- lsrs r7, r3, 24
- ldr r0, =sub_8172AB0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r5, r0, r1
- strh r7, [r5, 0x26]
- strh r6, [r5, 0xE]
- mov r0, r9
- strh r0, [r5, 0x1C]
- mov r1, r9
- lsrs r0, r1, 16
- strh r0, [r5, 0x1E]
- cmp r4, 0
- bne _08172A58
- lsls r0, r6, 20
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 16
- ldr r2, =gUnknown_085E5310
- lsls r1, r7, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x10
- movs r2, 0
- bl BlendPalette
- movs r0, 0x1
- strh r0, [r5, 0xA]
- b _08172A7E
- .pool
-_08172A58:
- lsls r0, r6, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r0, 16
- ldr r2, =gUnknown_085E5310
- lsls r1, r7, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x10
- movs r2, 0x10
- bl BlendPalette
- movs r0, 0x10
- strh r0, [r5, 0x8]
- ldr r0, =0x0000ffff
- strh r0, [r5, 0xA]
- ldr r0, =sub_8172B40
- str r0, [r5]
-_08172A7E:
- ldr r0, =0x00007fff
- str r0, [sp]
- mov r0, r9
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- mov r0, r8
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end LaunchBallFadeMonTask
-
- thumb_func_start sub_8172AB0
-sub_8172AB0: @ 8172AB0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x10
- bgt _08172B08
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- lsls r0, 20
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 16
- ldrb r2, [r4, 0x8]
- ldr r3, =gUnknown_085E5310
- lsls r1, 1
- adds r1, r3
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x8]
- adds r0, r1
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _08172B30
- .pool
-_08172B08:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08172B30
- ldrh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- lsls r1, 16
- orrs r0, r1
- ldr r1, =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- adds r0, r5, 0
- bl DestroyTask
-_08172B30:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172AB0
-
- thumb_func_start sub_8172B40
-sub_8172B40: @ 8172B40
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08172B78
- ldr r0, =gTasks
- lsls r4, r2, 2
- adds r4, r2
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- lsls r1, 16
- orrs r0, r1
- ldr r1, =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =sub_8172B90
- str r0, [r4]
-_08172B78:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172B40
-
- thumb_func_start sub_8172B90
-sub_8172B90: @ 8172B90
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r1, r0, 24
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x10
- bgt _08172BE4
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- lsls r0, 20
- movs r3, 0x80
- lsls r3, 17
- adds r0, r3
- lsrs r0, 16
- ldrb r2, [r4, 0x8]
- ldr r3, =gUnknown_085E5310
- lsls r1, 1
- adds r1, r3
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x8]
- adds r0, r1
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _08172BEA
- .pool
-_08172BE4:
- adds r0, r2, 0
- bl DestroyTask
-_08172BEA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8172B90
-
- thumb_func_start sub_8172BF0
-sub_8172BF0: @ 8172BF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r0, =gBattlerSpriteIds
- ldr r3, =gBattleAnimAttacker
- ldrb r2, [r3]
- adds r0, r2, r0
- ldrb r6, [r0]
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _08172CC8
- cmp r0, 0x1
- bgt _08172C30
- cmp r0, 0
- beq _08172C36
- b _08172D8A
- .pool
-_08172C30:
- cmp r0, 0x2
- beq _08172CDA
- b _08172D8A
-_08172C36:
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r5, 0x1E]
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r4, [r5, 0x8]
- adds r0, r4
- strh r0, [r5, 0x8]
- ldrb r0, [r3]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08172C78
- ldr r2, =gSprites
- lsls r3, r6, 4
- adds r1, r3, r6
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 24
- ldrh r4, [r1, 0x24]
- adds r0, r4
- strh r0, [r1, 0x24]
- adds r4, r3, 0
- b _08172C90
- .pool
-_08172C78:
- ldr r3, =gSprites
- lsls r4, r6, 4
- adds r2, r4, r6
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r5, 0x8]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r2, r3, 0
-_08172C90:
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r3, r0, r1
- ldrb r0, [r3, 0x8]
- strh r0, [r3, 0x8]
- adds r0, r4, r6
- lsls r0, 2
- adds r0, r2
- movs r2, 0x20
- ldrsh r1, [r0, r2]
- movs r4, 0x24
- ldrsh r0, [r0, r4]
- adds r1, r0
- adds r1, 0x20
- movs r0, 0x98
- lsls r0, 1
- cmp r1, r0
- bls _08172D8A
- ldrh r0, [r3, 0x1C]
- adds r0, 0x1
- strh r0, [r3, 0x1C]
- b _08172D8A
- .pool
-_08172CC8:
- ldrb r1, [r5, 0x1E]
- adds r0, r2, 0
- adds r2, r6, 0
- bl LoadBattleMonGfxAndAnimate
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- b _08172D8A
-_08172CDA:
- movs r1, 0xA0
- lsls r1, 3
- adds r0, r1, 0
- ldrh r2, [r5, 0x8]
- adds r0, r2
- strh r0, [r5, 0x8]
- ldrb r0, [r3]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08172D10
- ldr r0, =gSprites
- lsls r3, r6, 4
- adds r2, r3, r6
- lsls r2, 2
- adds r2, r0
- ldrh r1, [r5, 0x8]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r4, r3, 0
- b _08172D28
- .pool
-_08172D10:
- ldr r0, =gSprites
- lsls r2, r6, 4
- adds r1, r2, r6
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 24
- ldrh r3, [r1, 0x24]
- adds r0, r3
- strh r0, [r1, 0x24]
- adds r4, r2, 0
-_08172D28:
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x8]
- strh r1, [r0, 0x8]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08172D68
- ldr r0, =gSprites
- adds r1, r4, r6
- lsls r1, 2
- adds r1, r0
- movs r4, 0x24
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bgt _08172D7E
- movs r0, 0
- strh r0, [r1, 0x24]
- b _08172D84
- .pool
-_08172D68:
- ldr r0, =gSprites
- adds r1, r4, r6
- lsls r1, 2
- adds r1, r0
- movs r3, 0x24
- ldrsh r0, [r1, r3]
- cmp r0, 0
- blt _08172D7E
- strh r2, [r1, 0x24]
- movs r4, 0x1
- mov r8, r4
-_08172D7E:
- mov r0, r8
- cmp r0, 0
- beq _08172D8A
-_08172D84:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_08172D8A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172BF0
-
- thumb_func_start sub_8172D98
-sub_8172D98: @ 8172D98
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08172E14
- cmp r0, 0x1
- bgt _08172DC0
- cmp r0, 0
- beq _08172DC6
- b _08172E84
- .pool
-_08172DC0:
- cmp r0, 0x2
- beq _08172E4E
- b _08172E84
-_08172DC6:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08172DE8
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _08172DF0
- .pool
-_08172DE8:
- ldr r1, =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_08172DF0:
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08172E84
- .pool
-_08172E14:
- ldrh r0, [r4, 0xA]
- adds r1, r0, 0x1
- strh r1, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08172E84
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r2, [r4, 0x8]
- adds r2, 0x1
- strh r2, [r4, 0x8]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _08172E84
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- b _08172E84
-_08172E4E:
- ldr r1, =gBattlerSpriteIds
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r0, =0x06010000
- adds r1, r0
- movs r2, 0x80
- lsls r2, 4
- movs r0, 0
- movs r3, 0x1
- bl RequestDma3Fill
- ldrb r0, [r4]
- bl ClearBehindSubstituteBit
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08172E84:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172D98
-
- thumb_func_start sub_8172E9C
-sub_8172E9C: @ 8172E9C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gBattleAnimArgs
- ldr r1, =gBattleSpritesDataPtr
- ldr r2, [r1]
- ldr r1, =gBattleAnimAttacker
- ldrb r1, [r1]
- ldr r2, [r2]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- lsls r1, 29
- lsrs r1, 31
- strh r1, [r3, 0xE]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172E9C
-
- thumb_func_start sub_8172ED0
-sub_8172ED0: @ 8172ED0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gBattleAnimTarget
- ldr r1, =gEffectBattler
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172ED0
-
- thumb_func_start sub_8172EF0
-sub_8172EF0: @ 8172EF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- adds r5, r0, 0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r4, r0, 0
- adds r0, r6, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08172FC8
- lsrs r0, r5, 16
- ldr r7, =0x0000ffff
- ands r5, r7
- eors r0, r5
- lsrs r1, r4, 16
- eors r0, r1
- ands r4, r7
- eors r0, r4
- cmp r0, 0x7
- bhi _08172F4E
- movs r0, 0x1
- mov r8, r0
-_08172F4E:
- mov r0, r8
- cmp r0, 0
- beq _08172FC8
- ldr r0, =0x000027f9
- bl GetSpriteTileStartByTag
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r7
- bne _08172F6E
- ldr r0, =gBattleAnimPicTable + 0x748
- bl LoadCompressedSpriteSheetUsingHeap
- ldr r0, =gBattleAnimPaletteTable + 0x748
- bl LoadCompressedSpritePaletteUsingHeap
-_08172F6E:
- ldr r5, =sub_8172FEC
- adds r0, r5, 0
- movs r1, 0xA
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gTasks
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 3
- adds r2, r3
- movs r4, 0
- strh r6, [r2, 0x8]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- strh r6, [r1, 0x8]
- strh r4, [r2, 0xA]
- movs r0, 0x1
- strh r0, [r1, 0xA]
- b _08172FDE
- .pool
-_08172FC8:
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x1]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x1]
-_08172FDE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172EF0
-
- thumb_func_start sub_8172FEC
-sub_8172FEC: @ 8172FEC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x22]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- cmp r0, 0x3B
- bgt _08173018
- adds r0, r1, 0x1
- strh r0, [r4, 0x22]
- b _08173190
- .pool
-_08173018:
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _08173026
- b _08173190
-_08173026:
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- cmp r1, 0
- beq _0817303A
- b _08173190
-_0817303A:
- ldrb r0, [r4, 0x8]
- mov r8, r0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r8
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08173074
- ldr r0, =gUnknown_085CE388
- adds r1, r5, 0
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- b _081730D6
- .pool
-_08173074:
- cmp r0, 0
- blt _081730A8
- cmp r0, 0x3
- bgt _081730A8
- ldr r0, =gUnknown_085CE3A0
- adds r1, r5, 0
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSprites
- lsls r2, r5, 4
- adds r2, r5
- lsls r2, 2
- adds r2, r0
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x4
- b _081730C8
- .pool
-_081730A8:
- ldr r0, =gUnknown_085CE3A0
- adds r1, r5, 0
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSprites
- lsls r2, r5, 4
- adds r2, r5
- lsls r2, 2
- adds r2, r0
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x5
-_081730C8:
- ldr r4, =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
-_081730D6:
- ldr r2, =gTasks
- lsls r1, r7, 2
- adds r0, r1, r7
- lsls r0, 3
- adds r6, r0, r2
- movs r2, 0xA
- ldrsh r0, [r6, r2]
- mov r9, r1
- cmp r0, 0
- bne _08173118
- ldr r1, =gSprites
- lsls r2, r5, 4
- adds r0, r2, r5
- lsls r0, 2
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_81731FC
- str r1, [r0]
- adds r4, r2, 0
- b _08173160
- .pool
-_08173118:
- ldr r3, =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, =sub_8173250
- str r2, [r0]
- adds r1, r3
- ldr r0, =0x0000ffe0
- strh r0, [r1, 0x24]
- movs r0, 0x20
- strh r0, [r1, 0x26]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- movs r1, 0x1E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08173160
- mov r0, r8
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0x3F
- cmp r0, 0
- bne _08173156
- movs r1, 0xC0
-_08173156:
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x66
- bl PlaySE12WithPanning
-_08173160:
- ldr r1, =gSprites
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- strh r7, [r0, 0x2E]
- ldr r1, =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- cmp r5, 0x40
- beq _08173184
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
-_08173184:
- movs r4, 0x1E
- ldrsh r0, [r1, r4]
- cmp r0, 0x5
- bne _08173190
- ldr r0, =sub_81731B0
- str r0, [r1]
-_08173190:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172FEC
-
- thumb_func_start sub_81731B0
-sub_81731B0: @ 81731B0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r1, r0, r1
- movs r2, 0x20
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _081731F0
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- bne _081731EA
- ldrb r1, [r1, 0x8]
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x1]
-_081731EA:
- adds r0, r3, 0
- bl DestroyTask
-_081731F0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81731B0
-
- thumb_func_start sub_81731FC
-sub_81731FC: @ 81731FC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x18
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x18
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0xC
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08173246
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_08173246:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81731FC
-
- thumb_func_start sub_8173250
-sub_8173250: @ 8173250
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- bgt _08173264
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _081732A6
-_08173264:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldrh r1, [r4, 0x24]
- adds r1, 0x5
- strh r1, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- subs r0, 0x5
- strh r0, [r4, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x20
- ble _081732A6
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_081732A6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173250
-
- thumb_func_start sub_81732B0
-sub_81732B0: @ 81732B0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gBattleAnimPicTable + 0x868
- bl LoadCompressedSpriteSheetUsingHeap
- ldr r0, =gBattleAnimPaletteTable + 0x868
- bl LoadCompressedSpritePaletteUsingHeap
- ldr r0, =0x0000281d
- bl IndexOfSpritePaletteTag
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81732B0
-
- thumb_func_start sub_81732E4
-sub_81732E4: @ 81732E4
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, =0x0000281d
- adds r0, r5, 0
- bl FreeSpriteTilesByTag
- adds r0, r5, 0
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81732E4
-
- thumb_func_start sub_817330C
-sub_817330C: @ 817330C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0
- bl InitAnimSpritePos
- movs r0, 0x1E
- strh r0, [r4, 0x2E]
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r5, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r5, 0x4]
- adds r0, r1
- strh r0, [r4, 0x32]
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- strh r0, [r4, 0x36]
- ldr r0, =0x0000ffe0
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldr r2, =gSprites
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- 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, =sub_8039E84
- str r1, [r0]
- ldr r0, =sub_817339C
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817330C
-
- thumb_func_start sub_817339C
-sub_817339C: @ 817339C
- push {lr}
- adds r3, r0, 0
- ldr r2, =gSprites
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081733C0
- ldr r0, =sub_81733D4
- str r0, [r3, 0x1C]
-_081733C0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817339C
-
- thumb_func_start sub_81733D4
-sub_81733D4: @ 81733D4
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _081733F6
- movs r0, 0
- strh r0, [r4, 0x2E]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_8173400
- str r0, [r4, 0x1C]
-_081733F6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81733D4
-
- thumb_func_start sub_8173400
-sub_8173400: @ 8173400
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gSprites
- ldr r3, =gBattlerSpriteIds
- ldr r2, =gBattleAnimAttacker
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- bge _08173448
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- ble _08173448
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08173448:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173400
-
- thumb_func_start sub_817345C
-sub_817345C: @ 817345C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08173478
- cmp r0, 0x1
- beq _0817348C
- b _081734A0
- .pool
-_08173478:
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, =gBattleAnimAttacker
- strb r0, [r1]
- movs r0, 0x1
- b _08173498
- .pool
-_0817348C:
- movs r0, 0x1
- bl GetBattlerAtPosition
- ldr r1, =gBattleAnimAttacker
- strb r0, [r1]
- movs r0, 0
-_08173498:
- bl GetBattlerAtPosition
- ldr r1, =gBattleAnimTarget
- strb r0, [r1]
-_081734A0:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817345C
-
- thumb_func_start AnimTask_GetTrappedMoveAnimId
-AnimTask_GetTrappedMoveAnimId: @ 81734B4
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrh r1, [r0]
- cmp r1, 0x53
- bne _081734D4
- ldr r1, =gBattleAnimArgs
- movs r0, 0x1
- b _0817350C
- .pool
-_081734D4:
- cmp r1, 0xFA
- bne _081734E4
- ldr r1, =gBattleAnimArgs
- movs r0, 0x2
- b _0817350C
- .pool
-_081734E4:
- cmp r1, 0x80
- bne _081734F4
- ldr r1, =gBattleAnimArgs
- movs r0, 0x3
- b _0817350C
- .pool
-_081734F4:
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- bne _08173508
- ldr r1, =gBattleAnimArgs
- movs r0, 0x4
- b _0817350C
- .pool
-_08173508:
- ldr r1, =gBattleAnimArgs
- movs r0, 0
-_0817350C:
- strh r0, [r1]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_GetTrappedMoveAnimId
-
- thumb_func_start sub_817351C
-sub_817351C: @ 817351C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gBattleAnimAttacker
- ldr r1, =gBattleSpritesDataPtr
- ldr r2, [r1]
- ldr r1, [r2, 0x8]
- ldrh r1, [r1]
- strb r1, [r3]
- ldr r3, =gBattleAnimTarget
- ldr r1, [r2, 0x8]
- ldrh r1, [r1]
- lsrs r1, 8
- strb r1, [r3]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817351C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s
deleted file mode 100644
index 910b09b8c..000000000
--- a/asm/battle_anim_effects_1.s
+++ /dev/null
@@ -1,9550 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80FE840
-sub_80FE840: @ 80FE840
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gBattleAnimArgs
- ldrh r0, [r5]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x30]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080FE87C
- ldrh r0, [r5, 0x8]
- negs r0, r0
- b _080FE87E
- .pool
-_080FE87C:
- ldrh r0, [r5, 0x8]
-_080FE87E:
- strh r0, [r4, 0x34]
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0xA]
- strh r0, [r4, 0x36]
- ldr r0, =sub_80FE898
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FE840
-
- thumb_func_start sub_80FE898
-sub_80FE898: @ 80FE898
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080FE8D4
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x32]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r1, r0
- strh r1, [r4, 0x32]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _080FE8DA
-_080FE8D4:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FE8DA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FE898
-
- thumb_func_start sub_80FE8E0
-sub_80FE8E0: @ 80FE8E0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r4, 0x1C]
- ldr r1, =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FE8E0
-
- thumb_func_start sub_80FE930
-sub_80FE930: @ 80FE930
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r5, =gBattleAnimArgs
- ldrb r1, [r5, 0x6]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r4, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FE930
-
- thumb_func_start sub_80FE988
-sub_80FE988: @ 80FE988
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r6, =gBattleAnimArgs
- ldrh r0, [r6, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl InitAnimLinearTranslation
- ldrh r0, [r6, 0x6]
- strh r0, [r4, 0x38]
- ldr r1, =sub_80FE9E4
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FE988
-
- thumb_func_start sub_80FE9E4
-sub_80FE9E4: @ 80FE9E4
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _080FE9FA
- adds r0, r4, 0
- bl DestroySprite
- b _080FEA4E
-_080FE9FA:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- ble _080FEA14
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A82E4
- adds r0, 0x1
- b _080FEA1E
- .pool
-_080FEA14:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A82E4
- adds r0, 0x6
-_080FEA1E:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x5
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xE
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0xF
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
-_080FEA4E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FE9E4
-
- thumb_func_start sub_80FEA58
-sub_80FEA58: @ 80FEA58
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x8]
- subs r0, 0x1
- movs r2, 0
- strh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080FEAB2
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- movs r0, 0x6
- strh r0, [r5, 0x8]
- ldr r1, =gBattleAnimArgs
- movs r0, 0xF
- strh r0, [r1]
- strh r2, [r1, 0x2]
- movs r0, 0x50
- strh r0, [r1, 0x4]
- strh r2, [r1, 0x6]
- ldr r4, =gUnknown_08592210
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A82E4
- adds r3, r0, 0
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- bl CreateSpriteAndAnimate
-_080FEAB2:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0xF
- bne _080FEAC0
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080FEAC0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FEA58
-
- thumb_func_start sub_80FEAD8
-sub_80FEAD8: @ 80FEAD8
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_80A6980
- ldr r6, =gBattleAnimArgs
- ldrh r0, [r6, 0x6]
- strh r0, [r4, 0x2E]
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldrh r0, [r6, 0x4]
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldr r0, =sub_80FEB28
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FEAD8
-
- thumb_func_start sub_80FEB28
-sub_80FEB28: @ 80FEB28
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _080FEB3C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FEB3C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FEB28
-
- thumb_func_start sub_80FEB44
-sub_80FEB44: @ 80FEB44
- push {r4,r5,lr}
- adds r5, r0, 0
- bl Random2
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x7
- ands r1, r0
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080FEB90
- ldrh r0, [r5, 0x20]
- subs r0, 0x14
- b _080FEB94
- .pool
-_080FEB90:
- ldrh r0, [r5, 0x20]
- adds r0, 0x14
-_080FEB94:
- strh r0, [r5, 0x20]
- bl Random2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1F
- ands r0, r1
- adds r0, 0x40
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_80A7160
- bl Random2
- movs r1, 0xFF
- ands r1, r0
- strh r1, [r5, 0x38]
- adds r0, r5, 0
- adds r0, 0x43
- ldrb r0, [r0]
- strh r0, [r5, 0x3A]
- ldr r1, =sub_80FEBFC
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FEB44
-
- thumb_func_start sub_80FEBFC
-sub_80FEBFC: @ 80FEBFC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80A70E8
- lsls r0, 24
- cmp r0, 0
- beq _080FEC12
- adds r0, r4, 0
- bl DestroyAnimSprite
- b _080FEC42
-_080FEC12:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xC
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x7E
- bgt _080FEC2E
- ldrh r0, [r4, 0x3A]
- b _080FEC32
-_080FEC2E:
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
-_080FEC32:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrh r0, [r4, 0x38]
- adds r0, 0x18
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
-_080FEC42:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FEBFC
-
- thumb_func_start sub_80FEC48
-sub_80FEC48: @ 80FEC48
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080FEC68
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080FEC68:
- ldr r4, =gBattleAnimArgs
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r6, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r6, 0x38]
- adds r0, r6, 0
- bl InitAnimArcTranslation
- ldr r0, =sub_80FECB8
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FEC48
-
- thumb_func_start sub_80FECB8
-sub_80FECB8: @ 80FECB8
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _080FECE2
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- ldr r0, =WaitAnimForDuration
- str r0, [r4, 0x1C]
- ldr r1, =sub_80FECF0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
-_080FECE2:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FECB8
-
- thumb_func_start sub_80FECF0
-sub_80FECF0: @ 80FECF0
- 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]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x3C
- strh r0, [r4, 0x2E]
- ldr r0, =WaitAnimForDuration
- str r0, [r4, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FECF0
-
- thumb_func_start sub_80FED28
-sub_80FED28: @ 80FED28
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_80A6980
- ldr r5, =gBattleAnimArgs
- ldrb r1, [r5, 0x8]
- adds r0, r4, 0
- bl StartSpriteAnim
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080FED52
- ldrb r0, [r4, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x1]
-_080FED52:
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x30]
- ldr r1, =sub_80FED74
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FED28
-
- thumb_func_start sub_80FED74
-sub_80FED74: @ 80FED74
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- negs r1, r1
- bl Cos
- ldrh r1, [r4, 0x32]
- adds r1, 0x18
- strh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7F
- bhi _080FEDC8
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A8328
- 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
- b _080FEDEC
- .pool
-_080FEDC8:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A8328
- adds r0, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080FEDDC
- movs r2, 0x3
-_080FEDDC:
- movs r0, 0x3
- ands r2, r0
- lsls r2, 2
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
-_080FEDEC:
- strb r0, [r4, 0x5]
- ldrh r0, [r4, 0x30]
- adds r0, 0x2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080FEE10
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FEE10:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FED74
-
- thumb_func_start sub_80FEE1C
-sub_80FEE1C: @ 80FEE1C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080FEE36
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _080FEE3E
-_080FEE36:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080FEE70
-_080FEE3E:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080FEE60
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x3
- bl SetAnimBgAttribute
- b _080FEE6A
- .pool
-_080FEE60:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080FEE6A:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080FEE70:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FEE1C
-
- thumb_func_start sub_80FEE78
-sub_80FEE78: @ 80FEE78
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0
- bl InitAnimSpritePos
- ldr r5, =gBattleAnimArgs
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x4]
- adds r0, r5
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl InitAnimLinearTranslation
- movs r0, 0x40
- strh r0, [r4, 0x38]
- ldr r1, =sub_80FEECC
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FEE78
-
- thumb_func_start sub_80FEECC
-sub_80FEECC: @ 80FEECC
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- bne _080FEF38
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x5
- negs r1, r1
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7F
- bhi _080FEF18
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A82E4
- subs r0, 0x1
- b _080FEF22
- .pool
-_080FEF18:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A82E4
- adds r0, 0x1
-_080FEF22:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrh r0, [r4, 0x38]
- adds r0, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _080FEF3E
- .pool
-_080FEF38:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FEF3E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FEECC
-
- thumb_func_start sub_80FEF44
-sub_80FEF44: @ 80FEF44
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r5, =gBattleAnimArgs
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x4]
- adds r0, r5
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl InitAnimLinearTranslation
- movs r0, 0x40
- strh r0, [r4, 0x38]
- ldr r1, =sub_80FEF98
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FEF44
-
- thumb_func_start sub_80FEF98
-sub_80FEF98: @ 80FEF98
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- bne _080FEFF0
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldrh r1, [r4, 0x38]
- adds r0, r1, 0
- subs r0, 0x3B
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x4
- bls _080FEFD0
- adds r0, r1, 0
- subs r0, 0xBB
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x4
- bhi _080FEFE4
-_080FEFD0:
- ldrb r2, [r4, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- eors r1, r0
- lsls r1, 1
- subs r0, 0x47
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x3]
-_080FEFE4:
- ldrh r0, [r4, 0x38]
- adds r0, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _080FEFF6
-_080FEFF0:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FEFF6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FEF98
-
- thumb_func_start sub_80FEFFC
-sub_80FEFFC: @ 80FEFFC
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x32]
- ldr r0, =sub_80FF044
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FEFFC
-
- thumb_func_start sub_80FF044
-sub_80FF044: @ 80FF044
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x32]
- movs r2, 0x32
- ldrsh r3, [r1, r2]
- cmp r3, 0
- bne _080FF078
- ldrh r0, [r1, 0x30]
- movs r2, 0x1
- ands r2, r0
- cmp r2, 0
- beq _080FF066
- movs r0, 0x80
- strh r0, [r1, 0x2E]
- strh r3, [r1, 0x30]
- strh r3, [r1, 0x32]
- b _080FF06C
-_080FF066:
- strh r2, [r1, 0x2E]
- strh r2, [r1, 0x30]
- strh r2, [r1, 0x32]
-_080FF06C:
- ldr r0, =sub_80FF090
- str r0, [r1, 0x1C]
- b _080FF08C
- .pool
-_080FF078:
- subs r0, 0x1
- strh r0, [r1, 0x32]
- ldrh r0, [r1, 0x2E]
- ldrh r2, [r1, 0x20]
- adds r0, r2
- strh r0, [r1, 0x20]
- ldrh r0, [r1, 0x30]
- ldrh r2, [r1, 0x22]
- adds r0, r2
- strh r0, [r1, 0x22]
-_080FF08C:
- pop {r0}
- bx r0
- thumb_func_end sub_80FF044
-
- thumb_func_start sub_80FF090
-sub_80FF090: @ 80FF090
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080FF0B4
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x19
- bl Sin
- negs r0, r0
- b _080FF0BE
- .pool
-_080FF0B4:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x19
- bl Sin
-_080FF0BE:
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080FF0DE
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
-_080FF0DE:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- ble _080FF0EC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FF0EC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FF090
-
- thumb_func_start sub_80FF0F4
-sub_80FF0F4: @ 80FF0F4
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080FF114
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080FF114:
- ldr r6, =gBattleAnimArgs
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x2E]
- movs r1, 0xC
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080FF154
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x4]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x6]
- adds r0, r6
- b _080FF174
- .pool
-_080FF154:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl SetAverageBattlerPositions
- ldrh r0, [r6, 0x4]
- ldrh r1, [r5, 0x32]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r6, 0x6]
- ldrh r1, [r5, 0x36]
- adds r0, r1
-_080FF174:
- strh r0, [r5, 0x36]
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0xA]
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl InitAnimArcTranslation
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080FF1AC
- movs r0, 0x1
- b _080FF1AE
- .pool
-_080FF1AC:
- movs r0, 0
-_080FF1AE:
- strh r0, [r5, 0x2E]
- ldr r0, =sub_80FF1C0
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF0F4
-
- thumb_func_start sub_80FF1C0
-sub_80FF1C0: @ 80FF1C0
- push {r4-r7,lr}
- adds r6, r0, 0
- movs r7, 0
- ldrh r5, [r6, 0x2E]
- ldrh r4, [r6, 0x3C]
- movs r0, 0x1
- strh r0, [r6, 0x2E]
- adds r0, r6, 0
- bl TranslateAnimArc
- ldrh r0, [r6, 0x3C]
- strh r5, [r6, 0x2E]
- lsls r4, 16
- asrs r4, 16
- cmp r4, 0xC8
- ble _080FF1F2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x37
- bgt _080FF1F2
- ldrh r0, [r6, 0x6]
- cmp r0, 0
- bne _080FF1F8
- adds r0, 0x1
- strh r0, [r6, 0x6]
-_080FF1F2:
- ldrh r0, [r6, 0x6]
- cmp r0, 0
- beq _080FF22A
-_080FF1F8:
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _080FF22A
- adds r3, r6, 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, [r6, 0x6]
- adds r0, 0x1
- strh r0, [r6, 0x6]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bne _080FF22A
- movs r7, 0x1
-_080FF22A:
- movs r2, 0x20
- ldrsh r0, [r6, r2]
- movs r2, 0x24
- ldrsh r1, [r6, r2]
- adds r0, r1
- adds r0, 0x10
- movs r1, 0x88
- lsls r1, 1
- cmp r0, r1
- bhi _080FF254
- movs r0, 0x22
- ldrsh r1, [r6, r0]
- movs r2, 0x26
- ldrsh r0, [r6, r2]
- adds r1, r0
- cmp r1, 0xA0
- bgt _080FF254
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _080FF256
-_080FF254:
- movs r7, 0x1
-_080FF256:
- cmp r7, 0
- beq _080FF260
- adds r0, r6, 0
- bl DestroyAnimSprite
-_080FF260:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80FF1C0
-
- thumb_func_start AnimMoveTwisterParticle
-AnimMoveTwisterParticle: @ 80FF268
- push {r4,lr}
- adds r4, r0, 0
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080FF28A
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0x1
- bl SetAverageBattlerPositions
-_080FF28A:
- ldrh r0, [r4, 0x22]
- adds r0, 0x20
- strh r0, [r4, 0x22]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x36]
- ldr r0, =sub_80FF2BC
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimMoveTwisterParticle
-
- thumb_func_start sub_80FF2BC
-sub_80FF2BC: @ 80FF2BC
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0xFF
- bne _080FF2D2
- ldrh r0, [r4, 0x22]
- subs r0, 0x2
- strh r0, [r4, 0x22]
- b _080FF2E0
-_080FF2D2:
- cmp r0, 0
- ble _080FF2E0
- ldrh r0, [r4, 0x22]
- subs r0, 0x2
- strh r0, [r4, 0x22]
- subs r0, r1, 0x2
- strh r0, [r4, 0x30]
-_080FF2E0:
- ldrh r3, [r4, 0x32]
- ldrh r5, [r4, 0x38]
- adds r2, r3, r5
- strh r2, [r4, 0x38]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r5, 0x36
- ldrsh r0, [r4, r5]
- cmp r1, r0
- bge _080FF2F8
- adds r0, r2, r3
- strh r0, [r4, 0x38]
-_080FF2F8:
- ldrh r1, [r4, 0x38]
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r5, 0x38
- ldrsh r0, [r4, r5]
- movs r1, 0x5
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- bgt _080FF338
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A8328
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- b _080FF346
- .pool
-_080FF338:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A8328
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
-_080FF346:
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080FF36A
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FF36A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF2BC
-
- thumb_func_start sub_80FF374
-sub_80FF374: @ 80FF374
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0
- bl sub_80A6980
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r4, =gBattleAnimArgs
- ldrb r1, [r4, 0x4]
- adds r0, r5, 0
- bl StartSpriteAffineAnim
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x3A]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x3C]
- ldr r0, =sub_80FF3B0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF374
-
- thumb_func_start sub_80FF3B0
-sub_80FF3B0: @ 80FF3B0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _080FF3DA
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x2E]
- ldr r0, =sub_80FF3EC
- str r0, [r4, 0x1C]
-_080FF3DA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF3B0
-
- thumb_func_start sub_80FF3EC
-sub_80FF3EC: @ 80FF3EC
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080FF404
- ldrh r0, [r4, 0x2E]
- adds r0, 0xB
- b _080FF408
-_080FF404:
- ldrh r0, [r4, 0x2E]
- subs r0, 0xB
-_080FF408:
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080FF424
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x32]
-_080FF424:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FF452
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- cmp r0, 0
- ble _080FF44C
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- b _080FF452
-_080FF44C:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FF452:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FF3EC
-
- thumb_func_start sub_80FF458
-sub_80FF458: @ 80FF458
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, =gSprites
- mov r10, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r2, r10
- adds r7, r0, r2
- adds r0, r7, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _080FF498
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080FF51C
- .pool
-_080FF498:
- adds r0, r1, 0
- movs r1, 0x1
- bl sub_80A7270
- ldr r0, =gTasks
- lsls r6, r4, 2
- adds r6, r4
- lsls r6, 3
- adds r6, r0
- ldrb r0, [r7, 0x5]
- lsls r0, 28
- lsrs r0, 30
- strh r0, [r6, 0x24]
- ldr r0, =gBattleAnimTarget
- mov r9, r0
- ldrb r0, [r0]
- bl sub_80A8328
- movs r1, 0x3
- mov r8, r1
- mov r1, r8
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r7, 0x5]
- movs r5, 0xD
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x5]
- movs r0, 0x3
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- add r4, r10
- ldrb r0, [r4, 0x5]
- lsls r0, 28
- lsrs r0, 30
- strh r0, [r6, 0x26]
- mov r2, r9
- ldrb r1, [r2]
- movs r0, 0x2
- eors r0, r1
- bl sub_80A8328
- mov r1, r8
- ands r1, r0
- lsls r1, 2
- ldrb r0, [r4, 0x5]
- ands r5, r0
- orrs r5, r1
- strb r5, [r4, 0x5]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r6, 0x8]
- ldrh r0, [r1, 0x2]
- strh r0, [r6, 0xA]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r6, 0x1E]
- ldr r0, =sub_80FF53C
- str r0, [r6]
-_080FF51C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF458
-
- thumb_func_start sub_80FF53C
-sub_80FF53C: @ 80FF53C
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x8]
- ldrh r0, [r4, 0x1C]
- adds r1, r0
- strh r1, [r4, 0x1C]
- ldr r2, =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r5, r0, r2
- lsls r1, 16
- asrs r1, 24
- strh r1, [r5, 0x24]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080FF586
- ldrh r0, [r5, 0x24]
- negs r0, r0
- strh r0, [r5, 0x24]
-_080FF586:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x10
- strh r0, [r4, 0x1E]
- movs r0, 0x1E
- ldrsh r2, [r4, r0]
- adds r0, r6, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- adds r0, r6, 0
- bl sub_80A7E6C
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _080FF5B4
- strh r0, [r4, 0x8]
- ldr r0, =sub_80FF5CC
- str r0, [r4]
-_080FF5B4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF53C
-
- thumb_func_start sub_80FF5CC
-sub_80FF5CC: @ 80FF5CC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _080FF660
- ldr r0, =gTasks
- lsls r2, r3, 2
- adds r1, r2, r3
- lsls r1, 3
- adds r7, r1, r0
- movs r1, 0x8
- ldrsh r5, [r7, r1]
- adds r4, r0, 0
- cmp r5, 0
- bne _080FF674
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80A7344
- ldr r6, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r6
- strh r5, [r1, 0x24]
- strh r5, [r1, 0x26]
- movs r5, 0x3
- ldrh r2, [r7, 0x24]
- ands r2, r5
- lsls r2, 2
- ldrb r3, [r1, 0x5]
- movs r4, 0xD
- negs r4, r4
- adds r0, r4, 0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r0, 0x3
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrh r0, [r7, 0x26]
- ands r0, r5
- lsls r0, 2
- ldrb r2, [r1, 0x5]
- ands r4, r2
- orrs r4, r0
- strb r4, [r1, 0x5]
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- b _080FF68E
- .pool
-_080FF660:
- ldr r1, =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r0, r1
- movs r4, 0x8
- ldrsh r0, [r0, r4]
- adds r4, r1, 0
- cmp r0, 0
- beq _080FF68E
-_080FF674:
- adds r1, r2, r3
- lsls r1, 3
- adds r1, r4
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080FF68E
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080FF68E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF5CC
-
- thumb_func_start sub_80FF698
-sub_80FF698: @ 80FF698
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080FF6AA
- cmp r0, 0x1
- beq _080FF704
- b _080FF756
-_080FF6AA:
- ldr r6, =gBattleAnimTarget
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080FF6C2
- ldr r1, =gBattleAnimArgs
- movs r2, 0
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1]
-_080FF6C2:
- ldrb r0, [r6]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r5, 0x22]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080FF756
- .pool
-_080FF704:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FF756
- adds r0, r5, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
- movs r0, 0x19
- strh r0, [r5, 0x2E]
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, =sub_80A70C0
- str r0, [r5, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
-_080FF756:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF698
-
- thumb_func_start sub_80FF768
-sub_80FF768: @ 80FF768
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080FF7D4
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, =gBattleAnimArgs
- ldrh r0, [r4]
- strh r0, [r5, 0x24]
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x26]
- ldrb r0, [r4, 0x4]
- adds r0, 0x1E
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r4, 0x6]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- movs r2, 0x22
- ldrsh r0, [r5, r2]
- movs r2, 0x26
- ldrsh r1, [r5, r2]
- adds r0, r1
- cmp r0, 0x78
- ble _080FF7D4
- ldrh r0, [r5, 0x22]
- adds r1, r0, 0
- subs r1, 0x78
- ldrh r2, [r5, 0x26]
- adds r0, r2
- adds r1, r0
- strh r1, [r5, 0x22]
-_080FF7D4:
- ldr r0, =sub_80FF8DC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF768
-
- thumb_func_start sub_80FF7EC
-sub_80FF7EC: @ 80FF7EC
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x4
- mov r9, r0
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r6, =gBattleAnimTarget
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r2, r0, 0
- lsls r2, 24
- subs r4, r5
- lsls r4, 16
- lsrs r2, 24
- mov r1, r8
- subs r2, r1
- lsls r2, 16
- lsrs r2, 16
- lsrs r3, r4, 16
- mov r10, r3
- asrs r4, 16
- ldr r6, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- muls r0, r4
- movs r1, 0x64
- str r2, [sp]
- bl __divsi3
- adds r5, r0
- mov r3, r9
- strh r5, [r3, 0x20]
- ldr r2, [sp]
- lsls r0, r2, 16
- asrs r0, 16
- movs r3, 0
- ldrsh r1, [r6, r3]
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- add r8, r0
- mov r1, r8
- mov r0, r9
- strh r1, [r0, 0x22]
- ldrh r0, [r6, 0x2]
- mov r3, r9
- strh r0, [r3, 0x24]
- ldrh r0, [r6, 0x4]
- strh r0, [r3, 0x26]
- ldrb r0, [r6, 0x6]
- adds r0, 0x1E
- mov r1, r9
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r6, 0x8]
- mov r0, r9
- bl StartSpriteAnim
- ldrh r0, [r6, 0xA]
- mov r1, r9
- strh r0, [r1, 0x32]
- ldr r0, =sub_80FF8DC
- str r0, [r1, 0x1C]
- ldr r1, =gUnknown_0203A0F8
- mov r3, r9
- ldrh r0, [r3, 0x20]
- strh r0, [r1]
- ldrh r0, [r3, 0x22]
- strh r0, [r1, 0x2]
- mov r0, r10
- strh r0, [r1, 0x4]
- ldr r2, [sp]
- strh r2, [r1, 0x6]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF7EC
-
- thumb_func_start sub_80FF8DC
-sub_80FF8DC: @ 80FF8DC
- push {lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x2E]
- adds r1, 0x1
- strh r1, [r3, 0x2E]
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x32
- ldrsh r0, [r3, r2]
- subs r0, 0xA
- cmp r1, r0
- ble _080FF91C
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- movs r2, 0x3E
- adds r2, r3
- mov r12, r2
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
-_080FF91C:
- movs r2, 0x2E
- ldrsh r1, [r3, r2]
- movs r2, 0x32
- ldrsh r0, [r3, r2]
- cmp r1, r0
- ble _080FF92E
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080FF92E:
- pop {r0}
- bx r0
- thumb_func_end sub_80FF8DC
-
- thumb_func_start sub_80FF934
-sub_80FF934: @ 80FF934
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080FF974
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r2, [r4]
- adds r0, r2
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x30]
- ldrh r0, [r4, 0x6]
- strh r0, [r6, 0x32]
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x34]
-_080FF974:
- ldrh r0, [r6, 0x2E]
- adds r0, 0x1
- strh r0, [r6, 0x2E]
- ldrh r1, [r6, 0x30]
- muls r0, r1
- strh r0, [r6, 0x24]
- movs r2, 0x2E
- ldrsh r1, [r6, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- movs r1, 0xFF
- ands r0, r1
- movs r2, 0x32
- ldrsh r1, [r6, r2]
- bl Sin
- strh r0, [r6, 0x26]
- movs r0, 0x2E
- ldrsh r1, [r6, r0]
- movs r2, 0x34
- ldrsh r0, [r6, r2]
- cmp r1, r0
- ble _080FF9AA
- adds r0, r6, 0
- bl DestroyAnimSprite
-_080FF9AA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FF934
-
- thumb_func_start sub_80FF9B8
-sub_80FF9B8: @ 80FF9B8
- push {r4,r5,lr}
- movs r2, 0x20
- ldrsh r4, [r0, r2]
- lsls r4, 8
- movs r3, 0x22
- ldrsh r2, [r0, r3]
- orrs r4, r2
- movs r5, 0x3A
- ldrsh r2, [r0, r5]
- lsls r2, 8
- movs r5, 0x3C
- ldrsh r3, [r0, r5]
- orrs r2, r3
- lsls r1, 8
- strh r4, [r0, 0x38]
- strh r2, [r0, 0x3A]
- strh r1, [r0, 0x3C]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FF9B8
-
- thumb_func_start sub_80FF9E0
-sub_80FF9E0: @ 80FF9E0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r8, r0
- ldrh r0, [r0, 0x38]
- lsrs r1, r0, 8
- mov r10, r1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- mov r1, r8
- ldrh r0, [r1, 0x3A]
- lsrs r2, r0, 8
- lsls r0, 24
- lsrs r4, r0, 24
- ldrh r1, [r1, 0x3C]
- lsls r0, r1, 16
- asrs r0, 24
- lsls r0, 16
- lsrs r6, r0, 16
- movs r3, 0xFF
- ands r3, r1
- cmp r2, 0
- bne _080FFA1A
- movs r2, 0x20
- negs r2, r2
- b _080FFA22
-_080FFA1A:
- cmp r2, 0xFF
- bne _080FFA22
- movs r2, 0x88
- lsls r2, 1
-_080FFA22:
- mov r0, r9
- subs r4, r0
- lsls r4, 16
- lsrs r4, 16
- mov r1, r10
- subs r0, r2, r1
- lsls r5, r3, 16
- asrs r5, 16
- muls r0, r5
- lsls r1, r6, 16
- asrs r7, r1, 16
- adds r1, r7, 0
- bl __divsi3
- adds r6, r0, 0
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- muls r0, r5
- adds r1, r7, 0
- bl __divsi3
- add r6, r10
- mov r1, r8
- strh r6, [r1, 0x20]
- add r0, r9
- strh r0, [r1, 0x22]
- adds r5, 0x1
- lsls r5, 16
- lsrs r3, r5, 16
- asrs r5, 16
- cmp r5, r7
- beq _080FFA74
- lsls r1, r7, 8
- lsls r0, r3, 16
- asrs r0, 16
- orrs r0, r1
- mov r1, r8
- strh r0, [r1, 0x3C]
- movs r0, 0
- b _080FFA76
-_080FFA74:
- movs r0, 0x1
-_080FFA76:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80FF9E0
-
- thumb_func_start sub_80FFA84
-sub_80FFA84: @ 80FFA84
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _080FFA98
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080FFA98:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x32
- ble _080FFAAC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FFAAC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FFA84
-
- thumb_func_start sub_80FFAB4
-sub_80FFAB4: @ 80FFAB4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 7
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- ldrh r1, [r4, 0x2E]
- adds r1, r0
- movs r5, 0
- strh r1, [r4, 0x2E]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _080FFADE
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x2E]
-_080FFADE:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x30
- ldrsh r2, [r4, r1]
- lsls r2, 3
- movs r1, 0x1E
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- bl sub_80FF9E0
- lsls r0, 24
- cmp r0, 0
- beq _080FFB0E
- strh r5, [r4, 0x26]
- strh r5, [r4, 0x2E]
- ldr r0, =sub_80FFA84
- str r0, [r4, 0x1C]
-_080FFB0E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FFAB4
-
- thumb_func_start sub_80FFB18
-sub_80FFB18: @ 80FFB18
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0
- bl InitAnimSpritePos
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gBattleAnimAttacker
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- ldrb r4, [r4]
- cmp r0, r4
- bne _080FFB68
- strh r6, [r5, 0x3A]
- adds r0, r2, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3C
- bl sub_80FF9B8
- movs r0, 0x1
- b _080FFB7A
- .pool
-_080FFB68:
- strh r6, [r5, 0x3A]
- adds r0, r2, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3C
- bl sub_80FF9B8
- movs r0, 0x3
-_080FFB7A:
- strh r0, [r5, 0x34]
- movs r0, 0x3C
- strh r0, [r5, 0x36]
- ldr r0, =sub_80FFAB4
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FFB18
-
- thumb_func_start sub_80FFB90
-sub_80FFB90: @ 80FFB90
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 7
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- ldrh r1, [r4, 0x2E]
- adds r1, r0
- movs r5, 0
- strh r1, [r4, 0x2E]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _080FFBBA
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x2E]
-_080FFBBA:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x30
- ldrsh r2, [r4, r1]
- lsls r2, 3
- movs r1, 0x1E
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- bl sub_80FF9E0
- lsls r0, 24
- cmp r0, 0
- beq _080FFBEC
- strh r5, [r4, 0x26]
- strh r5, [r4, 0x2E]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FFBEC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FFB90
-
- thumb_func_start sub_80FFBF4
-sub_80FFBF4: @ 80FFBF4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080FFC38
- strh r0, [r5, 0x3A]
- adds r0, r6, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x28
- bl sub_80FF9B8
- movs r0, 0x3
- strh r0, [r5, 0x34]
- movs r0, 0x3C
- strh r0, [r5, 0x36]
- ldr r0, =sub_80FFAB4
- b _080FFC62
- .pool
-_080FFC38:
- movs r0, 0xFF
- strh r0, [r5, 0x3A]
- adds r0, r6, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080FFC50
- movs r0, 0
- strh r0, [r5, 0x3A]
-_080FFC50:
- adds r0, r5, 0
- movs r1, 0x28
- bl sub_80FF9B8
- movs r0, 0x3
- strh r0, [r5, 0x34]
- movs r0, 0x3C
- strh r0, [r5, 0x36]
- ldr r0, =sub_80FFB90
-_080FFC62:
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FFBF4
-
- thumb_func_start sub_80FFC70
-sub_80FFC70: @ 80FFC70
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080FFC8A
- adds r0, r4, 0
- movs r1, 0
- bl sub_80A6980
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x30]
-_080FFC8A:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- muls r0, r1
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080FFCAA
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FFCAA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FFC70
-
- thumb_func_start sub_80FFCB4
-sub_80FFCB4: @ 80FFCB4
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0
- bl sub_80A6980
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gBattleAnimTarget
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- ldrb r4, [r4]
- cmp r0, r4
- bne _080FFD04
- strh r6, [r5, 0x3A]
- adds r0, r2, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3C
- bl sub_80FF9B8
- movs r0, 0x1
- b _080FFD16
- .pool
-_080FFD04:
- strh r6, [r5, 0x3A]
- adds r0, r2, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3C
- bl sub_80FF9B8
- movs r0, 0x3
-_080FFD16:
- strh r0, [r5, 0x34]
- movs r0, 0x3C
- strh r0, [r5, 0x36]
- ldr r0, =sub_80FFD2C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FFCB4
-
- thumb_func_start sub_80FFD2C
-sub_80FFD2C: @ 80FFD2C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 7
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- ldrh r1, [r4, 0x2E]
- adds r1, r0
- movs r5, 0
- strh r1, [r4, 0x2E]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _080FFD56
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x2E]
-_080FFD56:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x30
- ldrsh r2, [r4, r1]
- lsls r2, 3
- movs r1, 0x1E
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x26]
- lsls r0, 16
- cmp r0, 0
- bne _080FFD8A
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x7D
- bl PlaySE12WithPanning
-_080FFD8A:
- adds r0, r4, 0
- bl sub_80FF9E0
- lsls r0, 24
- cmp r0, 0
- beq _080FFDB2
- strh r5, [r4, 0x26]
- strh r5, [r4, 0x2E]
- ldr r0, =sub_80FFA84
- str r0, [r4, 0x1C]
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x7D
- bl PlaySE12WithPanning
-_080FFDB2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FFD2C
-
- thumb_func_start sub_80FFDBC
-sub_80FFDBC: @ 80FFDBC
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080FFE50
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080FFDE4
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0x2]
- strh r1, [r4, 0x30]
- movs r1, 0x78
- strh r1, [r4, 0x20]
- adds r5, r0, 0
- b _080FFE06
- .pool
-_080FFDE4:
- ldr r0, =gBattleAnimArgs
- movs r1, 0x2
- ldrsh r3, [r0, r1]
- adds r1, r3, 0
- subs r1, 0x20
- adds r2, r1, 0
- adds r5, r0, 0
- cmp r1, 0
- bge _080FFDFA
- adds r2, r3, 0
- adds r2, 0xDF
-_080FFDFA:
- asrs r0, r2, 8
- lsls r0, 8
- subs r0, r1, r0
- strh r0, [r4, 0x30]
- movs r0, 0x46
- strh r0, [r4, 0x20]
-_080FFE06:
- ldrh r0, [r5]
- strh r0, [r4, 0x22]
- strh r0, [r4, 0x32]
- movs r0, 0x14
- strh r0, [r4, 0x36]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x3C
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x14
- bl Sin
- strh r0, [r4, 0x26]
- ldr r0, =sub_80FFE58
- str r0, [r4, 0x1C]
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xBE
- bhi _080FFE48
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1F
- b _080FFE4E
- .pool
-_080FFE48:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1D
-_080FFE4E:
- strb r0, [r1]
-_080FFE50:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FFDBC
-
- thumb_func_start sub_80FFE58
-sub_80FFE58: @ 80FFE58
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080FFE6A
- cmp r0, 0x1
- beq _080FFE9A
- b _080FFEBA
-_080FFE6A:
- ldrh r5, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x4E
- ble _080FFE82
- movs r0, 0x1
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _080FFEBA
-_080FFE82:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- adds r0, r5, r0
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x36]
- adds r1, 0x3
- strh r1, [r4, 0x36]
- strh r0, [r4, 0x22]
- b _080FFEBA
-_080FFE9A:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080FFEBA
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FFEBA
- movs r0, 0
- strh r0, [r4, 0x2E]
- strh r0, [r4, 0x32]
- ldr r0, =sub_80FFEC4
- str r0, [r4, 0x1C]
-_080FFEBA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FFE58
-
- thumb_func_start sub_80FFEC4
-sub_80FFEC4: @ 80FFEC4
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, =gUnknown_08592700
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 1
- adds r3, r0, r1
- adds r0, r5, 0x1
- adds r0, r3, r0
- ldrh r2, [r4, 0x32]
- movs r6, 0x32
- ldrsh r1, [r4, r6]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r1, r0
- bne _080FFF10
- adds r0, r5, 0x2
- adds r0, r3, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x7F
- bne _080FFEFC
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, =sub_80FFF7C
- str r0, [r4, 0x1C]
-_080FFEFC:
- movs r0, 0
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080FFF76
- .pool
-_080FFF10:
- adds r0, r2, 0x1
- strh r0, [r4, 0x32]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 1
- adds r0, r1
- adds r1, r0, r5
- movs r2, 0
- ldrsb r2, [r1, r2]
- adds r1, r5, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- muls r0, r2
- ldrh r1, [r4, 0x30]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080FFF5E
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xBE
- bhi _080FFF56
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1F
- b _080FFF5C
-_080FFF56:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1D
-_080FFF5C:
- strb r0, [r1]
-_080FFF5E:
- movs r6, 0x30
- ldrsh r0, [r4, r6]
- movs r1, 0x3C
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x14
- bl Sin
- strh r0, [r4, 0x26]
-_080FFF76:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80FFEC4
-
- thumb_func_start sub_80FFF7C
-sub_80FFF7C: @ 80FFF7C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x14
- ble _080FFF8E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080FFF8E:
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FFF7C
-
- thumb_func_start sub_80FFFC0
-sub_80FFFC0: @ 80FFFC0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- strh r0, [r5, 0x10]
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x14]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x16]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_80A861C
- strh r0, [r5, 0x1C]
- ldrb r0, [r4]
- movs r1, 0
- bl sub_80A861C
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0x1
- bne _08100028
- movs r1, 0x1
-_08100028:
- strh r1, [r5, 0x12]
- movs r3, 0x12
- ldrsh r0, [r5, r3]
- lsls r0, 6
- movs r1, 0x38
- subs r1, r0
- strh r1, [r5, 0x1A]
- ldrh r0, [r5, 0x16]
- subs r0, r1
- ldrh r1, [r5, 0x14]
- adds r0, r1
- strh r0, [r5, 0x18]
- ldr r0, =gUnknown_08592778
- movs r2, 0x18
- ldrsh r1, [r5, r2]
- movs r3, 0x1A
- ldrsh r2, [r5, r3]
- ldrb r3, [r5, 0x10]
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xC]
- cmp r0, 0x40
- bne _08100060
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_08100060:
- ldr r4, =gSprites
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xA
- strh r1, [r0, 0x2E]
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x18]
- strh r1, [r0, 0x30]
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r5, r3]
- muls r1, r0
- ldrh r0, [r5, 0x14]
- subs r0, r1
- strh r0, [r2, 0x32]
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x1A]
- strh r1, [r0, 0x34]
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- movs r2, 0x1E
- ldrsh r0, [r5, r2]
- lsrs r2, r0, 31
- adds r0, r2
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r2, [r5, r3]
- muls r0, r2
- ldrh r2, [r5, 0x16]
- adds r0, r2
- strh r0, [r1, 0x36]
- movs r3, 0xC
- ldrsh r1, [r5, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl sub_8100504
- movs r1, 0xC
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x38]
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl InitAnimArcTranslation
- ldr r0, =sub_8100128
- str r0, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FFFC0
-
- thumb_func_start sub_8100128
-sub_8100128: @ 8100128
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r6, r0, r1
- movs r0, 0xC
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r5, [r6, r1]
- cmp r5, 0x7
- bne _08100150
- b _08100380
-_08100150:
- cmp r5, 0x7
- bgt _0810019E
- cmp r5, 0x3
- bne _0810015A
- b _08100272
-_0810015A:
- cmp r5, 0x3
- bgt _08100174
- cmp r5, 0x1
- beq _08100204
- cmp r5, 0x1
- bgt _08100254
- cmp r5, 0
- beq _081001E6
- b _081004FC
- .pool
-_08100174:
- cmp r5, 0x5
- bne _0810017A
- b _081002E8
-_0810017A:
- cmp r5, 0x5
- ble _08100180
- b _08100362
-_08100180:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_8100524
- adds r0, r4, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- bne _08100196
- b _081004FC
-_08100196:
- movs r0, 0x5
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _081004FA
-_0810019E:
- cmp r5, 0xB
- bne _081001A4
- b _08100464
-_081001A4:
- cmp r5, 0xB
- bgt _081001D2
- cmp r5, 0x9
- bne _081001AE
- b _081003D2
-_081001AE:
- cmp r5, 0x9
- ble _081001B4
- b _08100448
-_081001B4:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_8100524
- adds r0, r4, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- bne _081001CA
- b _081004FC
-_081001CA:
- movs r0, 0x9
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _081004FA
-_081001D2:
- cmp r5, 0xD
- bne _081001D8
- b _081004D6
-_081001D8:
- cmp r5, 0xD
- bge _081001DE
- b _081004B6
-_081001DE:
- cmp r5, 0xFF
- bne _081001E4
- b _081004E6
-_081001E4:
- b _081004FC
-_081001E6:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_8100524
- adds r0, r4, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- bne _081001FC
- b _081004FC
-_081001FC:
- movs r0, 0x1
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _081004FA
-_08100204:
- ldrh r2, [r4, 0x24]
- ldrh r3, [r4, 0x20]
- adds r2, r3
- movs r0, 0
- strh r2, [r4, 0x20]
- ldrh r1, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r1, r3
- strh r1, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r2, [r4, 0x30]
- ldrh r0, [r6, 0x14]
- strh r0, [r4, 0x32]
- strh r1, [r4, 0x34]
- ldrh r0, [r6, 0x16]
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_8100504
- strh r0, [r4, 0x38]
- ldrh r0, [r6, 0x10]
- adds r0, 0x2
- strh r0, [r6, 0x10]
- strh r5, [r6, 0xE]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _081004FA
-_08100254:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_8100524
- adds r0, r4, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- bne _0810026A
- b _081004FC
-_0810026A:
- movs r0, 0x3
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _081004FA
-_08100272:
- ldrh r1, [r4, 0x24]
- ldrh r0, [r4, 0x20]
- adds r1, r0
- movs r0, 0
- strh r1, [r4, 0x20]
- ldrh r2, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r2, r3
- strh r2, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r6, r3]
- muls r1, r0
- ldrh r0, [r6, 0x14]
- subs r0, r1
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x34]
- movs r1, 0x1E
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r2, 0x12
- ldrsh r1, [r6, r2]
- muls r1, r0
- ldrh r0, [r6, 0x16]
- subs r0, r1
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_8100504
- strh r0, [r4, 0x38]
- movs r0, 0x2
- strh r0, [r6, 0xE]
- ldrh r0, [r6, 0x10]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _081004FA
-_081002E8:
- ldrh r1, [r4, 0x24]
- ldrh r3, [r4, 0x20]
- adds r1, r3
- movs r0, 0
- strh r1, [r4, 0x20]
- ldrh r2, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r2, r3
- strh r2, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r6, r3]
- muls r0, r1
- ldrh r1, [r6, 0x14]
- adds r0, r1
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x34]
- movs r2, 0x1E
- ldrsh r0, [r6, r2]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r6, r3]
- muls r0, r1
- ldrh r1, [r6, 0x16]
- adds r0, r1
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_8100504
- strh r0, [r4, 0x38]
- ldrh r1, [r6, 0x10]
- subs r1, 0x2
- strh r1, [r6, 0x10]
- movs r0, 0x3
- strh r0, [r6, 0xE]
- adds r0, r4, 0
- adds r0, 0x43
- strb r1, [r0]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _081004FA
-_08100362:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_8100524
- adds r0, r4, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- bne _08100378
- b _081004FC
-_08100378:
- movs r0, 0x7
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _081004FA
-_08100380:
- ldrh r2, [r4, 0x24]
- ldrh r3, [r4, 0x20]
- adds r2, r3
- movs r0, 0
- strh r2, [r4, 0x20]
- ldrh r1, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r1, r3
- strh r1, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r2, [r4, 0x30]
- ldrh r0, [r6, 0x14]
- strh r0, [r4, 0x32]
- strh r1, [r4, 0x34]
- ldrh r0, [r6, 0x16]
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_8100504
- strh r0, [r4, 0x38]
- ldrh r1, [r6, 0x10]
- adds r1, 0x2
- strh r1, [r6, 0x10]
- movs r0, 0x4
- strh r0, [r6, 0xE]
- adds r0, r4, 0
- adds r0, 0x43
- strb r1, [r0]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _081004FA
-_081003D2:
- ldrh r1, [r4, 0x24]
- ldrh r0, [r4, 0x20]
- adds r1, r0
- movs r0, 0
- strh r1, [r4, 0x20]
- ldrh r2, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r2, r3
- strh r2, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r6, r3]
- muls r1, r0
- ldrh r0, [r6, 0x14]
- subs r0, r1
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x34]
- movs r1, 0x1E
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r2, 0x12
- ldrsh r1, [r6, r2]
- muls r0, r1
- ldrh r3, [r6, 0x16]
- adds r0, r3
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_8100504
- strh r0, [r4, 0x38]
- movs r0, 0x5
- strh r0, [r6, 0xE]
- ldrh r0, [r6, 0x10]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _081004FA
-_08100448:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_8100524
- adds r0, r4, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _081004FC
- movs r0, 0xB
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _081004FA
-_08100464:
- ldrh r2, [r4, 0x24]
- ldrh r0, [r4, 0x20]
- adds r2, r0
- movs r0, 0
- strh r2, [r4, 0x20]
- ldrh r1, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r1, r3
- strh r1, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r2, [r4, 0x30]
- ldrh r0, [r6, 0x18]
- strh r0, [r4, 0x32]
- strh r1, [r4, 0x34]
- ldrh r0, [r6, 0x1A]
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_8100504
- strh r0, [r4, 0x38]
- ldrh r1, [r6, 0x10]
- subs r1, 0x2
- strh r1, [r6, 0x10]
- movs r0, 0x6
- strh r0, [r6, 0xE]
- adds r0, r4, 0
- adds r0, 0x43
- strb r1, [r0]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _081004FA
-_081004B6:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_8100524
- adds r0, r4, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _081004FC
- adds r0, r4, 0
- bl DestroySprite
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _081004FA
-_081004D6:
- movs r1, 0x20
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _081004FC
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _081004FC
-_081004E6:
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _081004FC
- movs r0, 0
- strh r0, [r6, 0xA]
- ldrh r0, [r6, 0x26]
-_081004FA:
- strh r0, [r6, 0x8]
-_081004FC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8100128
-
- thumb_func_start sub_8100504
-sub_8100504: @ 8100504
- push {lr}
- movs r2, 0x8
- movs r3, 0x36
- ldrsh r1, [r0, r3]
- movs r3, 0x22
- ldrsh r0, [r0, r3]
- cmp r1, r0
- bge _0810051A
- negs r0, r2
- lsls r0, 16
- lsrs r2, r0, 16
-_0810051A:
- lsls r0, r2, 16
- asrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8100504
-
- thumb_func_start sub_8100524
-sub_8100524: @ 8100524
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- ldrh r0, [r6, 0x24]
- adds r0, 0x1
- strh r0, [r6, 0x24]
- lsls r0, 16
- cmp r0, 0
- ble _081005BA
- movs r0, 0
- strh r0, [r6, 0x24]
- ldr r0, =gSprites
- mov r8, r0
- movs r2, 0xC
- ldrsh r1, [r6, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrh r1, [r0, 0x24]
- ldrh r2, [r0, 0x20]
- adds r1, r2
- ldrh r2, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r2, r0
- ldr r0, =gUnknown_08592778
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- ldrb r3, [r6, 0x10]
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081005BA
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- mov r0, r8
- adds r4, r5, r0
- strh r7, [r4, 0x3A]
- movs r0, 0xC
- strh r0, [r4, 0x3C]
- ldr r0, =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- ldrh r2, [r6, 0x22]
- movs r0, 0x1
- ands r0, r2
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x22]
- adds r0, 0x1
- strh r0, [r1, 0x22]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r6, 0x10]
- adds r4, 0x43
- strb r0, [r4]
- mov r0, r8
- adds r0, 0x1C
- adds r5, r0
- ldr r0, =sub_81005D4
- str r0, [r5]
-_081005BA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100524
-
- thumb_func_start sub_81005D4
-sub_81005D4: @ 81005D4
- 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, 0x1
- ble _08100636
- movs r0, 0
- strh r0, [r4, 0x2E]
- 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]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _08100636
- ldr r3, =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_08100636:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81005D4
-
- thumb_func_start sub_8100640
-sub_8100640: @ 8100640
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0810065C
- ldr r0, =gBattleAnimAttacker
- b _0810065E
- .pool
-_0810065C:
- ldr r0, =gBattleAnimTarget
-_0810065E:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08100688
- movs r0, 0
- strh r0, [r4, 0x36]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x32]
- ldr r0, =0x0000fff0
- b _08100698
- .pool
-_08100688:
- movs r0, 0x1
- strh r0, [r4, 0x36]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r4, 0x32]
- movs r0, 0x80
- lsls r0, 1
-_08100698:
- strh r0, [r4, 0x20]
- adds r7, r1, 0
- adds r5, r7, 0
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x34]
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _081006CE
- cmp r0, 0x1
- bgt _081006C0
- cmp r0, 0
- beq _081006CA
- b _08100738
- .pool
-_081006C0:
- cmp r0, 0x2
- beq _081006D4
- cmp r0, 0x3
- beq _08100700
- b _08100738
-_081006CA:
- ldrh r0, [r5]
- b _081006E4
-_081006CE:
- ldrh r0, [r5]
- strh r0, [r4, 0x22]
- b _0810071A
-_081006D4:
- adds r0, r6, 0
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5]
- adds r0, r5
-_081006E4:
- strh r0, [r4, 0x22]
- adds r0, r6, 0
- bl sub_80A8328
- 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]
- b _08100738
-_08100700:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r7, [r7]
- adds r0, r7
- strh r0, [r4, 0x22]
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
-_0810071A:
- adds r0, r6, 0
- bl sub_80A8328
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
-_08100738:
- ldr r0, =sub_810074C
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100640
-
- thumb_func_start sub_810074C
-sub_810074C: @ 810074C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x3C
- ldrsh r3, [r4, r0]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- movs r1, 0x30
- ldrsh r2, [r4, r1]
- ldr r1, =gSineTable
- movs r5, 0x2E
- ldrsh r0, [r4, r5]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- muls r0, r2
- asrs r0, 8
- strh r0, [r4, 0x26]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- muls r0, r3
- strh r0, [r4, 0x24]
- movs r5, 0x34
- ldrsh r0, [r4, r5]
- muls r0, r3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081007A4
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- movs r5, 0x20
- ldrsh r1, [r4, r5]
- adds r0, r1
- cmp r0, 0xF7
- ble _081007BC
- b _081007B6
- .pool
-_081007A4:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- movs r2, 0x20
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x10
- negs r1, r1
- cmp r0, r1
- bgt _081007BC
-_081007B6:
- adds r0, r4, 0
- bl move_anim_8074EE0
-_081007BC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810074C
-
- thumb_func_start sub_81007C4
-sub_81007C4: @ 81007C4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _081007E8
- cmp r0, 0x1
- beq _0810081C
- b _08100876
- .pool
-_081007E8:
- ldr r0, =0x0000274f
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r2, 0x80
- lsls r2, 1
- adds r4, r2, 0
- adds r0, r4
- strh r0, [r5, 0x18]
- ldr r0, =0x000027b0
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- adds r0, r4
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _08100876
- .pool
-_0810081C:
- ldrh r0, [r5, 0x1A]
- adds r0, 0x1
- movs r7, 0
- strh r0, [r5, 0x1A]
- lsls r0, 16
- cmp r0, 0
- blt _08100876
- strh r7, [r5, 0x1A]
- ldrh r0, [r5, 0x18]
- ldrb r2, [r5, 0x1C]
- ldr r4, =gUnknown_08592878
- movs r3, 0x1E
- ldrsh r1, [r5, r3]
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r5, 0x20]
- ldrb r2, [r5, 0x1C]
- movs r3, 0x1E
- ldrsh r1, [r5, r3]
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x11
- bne _08100876
- strh r7, [r5, 0x1C]
- ldrh r0, [r5, 0x1E]
- adds r0, 0x1
- strh r0, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- bne _08100876
- strh r7, [r5, 0x1E]
-_08100876:
- ldr r0, =gBattleAnimArgs
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _0810088A
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_0810088A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81007C4
-
- thumb_func_start sub_8100898
-sub_8100898: @ 8100898
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r1, =gBattleAnimArgs
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _081008B4
- adds r0, r6, 0
- bl DestroyAnimSprite
- b _0810098E
- .pool
-_081008B4:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _081008C4
- ldr r4, =gBattleAnimAttacker
- b _081008C6
- .pool
-_081008C4:
- ldr r4, =gBattleAnimTarget
-_081008C6:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0x8]
- strh r1, [r6, 0x2E]
- movs r3, 0x2
- ldrsh r1, [r0, r3]
- adds r7, r0, 0
- cmp r1, 0
- bne _08100908
- ldrh r0, [r7, 0x4]
- adds r0, r5
- strh r0, [r6, 0x20]
- ldrh r0, [r7, 0x6]
- adds r0, r2
- strh r0, [r6, 0x22]
- strh r5, [r6, 0x38]
- strh r2, [r6, 0x3A]
- b _08100918
- .pool
-_08100908:
- strh r5, [r6, 0x20]
- strh r2, [r6, 0x22]
- ldrh r0, [r7, 0x4]
- adds r0, r5
- strh r0, [r6, 0x38]
- ldrh r0, [r7, 0x6]
- adds r0, r2
- strh r0, [r6, 0x3A]
-_08100918:
- ldrh r4, [r6, 0x20]
- lsls r0, r4, 4
- strh r0, [r6, 0x30]
- ldrh r5, [r6, 0x22]
- lsls r0, r5, 4
- strh r0, [r6, 0x32]
- movs r1, 0x38
- ldrsh r0, [r6, r1]
- movs r2, 0x20
- ldrsh r1, [r6, r2]
- subs r0, r1
- lsls r0, 4
- movs r3, 0x8
- ldrsh r1, [r7, r3]
- bl __divsi3
- strh r0, [r6, 0x34]
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r2, 0x22
- ldrsh r1, [r6, r2]
- subs r0, r1
- lsls r0, 4
- movs r3, 0x8
- ldrsh r1, [r7, r3]
- bl __divsi3
- strh r0, [r6, 0x36]
- ldrh r0, [r6, 0x38]
- subs r0, r4
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r6, 0x3A]
- subs r1, r5
- lsls r1, 16
- asrs r1, 16
- bl ArcTan2Neg
- lsls r0, 16
- lsrs r4, r0, 16
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0810097A
- ldr r1, =0xffff8000
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
-_0810097A:
- movs r3, 0x80
- lsls r3, 1
- str r4, [sp]
- adds r0, r6, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_80A73E0
- ldr r0, =sub_81009A0
- str r0, [r6, 0x1C]
-_0810098E:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100898
-
- thumb_func_start sub_81009A0
-sub_81009A0: @ 81009A0
- push {r4,lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _081009D0
- ldrh r0, [r2, 0x34]
- ldrh r4, [r2, 0x30]
- adds r0, r4
- strh r0, [r2, 0x30]
- ldrh r1, [r2, 0x36]
- ldrh r4, [r2, 0x32]
- adds r1, r4
- strh r1, [r2, 0x32]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r2, 0x22]
- subs r0, r3, 0x1
- strh r0, [r2, 0x2E]
- b _081009D6
-_081009D0:
- adds r0, r2, 0
- bl move_anim_8074EE0
-_081009D6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81009A0
-
- thumb_func_start sub_81009DC
-sub_81009DC: @ 81009DC
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081009F2
- adds r0, r2, 0
- bl DestroyAnimSprite
-_081009F2:
- pop {r0}
- bx r0
- thumb_func_end sub_81009DC
-
- thumb_func_start sub_81009F8
-sub_81009F8: @ 81009F8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08100A20
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- b _08100A2C
- .pool
-_08100A20:
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
-_08100A2C:
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, =sub_80A67D8
- str r0, [r4, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81009F8
-
- thumb_func_start sub_8100A50
-sub_8100A50: @ 8100A50
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08100A6A
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_08100A6A:
- ldr r0, =sub_81009DC
- str r0, [r5, 0x1C]
- ldr r4, =gBattleAnimArgs
- movs r0, 0
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_80A6864
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100A50
-
- thumb_func_start sub_8100A94
-sub_8100A94: @ 8100A94
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x38]
- ldrb r1, [r1, 0xC]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- ldr r1, =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A66DC
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100A94
-
- thumb_func_start sub_8100AE0
-sub_8100AE0: @ 8100AE0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08100B14
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r5, 0x22]
-_08100B14:
- ldr r0, =sub_8100CCC
- str r0, [r5, 0x1C]
- ldr r0, =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- adds r3, r0, 0
- cmp r1, 0
- bne _08100B3C
- ldrh r0, [r3]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- strh r0, [r5, 0x20]
- b _08100B50
- .pool
-_08100B3C:
- ldrh r0, [r5, 0x20]
- ldrh r1, [r3]
- subs r0, r1
- strh r0, [r5, 0x20]
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_08100B50:
- ldrh r0, [r3, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldr r1, =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r5, 0x30]
- adds r1, r0, r2
- strh r1, [r5, 0x30]
- movs r2, 0x80
- lsls r2, 3
- adds r0, r2, 0
- ldrh r2, [r5, 0x32]
- adds r0, r2
- strh r0, [r5, 0x32]
- ldrh r0, [r3, 0x4]
- strh r0, [r5, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _08100B7E
- negs r0, r1
- strh r0, [r5, 0x30]
-_08100B7E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100AE0
-
- thumb_func_start sub_8100B88
-sub_8100B88: @ 8100B88
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _08100BA8
- cmp r0, 0x1
- ble _08100C24
- cmp r0, 0x2
- beq _08100BC8
- b _08100C24
- .pool
-_08100BA8:
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r5]
- eors r4, r0
- adds r0, r4, 0
- b _08100C34
- .pool
-_08100BC8:
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r5]
- movs r2, 0x2
- mov r8, r2
- mov r1, r8
- eors r0, r1
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08100C3E
- ldrb r0, [r5]
- mov r2, r8
- eors r0, r2
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r7
- lsrs r7, r0, 1
- ldrb r0, [r5]
- mov r1, r8
- eors r0, r1
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- lsrs r4, r0, 1
- b _08100C3E
- .pool
-_08100C24:
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r4]
-_08100C34:
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r4, r0, 24
-_08100C3E:
- strh r7, [r6, 0x20]
- strh r4, [r6, 0x22]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08100C56
- ldrh r0, [r6, 0x22]
- adds r0, 0x8
- strh r0, [r6, 0x22]
-_08100C56:
- ldr r0, =sub_8100CCC
- str r0, [r6, 0x1C]
- ldr r0, =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- adds r3, r0, 0
- cmp r1, 0
- bne _08100C7C
- ldrh r0, [r3]
- ldrh r1, [r6, 0x20]
- adds r0, r1
- strh r0, [r6, 0x20]
- b _08100C90
- .pool
-_08100C7C:
- ldrh r0, [r6, 0x20]
- ldrh r1, [r3]
- subs r0, r1
- strh r0, [r6, 0x20]
- adds r2, r6, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_08100C90:
- ldrh r0, [r3, 0x2]
- ldrh r2, [r6, 0x22]
- adds r0, r2
- strh r0, [r6, 0x22]
- ldr r1, =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r6, 0x30]
- adds r1, r0, r2
- strh r1, [r6, 0x30]
- movs r2, 0x80
- lsls r2, 3
- adds r0, r2, 0
- ldrh r2, [r6, 0x32]
- adds r0, r2
- strh r0, [r6, 0x32]
- ldrh r0, [r3, 0x4]
- strh r0, [r6, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _08100CBE
- negs r0, r1
- strh r0, [r6, 0x30]
-_08100CBE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100B88
-
- thumb_func_start sub_8100CCC
-sub_8100CCC: @ 8100CCC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- ldrh r2, [r4, 0x34]
- adds r0, r1, r2
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08100CEE
- adds r0, r1, 0
- adds r0, 0x18
- b _08100CF2
-_08100CEE:
- adds r0, r1, 0
- subs r0, 0x18
-_08100CF2:
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- subs r0, 0x18
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bne _08100D28
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- movs r0, 0x3
- strh r0, [r4, 0x2E]
- ldr r0, =WaitAnimForDuration
- str r0, [r4, 0x1C]
-_08100D28:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100CCC
-
- thumb_func_start sub_8100D38
-sub_8100D38: @ 8100D38
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x32]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- cmp r0, 0x1
- ble _08100DDC
- ldrh r1, [r5, 0x34]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08100D94
- adds r3, r5, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r1
- strb r0, [r3]
- ldr r4, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r3, [r0]
- adds r1, r2, 0
- ands r1, r3
- strb r1, [r0]
- movs r0, 0x30
- ldrsh r1, [r5, 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]
- b _08100DCA
- .pool
-_08100D94:
- adds r1, r5, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldr r3, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
-_08100DCA:
- movs r0, 0
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- b _08100DE0
- .pool
-_08100DDC:
- adds r0, r1, 0x1
- strh r0, [r5, 0x32]
-_08100DE0:
- movs r1, 0x34
- ldrsh r0, [r5, r1]
- cmp r0, 0xA
- bne _08100E10
- movs r2, 0x2E
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, =gSprites
- adds r0, r4
- bl DestroySprite
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- adds r0, r5, 0
- bl DestroyAnimSprite
-_08100E10:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100D38
-
- thumb_func_start sub_8100E1C
-sub_8100E1C: @ 8100E1C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimArgs
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x2E]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08100E44
- ldrh r0, [r5, 0x20]
- ldrh r1, [r4]
- subs r0, r1
- b _08100E4A
- .pool
-_08100E44:
- ldrh r0, [r4]
- ldrh r1, [r5, 0x20]
- adds r0, r1
-_08100E4A:
- strh r0, [r5, 0x20]
- ldr r4, =gBattleAnimArgs
- ldrb r1, [r4, 0xA]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x6]
- negs r0, r0
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x34]
- ldr r1, =sub_8100E80
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100E1C
-
- thumb_func_start sub_8100E80
-sub_8100E80: @ 8100E80
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x64
- bl Cos
- strh r0, [r4, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r1, 0x14
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- bgt _08100EAC
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0
- b _08100EB2
-_08100EAC:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0xE
-_08100EB2:
- strb r0, [r1]
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x2E]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- adds r0, 0x82
- 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
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _08100EE8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08100EE8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8100E80
-
- thumb_func_start sub_8100EF0
-sub_8100EF0: @ 8100EF0
- push {r4-r6,lr}
- adds r5, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _08100F06
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- adds r0, 0x8
- strh r0, [r1, 0x2]
-_08100F06:
- ldr r6, =gBattleAnimAttacker
- ldrb r0, [r6]
- movs r1, 0
- bl GetBattlerSpriteCoord2
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x1
- bl GetBattlerSpriteCoord2
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r5, 0x22]
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08100F44
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _08100F6C
-_08100F44:
- ldrb r0, [r6]
- bl sub_80A8328
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r5, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x5]
- b _08100F84
- .pool
-_08100F6C:
- ldrb r0, [r6]
- bl sub_80A8328
- movs r1, 0x3
- 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]
-_08100F84:
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x2E]
- ldr r0, =0x00002828
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r5, 0x32]
- movs r4, 0x10
- movs r0, 0x10
- strh r0, [r5, 0x3C]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r0, [r5, 0x3C]
- lsls r1, r0, 8
- subs r4, r0
- orrs r1, r4
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, =sub_8100FD4
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100EF0
-
- thumb_func_start sub_8100FD4
-sub_8100FD4: @ 8100FD4
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- adds r0, 0x60
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08101032
- movs r0, 0
- strh r0, [r4, 0x30]
- ldr r1, =gPlttBufferFaded
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- adds r0, 0x1
- lsls r0, 1
- adds r0, r1
- ldrh r5, [r0]
- movs r2, 0
- adds r6, r1, 0
- adds r3, r6, 0
-_0810100C:
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- adds r2, 0x1
- adds r0, r2
- lsls r1, r0, 1
- adds r1, r3
- adds r0, 0x1
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- cmp r2, 0x5
- ble _0810100C
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- adds r0, 0x7
- lsls r0, 1
- adds r0, r6
- strh r5, [r0]
-_08101032:
- ldrh r2, [r4, 0x3C]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- ble _0810106C
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _08101080
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0810106C
- movs r0, 0
- strh r0, [r4, 0x3A]
- subs r2, 0x1
- strh r2, [r4, 0x3C]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_0810106C:
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08101080
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- b _081010C2
- .pool
-_08101080:
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _081010C2
- movs r0, 0
- strh r0, [r4, 0x3A]
- ldrh r2, [r4, 0x3C]
- adds r2, 0x1
- strh r2, [r4, 0x3C]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _081010C2
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_80A67F4
- str r0, [r4, 0x1C]
-_081010C2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8100FD4
-
- thumb_func_start sub_81010CC
-sub_81010CC: @ 81010CC
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, =gBattleAnimTarget
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0x20]
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =0x0000ffe8
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x2E]
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x32]
- strh r5, [r4, 0x34]
- strh r5, [r4, 0x36]
- strh r5, [r4, 0x3A]
- movs r0, 0x10
- strh r0, [r4, 0x3C]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, =sub_8101138
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81010CC
-
- thumb_func_start sub_8101138
-sub_8101138: @ 8101138
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _08101146
- b _08101290
-_08101146:
- lsls r0, 2
- ldr r1, =_08101154
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08101154:
- .4byte _08101168
- .4byte _081011CC
- .4byte _081011E8
- .4byte _08101266
- .4byte _0810127A
-_08101168:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- cmp r0, 0
- bgt _08101176
- b _08101290
-_08101176:
- movs r0, 0
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08101198
- ldrh r1, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _081011A6
- adds r0, r1, 0x1
- strh r0, [r4, 0x3A]
- b _081011A6
-_08101198:
- ldrh r1, [r4, 0x3C]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _081011A6
- subs r0, r1, 0x1
- strh r0, [r4, 0x3C]
-_081011A6:
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _08101290
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08101290
- strh r0, [r4, 0x30]
- b _08101272
-_081011CC:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _08101290
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _08101272
-_081011E8:
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x4
- bl sub_8101298
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _0810120A
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
-_0810120A:
- ldrh r0, [r4, 0x32]
- adds r1, r0, 0x1
- strh r1, [r4, 0x32]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _08101290
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08101230
- ldrh r1, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _0810123E
- subs r0, r1, 0x1
- strh r0, [r4, 0x3A]
- b _0810123E
-_08101230:
- ldrh r1, [r4, 0x3C]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _0810123E
- adds r0, r1, 0x1
- strh r0, [r4, 0x3C]
-_0810123E:
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- cmp r1, 0
- bne _08101290
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0x10
- bne _08101290
- strh r1, [r4, 0x30]
- strh r1, [r4, 0x32]
- b _08101272
-_08101266:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_08101272:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08101290
-_0810127A:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08101290:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8101138
-
- thumb_func_start sub_8101298
-sub_8101298: @ 8101298
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0xB
- bgt _081012AA
- ldrh r0, [r4, 0x36]
- adds r0, 0x2
- strh r0, [r4, 0x36]
-_081012AA:
- ldrh r5, [r4, 0x34]
- adds r0, r5, 0
- subs r0, 0x12
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- cmp r0, 0x17
- bhi _081012C0
- ldrh r0, [r4, 0x36]
- subs r0, 0x2
- strh r0, [r4, 0x36]
-_081012C0:
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x2F
- ble _081012CE
- ldrh r0, [r4, 0x36]
- adds r0, 0x2
- strh r0, [r4, 0x36]
-_081012CE:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0x9
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xE
- bl __divsi3
- strh r0, [r4, 0x26]
- lsls r0, 16
- cmp r0, 0
- bge _081012F4
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x26]
-_081012F4:
- adds r0, r5, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3B
- ble _08101304
- movs r0, 0
- strh r0, [r4, 0x34]
-_08101304:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8101298
-
- thumb_func_start sub_810130C
-sub_810130C: @ 810130C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08101320
- adds r0, r4, 0
- bl sub_80A6838
-_08101320:
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_80A6864
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x32]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A656C
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810130C
-
- thumb_func_start sub_810135C
-sub_810135C: @ 810135C
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08101378
- ldr r0, =gBattleAnimAttacker
- b _0810137A
- .pool
-_08101378:
- ldr r0, =gBattleAnimTarget
-_0810137A:
- ldrb r6, [r0]
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _081013C4
- movs r1, 0x2
- adds r0, r6, 0
- eors r0, r1
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _081013C4
- ldr r4, =gBattleAnimArgs
- ldrb r1, [r4, 0xC]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- adds r0, r6, 0
- bl SetAverageBattlerPositions
- movs r2, 0
- ldrsh r1, [r4, r2]
- adds r0, r5, 0
- bl sub_80A6864
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- b _08101414
- .pool
-_081013C4:
- ldr r4, =gBattleAnimArgs
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _081013E8
- adds r0, r6, 0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r6, 0
- movs r1, 0x1
- b _081013FA
- .pool
-_081013E8:
- adds r0, r6, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r6, 0
- movs r1, 0x3
-_081013FA:
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r5, 0x22]
- ldr r0, =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r0, r5, 0
- bl sub_80A6864
-_08101414:
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0xA]
- strh r0, [r5, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x32]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A656C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810135C
-
- thumb_func_start sub_8101440
-sub_8101440: @ 8101440
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80A6838
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08101474
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- b _0810148E
- .pool
-_08101474:
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_0810148E:
- ldr r0, =sub_81014A0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101440
-
- thumb_func_start sub_81014A0
-sub_81014A0: @ 81014A0
- 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, 0x1E
- ble _081014D8
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r0, 0x1E
- subs r0, r1
- movs r1, 0x3
- bl __divsi3
- strh r0, [r4, 0x26]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsls r0, 18
- asrs r0, 16
- movs r1, 0x3
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
-_081014D8:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081014EC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081014EC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81014A0
-
- thumb_func_start sub_81014F4
-sub_81014F4: @ 81014F4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80A6838
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0810152C
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0x1
- strh r0, [r4, 0x34]
- b _0810154A
- .pool
-_0810152C:
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldr r0, =0x0000ffff
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_0810154A:
- ldr r0, =sub_8101560
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81014F4
-
- thumb_func_start sub_8101560
-sub_8101560: @ 8101560
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x28
- bl __divsi3
- negs r0, r0
- strh r0, [r4, 0x26]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 1
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _081015A4
- adds r0, r4, 0
- bl move_anim_8074EE0
-_081015A4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8101560
-
- thumb_func_start sub_81015AC
-sub_81015AC: @ 81015AC
- push {lr}
- ldrh r1, [r0, 0x20]
- subs r1, 0x20
- strh r1, [r0, 0x20]
- ldrh r1, [r0, 0x22]
- subs r1, 0x20
- strh r1, [r0, 0x22]
- movs r1, 0x14
- strh r1, [r0, 0x2E]
- ldr r1, =WaitAnimForDuration
- str r1, [r0, 0x1C]
- ldr r1, =sub_81015D4
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81015AC
-
- thumb_func_start sub_81015D4
-sub_81015D4: @ 81015D4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldrh r6, [r5, 0x38]
- movs r1, 0x1
- adds r0, r1, 0
- ands r0, r6
- cmp r0, 0
- beq _081015EA
- cmp r0, 0x1
- beq _08101604
- b _0810166A
-_081015EA:
- strh r1, [r5, 0x2E]
- ldr r0, =WaitAnimForDuration
- str r0, [r5, 0x1C]
- ldr r1, =sub_81015D4
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- b _0810166A
- .pool
-_08101604:
- ldrh r3, [r5, 0x24]
- ldrh r0, [r5, 0x20]
- adds r3, r0
- movs r0, 0
- strh r3, [r5, 0x20]
- ldrh r4, [r5, 0x26]
- ldrh r1, [r5, 0x22]
- adds r4, r1
- strh r4, [r5, 0x22]
- strh r0, [r5, 0x26]
- strh r0, [r5, 0x24]
- movs r0, 0x8
- strh r0, [r5, 0x2E]
- ldr r2, =gUnknown_08592CD0
- lsls r0, r6, 16
- asrs r0, 24
- lsls r0, 1
- adds r1, r0, r2
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- adds r3, r1
- strh r3, [r5, 0x32]
- adds r2, 0x1
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r4, r0
- strh r4, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, =sub_8101684
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r5, 0x38]
- adds r0, r1
- strh r0, [r5, 0x38]
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xD2
- bl PlaySE12WithPanning
-_0810166A:
- ldrh r0, [r5, 0x38]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r5, 0x38]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81015D4
-
- thumb_func_start sub_8101684
-sub_8101684: @ 8101684
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x38]
- lsls r0, 16
- asrs r0, 24
- cmp r0, 0x4
- bne _081016AC
- movs r0, 0xA
- strh r0, [r2, 0x2E]
- ldr r0, =WaitAnimForDuration
- str r0, [r2, 0x1C]
- ldr r1, =sub_81016B8
- adds r0, r2, 0
- bl StoreSpriteCallbackInData6
- b _081016B0
- .pool
-_081016AC:
- ldr r0, =sub_81015D4
- str r0, [r2, 0x1C]
-_081016B0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101684
-
- thumb_func_start sub_81016B8
-sub_81016B8: @ 81016B8
- push {r4-r7,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x6]
- cmp r1, 0
- bne _081016E0
- movs r0, 0x3
- strh r0, [r5, 0x2E]
- strh r1, [r5, 0x30]
- strh r1, [r5, 0x32]
- ldr r0, =WaitAnimForDuration
- str r0, [r5, 0x1C]
- ldr r1, =sub_8101774
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- b _08101760
- .pool
-_081016E0:
- ldrh r0, [r5, 0x6]
- cmp r0, 0x2
- beq _08101700
- cmp r0, 0x2
- bgt _081016F0
- cmp r0, 0x1
- beq _081016F6
- b _08101714
-_081016F0:
- cmp r0, 0x3
- beq _08101708
- b _08101714
-_081016F6:
- ldr r6, =0x0000fff8
- adds r7, r6, 0
- b _08101718
- .pool
-_08101700:
- ldr r7, =0x0000fff8
- b _08101716
- .pool
-_08101708:
- movs r7, 0x8
- ldr r6, =0x0000fff8
- b _08101718
- .pool
-_08101714:
- movs r7, 0x8
-_08101716:
- movs r6, 0x8
-_08101718:
- ldrh r0, [r5, 0x24]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r1, [r5, 0x26]
- strh r1, [r5, 0x24]
- movs r0, 0x6
- strh r0, [r5, 0x2E]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r7
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, =sub_8101820
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
-_08101760:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81016B8
-
- thumb_func_start sub_8101774
-sub_8101774: @ 8101774
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08101794
- ldrh r0, [r4, 0x30]
- adds r0, 0x3
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _081017A4
- movs r0, 0x10
- b _081017A2
-_08101794:
- ldrh r0, [r4, 0x30]
- subs r0, 0x3
- strh r0, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bge _081017A4
- movs r0, 0
-_081017A2:
- strh r0, [r4, 0x30]
-_081017A4:
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x1
- bl sub_80A75AC
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =0x00007fff
- bl BlendPalettes
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- cmp r0, 0x10
- bne _0810180C
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- lsls r0, r1, 5
- ldr r2, =gPlttBufferUnfaded + 0x210
- adds r0, r2
- lsls r1, 4
- ldr r3, =0x00000101
- adds r2, r3, 0
- orrs r1, r2
- movs r2, 0x4
- bl LoadPalette
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xC0
- bl PlaySE12WithPanning
- b _08101814
- .pool
-_0810180C:
- cmp r0, 0
- bne _08101814
- ldr r0, =sub_8101820
- str r0, [r4, 0x1C]
-_08101814:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101774
-
- thumb_func_start sub_8101820
-sub_8101820: @ 8101820
- push {lr}
- adds r2, r0, 0
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08101838
- movs r0, 0
- strh r0, [r2, 0x30]
- strh r0, [r2, 0x2E]
- ldr r0, =sub_8101848
- str r0, [r2, 0x1C]
-_08101838:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101820
-
- thumb_func_start sub_8101848
-sub_8101848: @ 8101848
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _0810187C
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- 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]
-_0810187C:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bne _08101890
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08101890:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8101848
-
- thumb_func_start sub_8101898
-sub_8101898: @ 8101898
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r3, 0x6]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _081018BC
- ldrh r0, [r3, 0x20]
- subs r0, 0x18
- strh r0, [r3, 0x20]
- ldrh r0, [r3, 0x22]
- subs r0, 0x18
- strh r0, [r3, 0x22]
- b _0810190E
- .pool
-_081018BC:
- cmp r0, 0x2
- bne _081018D8
- ldrh r0, [r3, 0x20]
- subs r0, 0x18
- strh r0, [r3, 0x20]
- ldrh r0, [r3, 0x22]
- adds r0, 0x18
- strh r0, [r3, 0x22]
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x20
- b _0810190A
-_081018D8:
- cmp r0, 0x3
- bne _081018F4
- ldrh r0, [r3, 0x20]
- adds r0, 0x18
- strh r0, [r3, 0x20]
- ldrh r0, [r3, 0x22]
- subs r0, 0x18
- strh r0, [r3, 0x22]
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- b _0810190A
-_081018F4:
- ldrh r0, [r3, 0x20]
- adds r0, 0x18
- strh r0, [r3, 0x20]
- ldrh r0, [r3, 0x22]
- adds r0, 0x18
- strh r0, [r3, 0x22]
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x30
-_0810190A:
- orrs r0, r1
- strb r0, [r3, 0x3]
-_0810190E:
- ldrh r2, [r3, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r4, =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldr r1, =sub_81015AC
- str r1, [r3, 0x1C]
- adds r0, r3, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101898
-
- thumb_func_start sub_8101940
-sub_8101940: @ 8101940
- 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]
- movs r0, 0
- strh r0, [r3, 0x2E]
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _0810197C
- cmp r0, 0x1
- bgt _0810196C
- cmp r0, 0
- beq _08101972
- b _0810198C
- .pool
-_0810196C:
- cmp r0, 0x2
- beq _08101984
- b _0810198C
-_08101972:
- ldr r0, =sub_8101998
- b _0810198E
- .pool
-_0810197C:
- ldr r0, =sub_8101A74
- b _0810198E
- .pool
-_08101984:
- ldr r0, =sub_8101AC4
- b _0810198E
- .pool
-_0810198C:
- ldr r0, =sub_8101B84
-_0810198E:
- str r0, [r3, 0x1C]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101940
-
- thumb_func_start sub_8101998
-sub_8101998: @ 8101998
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- strh r0, [r4, 0x2E]
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x2
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- beq _081019B6
- movs r1, 0x2
-_081019B6:
- strh r1, [r4, 0x30]
- movs r0, 0
- strh r0, [r4, 0x32]
- ldr r1, =gBattlerSpriteIds
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x34]
- ldr r1, =sub_81019E8
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A6630
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101998
-
- thumb_func_start sub_81019E8
-sub_81019E8: @ 81019E8
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0x2E
- ldrsh r6, [r5, r0]
- cmp r6, 0
- bne _08101A24
- ldr r1, =gBattlerSpriteIds
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r5, 0x34]
- movs r1, 0
- bl sub_80A7270
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x3A]
- ldr r2, =0xfffffd00
- adds r1, r2, 0
- cmp r0, 0
- beq _08101A20
- movs r0, 0xC0
- lsls r0, 2
- adds r1, r0, 0
-_08101A20:
- strh r1, [r5, 0x36]
- strh r6, [r5, 0x38]
-_08101A24:
- ldrh r0, [r5, 0x36]
- ldrh r1, [r5, 0x38]
- adds r0, r1
- strh r0, [r5, 0x38]
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r5, 0x38]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A73A0
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08101A5E
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldr r0, =sub_8101B84
- str r0, [r5, 0x1C]
-_08101A5E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81019E8
-
- thumb_func_start sub_8101A74
-sub_8101A74: @ 8101A74
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x4
- strh r0, [r4, 0x2E]
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0x3
- cmp r0, 0
- beq _08101A92
- movs r0, 0x3
- negs r0, r0
- adds r1, r0, 0
-_08101A92:
- strh r1, [r4, 0x30]
- movs r0, 0
- strh r0, [r4, 0x32]
- ldr r1, =gBattlerSpriteIds
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x34]
- ldr r1, =sub_8101B84
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A6630
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101A74
-
- thumb_func_start sub_8101AC4
-sub_8101AC4: @ 8101AC4
- 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, 0x8
- ble _08101ADE
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldr r0, =sub_8101AE8
- str r0, [r1, 0x1C]
-_08101ADE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101AC4
-
- thumb_func_start sub_8101AE8
-sub_8101AE8: @ 8101AE8
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08101B38
- ldr r1, =gBattlerSpriteIds
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x3A]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08101B2C
- movs r0, 0xFC
- lsls r0, 8
- strh r0, [r5, 0x36]
- movs r0, 0xC0
- lsls r0, 4
- b _08101B36
- .pool
-_08101B2C:
- movs r0, 0x80
- lsls r0, 3
- strh r0, [r5, 0x36]
- movs r0, 0xF4
- lsls r0, 8
-_08101B36:
- strh r0, [r5, 0x38]
-_08101B38:
- ldrh r0, [r5, 0x36]
- ldrh r1, [r5, 0x38]
- adds r0, r1
- strh r0, [r5, 0x38]
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r5, 0x38]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A73A0
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _08101B78
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A7344
- ldr r0, =sub_8101B84
- str r0, [r5, 0x1C]
-_08101B78:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101AE8
-
- thumb_func_start sub_8101B84
-sub_8101B84: @ 8101B84
- push {lr}
- bl DestroyAnimSprite
- pop {r0}
- bx r0
- thumb_func_end sub_8101B84
-
- thumb_func_start sub_8101B90
-sub_8101B90: @ 8101B90
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldr r1, =sub_8101BA0
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_8101B90
-
- thumb_func_start sub_8101BA0
-sub_8101BA0: @ 8101BA0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _08101BFA
- cmp r5, 0x1
- bgt _08101BB6
- cmp r5, 0
- beq _08101BBC
- b _08101C8E
-_08101BB6:
- cmp r5, 0x2
- beq _08101C4C
- b _08101C8E
-_08101BBC:
- strh r5, [r4, 0x30]
- ldr r1, =gBattlerSpriteIds
- ldr r2, =gBattleAnimAttacker
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x32]
- ldrb r0, [r2]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x34]
- ldr r2, =0xfffffe00
- adds r1, r2, 0
- cmp r0, 0
- beq _08101BE4
- movs r0, 0x80
- lsls r0, 2
- adds r1, r0, 0
-_08101BE4:
- strh r1, [r4, 0x36]
- strh r5, [r4, 0x38]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80A7270
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_08101BFA:
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0x38]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A73A0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08101C8E
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08101C8E
- .pool
-_08101C4C:
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0x38]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A73A0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08101C8E
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A7344
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08101C8E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8101BA0
-
- thumb_func_start sub_8101C94
-sub_8101C94: @ 8101C94
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldr r1, =gBattlerSpriteIds
- ldr r2, =gBattleAnimAttacker
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- movs r4, 0
- strh r0, [r5, 0x8]
- ldrb r0, [r2]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r2, r0, 24
- strh r2, [r5, 0xA]
- strh r4, [r5, 0xC]
- ldr r0, =gBattleAnimArgs
- movs r3, 0
- ldrsh r1, [r0, r3]
- cmp r1, 0
- beq _08101CE8
- cmp r1, 0x1
- beq _08101D04
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _08101D22
- .pool
-_08101CE8:
- strh r1, [r5, 0xC]
- movs r0, 0x8
- strh r0, [r5, 0xE]
- strh r1, [r5, 0x10]
- movs r0, 0x3
- strh r0, [r5, 0x12]
- cmp r2, 0
- bne _08101CFC
- negs r0, r0
- strh r0, [r5, 0x12]
-_08101CFC:
- ldr r0, =sub_8101D2C
- b _08101D20
- .pool
-_08101D04:
- movs r0, 0x8
- strh r0, [r5, 0xE]
- movs r0, 0xC0
- lsls r0, 3
- strh r0, [r5, 0x10]
- movs r1, 0xC0
- strh r1, [r5, 0x12]
- cmp r2, 0
- bne _08101D1E
- negs r0, r0
- strh r0, [r5, 0x10]
- negs r0, r1
- strh r0, [r5, 0x12]
-_08101D1E:
- ldr r0, =sub_8101EEC
-_08101D20:
- str r0, [r5]
-_08101D22:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101C94
-
- thumb_func_start sub_8101D2C
-sub_8101D2C: @ 8101D2C
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _08101D46
- b _08101EE6
-_08101D46:
- lsls r0, 2
- ldr r1, =_08101D58
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08101D58:
- .4byte _08101D6C
- .4byte _08101D9E
- .4byte _08101DF8
- .4byte _08101E70
- .4byte _08101EB4
-_08101D6C:
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r1, 0
- beq _08101D7C
- ldrh r2, [r4, 0x12]
- ldrh r3, [r4, 0x10]
- adds r2, r3
- b _08101EC2
-_08101D7C:
- movs r0, 0x8
- strh r0, [r4, 0xE]
- strh r1, [r4, 0x10]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r1, 0xC0
- cmp r0, 0
- bne _08101D92
- movs r2, 0xC0
- negs r2, r2
- adds r1, r2, 0
-_08101D92:
- strh r1, [r4, 0x12]
- ldrb r0, [r4, 0x8]
- movs r1, 0
- bl sub_80A7270
- b _08101EA8
-_08101D9E:
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _08101DC4
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0x10]
- adds r0, r1
- strh r0, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0x10]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_80A73A0
- b _08101ED4
-_08101DC4:
- movs r0, 0x8
- strh r0, [r4, 0xE]
- ldr r2, =gSprites
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x24]
- strh r0, [r4, 0x10]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _08101DEA
- movs r1, 0x2
-_08101DEA:
- strh r1, [r4, 0x12]
- movs r0, 0x1
- strh r0, [r4, 0x14]
- b _08101EA8
- .pool
-_08101DF8:
- ldrh r2, [r4, 0xE]
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _08101E54
- ldrh r1, [r4, 0x14]
- movs r3, 0x14
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _08101E12
- subs r0, r1, 0x1
- strh r0, [r4, 0x14]
- b _08101EE6
-_08101E12:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _08101E34
- ldr r2, =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x12]
- ldrh r2, [r4, 0x10]
- adds r1, r2
- b _08101E48
- .pool
-_08101E34:
- ldr r2, =gSprites
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x10]
- ldrh r2, [r4, 0x12]
- subs r1, r2
-_08101E48:
- strh r1, [r0, 0x24]
- movs r0, 0x1
- strh r0, [r4, 0x14]
- b _08101ED4
- .pool
-_08101E54:
- ldr r2, =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x10]
- strh r1, [r0, 0x24]
- movs r0, 0xC
- strh r0, [r4, 0xE]
- b _08101EA8
- .pool
-_08101E70:
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08101E80
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _08101EE6
-_08101E80:
- movs r0, 0x3
- strh r0, [r4, 0xE]
- ldr r2, =gSprites
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x24]
- strh r0, [r4, 0x10]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r2, 0x8
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _08101EA6
- movs r1, 0x8
-_08101EA6:
- strh r1, [r4, 0x12]
-_08101EA8:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _08101EE6
- .pool
-_08101EB4:
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _08101EE0
- ldrh r2, [r4, 0x12]
- ldrh r0, [r4, 0x10]
- adds r2, r0
-_08101EC2:
- strh r2, [r4, 0x10]
- ldr r3, =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x24]
-_08101ED4:
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _08101EE6
- .pool
-_08101EE0:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_08101EE6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8101D2C
-
- thumb_func_start sub_8101EEC
-sub_8101EEC: @ 8101EEC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08101F2C
- ldrh r0, [r4, 0x10]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0x10]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_80A73A0
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _08101F38
- .pool
-_08101F2C:
- ldrb r0, [r4, 0x8]
- bl sub_80A7344
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08101F38:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8101EEC
-
- thumb_func_start sub_8101F40
-sub_8101F40: @ 8101F40
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08101F5C
- ldr r4, =gBattleAnimAttacker
- b _08101F5E
- .pool
-_08101F5C:
- ldr r4, =gBattleAnimTarget
-_08101F5E:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x2]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x4]
- adds r0, r6
- strh r0, [r5, 0x22]
- movs r0, 0
- strh r0, [r5, 0x2E]
- strh r0, [r5, 0x30]
- ldr r1, =sub_810208C
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67D8
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101F40
-
- thumb_func_start sub_8101FA8
-sub_8101FA8: @ 8101FA8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =0x0000ffd0
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r1, =sub_8102044
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67D8
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101FA8
-
- thumb_func_start sub_8101FF0
-sub_8101FF0: @ 8101FF0
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gBattleAnimArgs
- ldr r2, =0x0000ffd0
- adds r0, r2
- ldrh r1, [r1]
- adds r0, r1
- movs r6, 0
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- strh r6, [r4, 0x2E]
- strh r6, [r4, 0x30]
- ldr r0, =sub_810208C
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8101FF0
-
- thumb_func_start sub_8102044
-sub_8102044: @ 8102044
- 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, 0x8
- ble _0810206E
- movs r0, 0xC
- strh r0, [r4, 0x2E]
- movs r0, 0x8
- strh r0, [r4, 0x30]
- movs r0, 0
- strh r0, [r4, 0x32]
- ldr r1, =sub_810207C
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A653C
- str r0, [r4, 0x1C]
-_0810206E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102044
-
- thumb_func_start sub_810207C
-sub_810207C: @ 810207C
- movs r1, 0
- strh r1, [r0, 0x2E]
- strh r1, [r0, 0x30]
- ldr r1, =sub_810208C
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_810207C
-
- thumb_func_start sub_810208C
-sub_810208C: @ 810208C
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _081020D4
- movs r0, 0
- strh r0, [r3, 0x2E]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _081020D4
- adds r0, r3, 0
- bl DestroyAnimSprite
-_081020D4:
- pop {r0}
- bx r0
- thumb_func_end sub_810208C
-
- thumb_func_start sub_81020D8
-sub_81020D8: @ 81020D8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _081020F4
- ldr r4, =gBattleAnimAttacker
- b _081020F6
- .pool
-_081020F4:
- ldr r4, =gBattleAnimTarget
-_081020F6:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x2]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x4]
- adds r0, r6
- strh r0, [r5, 0x22]
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x6]
- strh r0, [r5, 0x30]
- ldr r0, =sub_810213C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81020D8
-
- thumb_func_start sub_810213C
-sub_810213C: @ 810213C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x30
- ldrsh r1, [r2, r3]
- cmp r0, r1
- ble _0810215C
- movs r0, 0
- strh r0, [r2, 0x2E]
- ldrh r0, [r2, 0x22]
- subs r0, 0x1
- strh r0, [r2, 0x22]
-_0810215C:
- ldrh r0, [r2, 0x22]
- ldrh r1, [r2, 0x2E]
- subs r0, r1
- strh r0, [r2, 0x22]
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08102178
- adds r0, r2, 0
- bl DestroyAnimSprite
-_08102178:
- pop {r0}
- bx r0
- thumb_func_end sub_810213C
-
- thumb_func_start sub_810217C
-sub_810217C: @ 810217C
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, =gBattleAnimAttacker
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0x20]
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0xC
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x2E]
- movs r0, 0x2
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x32]
- strh r5, [r4, 0x34]
- strh r5, [r4, 0x36]
- subs r0, 0x42
- bl BattleAnimAdjustPanning
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4, 0x38]
- ldr r0, =sub_81021CC
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810217C
-
- thumb_func_start sub_81021CC
-sub_81021CC: @ 81021CC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _08102238
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r1, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0810221E
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0810221E
- ldrh r1, [r4, 0x38]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xC2
- bl PlaySE12WithPanning
-_0810221E:
- movs r1, 0
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08102238
- strh r1, [r4, 0x32]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
-_08102238:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08102262
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- ble _08102262
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08102262
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08102262:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81021CC
-
- thumb_func_start sub_8102268
-sub_8102268: @ 8102268
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _081022B2
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r5, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x2]
- adds r0, r5
- strh r0, [r6, 0x22]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _081022AC
- ldrh r0, [r6, 0x22]
- adds r0, 0xA
- strh r0, [r6, 0x22]
-_081022AC:
- ldrh r0, [r6, 0x2E]
- adds r0, 0x1
- strh r0, [r6, 0x2E]
-_081022B2:
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _081022C2
- adds r0, r6, 0
- bl DestroyAnimSprite
-_081022C2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102268
-
- thumb_func_start sub_81022D4
-sub_81022D4: @ 81022D4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _08102300
- ldr r1, =gBattleAnimArgs
- ldr r0, =0x0000ffff
- strh r0, [r1, 0xE]
- b _0810233E
- .pool
-_08102300:
- cmp r0, 0x2
- bne _0810230C
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _08102344
-_0810230C:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _08102344
- movs r0, 0
- strh r0, [r4, 0x8]
- ldrh r2, [r4, 0xA]
- adds r2, 0x1
- strh r2, [r4, 0xA]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _08102344
-_0810233E:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
-_08102344:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81022D4
-
- thumb_func_start sub_810234C
-sub_810234C: @ 810234C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_80A6980
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldr r0, =sub_810237C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810234C
-
- thumb_func_start sub_810237C
-sub_810237C: @ 810237C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _08102390
- subs r0, r1, 0x1
- strh r0, [r5, 0x2E]
- b _081023CC
-_08102390:
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x1E
- strh r0, [r5, 0x2E]
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
-_081023CC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810237C
-
- thumb_func_start sub_81023E0
-sub_81023E0: @ 81023E0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _08102428
- movs r0, 0
- strh r0, [r4, 0x8]
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _08102428
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08102428:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81023E0
-
- thumb_func_start sub_8102434
-sub_8102434: @ 8102434
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r4, 0
- ldr r0, =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- bcs _08102490
- ldr r6, =gBattleAnimArgs
- ldr r5, =gHealthboxSpriteIds
-_08102448:
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bne _08102464
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08102464
- adds r0, r4, r5
- ldrb r0, [r0]
- bl SetHealthboxSpriteInvisible
-_08102464:
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bne _08102482
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08102482
- adds r0, r4, r5
- ldrb r0, [r0]
- bl SetHealthboxSpriteInvisible
-_08102482:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _08102448
-_08102490:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102434
-
- thumb_func_start sub_81024A8
-sub_81024A8: @ 81024A8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- b _081024C2
-_081024B2:
- ldr r0, =gHealthboxSpriteIds
- adds r0, r4, r0
- ldrb r0, [r0]
- bl SetHealthboxSpriteVisible
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_081024C2:
- ldr r0, =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _081024B2
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81024A8
-
- thumb_func_start sub_81024E0
-sub_81024E0: @ 81024E0
- push {r4,lr}
- adds r4, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _081024F6
- movs r0, 0x30
- strh r0, [r4, 0x20]
- movs r0, 0x28
- b _081024FE
-_081024F6:
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0]
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
-_081024FE:
- strh r0, [r4, 0x22]
- ldrb r1, [r4, 0x1]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x3]
- movs r1, 0xC0
- orrs r0, r1
- strb r0, [r4, 0x3]
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, =sub_8102528
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81024E0
-
- thumb_func_start sub_8102528
-sub_8102528: @ 8102528
- push {lr}
- adds r1, r0, 0
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0810253A
- adds r0, r1, 0
- bl DestroyAnimSprite
-_0810253A:
- pop {r0}
- bx r0
- thumb_func_end sub_8102528
-
- thumb_func_start sub_8102540
-sub_8102540: @ 8102540
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r2, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r2]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x2E]
- strh r1, [r4, 0x30]
- strh r1, [r4, 0x32]
- strh r1, [r4, 0x34]
- movs r0, 0x1
- strh r0, [r4, 0x36]
- ldr r0, =sub_8102584
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102540
-
- thumb_func_start sub_8102584
-sub_8102584: @ 8102584
- 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, 0x1
- ble _081025AE
- movs r0, 0
- strh r0, [r1, 0x30]
- ldrh r2, [r1, 0x32]
- movs r3, 0x32
- ldrsh r0, [r1, r3]
- cmp r0, 0x77
- bgt _081025AE
- ldrh r0, [r1, 0x22]
- adds r0, 0x1
- strh r0, [r1, 0x22]
- adds r0, r2, 0x1
- strh r0, [r1, 0x32]
-_081025AE:
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _081025BC
- adds r0, r1, 0
- bl DestroyAnimSprite
-_081025BC:
- pop {r0}
- bx r0
- thumb_func_end sub_8102584
-
- thumb_func_start sub_81025C0
-sub_81025C0: @ 81025C0
- 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
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_80A75AC
- mov r8, r0
- ldr r0, =0x0000ffff
- mov r1, r8
- ands r1, r0
- mov r8, r1
- ldr r0, =gTasks
- mov r9, r0
- lsls r5, r7, 2
- adds r5, r7
- lsls r5, 3
- adds r6, r5, r0
- strh r4, [r6, 0x8]
- strh r4, [r6, 0xA]
- strh r4, [r6, 0xC]
- strh r1, [r6, 0xE]
- strh r4, [r6, 0x10]
- strh r4, [r6, 0x12]
- strh r4, [r6, 0x14]
- movs r0, 0xD
- strh r0, [r6, 0x16]
- movs r0, 0xE
- strh r0, [r6, 0x18]
- movs r0, 0xF
- strh r0, [r6, 0x1A]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x1
- bl sub_80A76C4
- mov r10, r0
- mov r1, r8
- orrs r1, r0
- mov r8, r1
- movs r0, 0x8
- add r9, r0
- add r5, r9
- adds r0, r5, 0
- adds r0, 0x1C
- adds r5, 0x1E
- adds r1, r5, 0
- mov r2, r8
- bl sub_80A8048
- ldr r0, =0x000027d2
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0x80
- lsls r4, 9
- adds r1, r4, 0
- lsls r1, r0
- mov r0, r10
- orrs r0, r1
- mov r10, r0
- ldr r0, =0x000027d3
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0
- mov r1, r10
- orrs r4, r1
- ldr r0, =0x00007fbb
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =sub_81026A8
- str r1, [r6]
- adds r0, r7, 0
- bl _call_via_r1
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81025C0
-
- thumb_func_start sub_81026A8
-sub_81026A8: @ 81026A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _08102794
- cmp r1, 0x1
- bgt _081026D4
- cmp r1, 0
- beq _081026E2
- b _08102832
- .pool
-_081026D4:
- cmp r1, 0x2
- bne _081026DA
- b _081027EC
-_081026DA:
- cmp r1, 0x3
- bne _081026E0
- b _08102820
-_081026E0:
- b _08102832
-_081026E2:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bgt _081026F0
- b _08102832
-_081026F0:
- strh r1, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _0810273C
- ldrh r0, [r4, 0x16]
- ldrh r1, [r4, 0x10]
- adds r0, r1
- strh r0, [r4, 0x10]
- ldrh r2, [r4, 0x18]
- ldrh r3, [r4, 0x12]
- adds r2, r3
- strh r2, [r4, 0x12]
- ldrh r1, [r4, 0x1A]
- ldrh r5, [r4, 0x14]
- adds r1, r5
- strh r1, [r4, 0x14]
- lsls r0, 16
- asrs r0, 19
- lsls r0, 16
- lsrs r0, 16
- lsls r2, 16
- asrs r2, 19
- lsls r2, 16
- lsls r1, 16
- asrs r1, 19
- lsls r1, 16
- lsrs r2, 11
- orrs r0, r2
- lsrs r1, 6
- orrs r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r12, r0
- b _08102746
-_0810273C:
- ldr r7, =0x00007fbb
- mov r12, r7
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08102746:
- movs r2, 0x1
- movs r3, 0
- movs r1, 0
-_0810274C:
- movs r5, 0xE
- ldrsh r0, [r4, r5]
- ands r0, r2
- lsls r5, r2, 17
- adds r6, r3, 0
- adds r6, 0x10
- adds r1, 0x1
- mov r8, r1
- cmp r0, 0
- beq _08102778
- movs r1, 0x1
- ldr r2, =gPlttBufferFaded
-_08102764:
- adds r0, r3, r1
- lsls r0, 1
- adds r0, r2
- mov r7, r12
- strh r7, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _08102764
-_08102778:
- lsrs r2, r5, 16
- lsls r0, r6, 16
- lsrs r3, r0, 16
- mov r1, r8
- lsls r0, r1, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _0810274C
- b _08102832
- .pool
-_08102794:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08102832
- movs r2, 0
- ldr r3, =gSprites
- movs r5, 0x14
- adds r5, r3
- mov r12, r5
- ldr r7, =gUnknown_08592EBC
- mov r8, r7
- ldr r6, =gBattleAnimSpriteTemplate_8592EEC
- movs r5, 0x1
-_081027B2:
- lsls r0, r2, 4
- adds r0, r2
- lsls r1, r0, 2
- mov r7, r12
- adds r0, r1, r7
- ldr r0, [r0]
- cmp r0, r8
- beq _081027C6
- cmp r0, r6
- bne _081027CA
-_081027C6:
- adds r0, r1, r3
- strh r5, [r0, 0x2E]
-_081027CA:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3F
- bls _081027B2
- movs r0, 0
- strh r0, [r4, 0xA]
- b _08102814
- .pool
-_081027EC:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _08102832
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- bl sub_80A8050
- ldr r1, =0x00007fbb
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_08102814:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08102832
- .pool
-_08102820:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08102832
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_08102832:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81026A8
-
- thumb_func_start sub_8102844
-sub_8102844: @ 8102844
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bgt _08102856
- movs r0, 0x2
- strh r0, [r6, 0x4]
-_08102856:
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0x7F
- ble _08102862
- movs r0, 0x7F
- strh r0, [r6, 0x4]
-_08102862:
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldrh r0, [r6, 0x4]
- strh r0, [r5, 0x30]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x2]
- adds r0, r6
- strh r0, [r5, 0x22]
- ldrh r1, [r5, 0x20]
- strh r1, [r5, 0x3A]
- strh r0, [r5, 0x3C]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _081028D4
- ldrb r1, [r5, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r5, 0x3]
- ldrh r0, [r5, 0x20]
- adds r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r4, [r5, 0x22]
- adds r4, 0x14
- strh r4, [r5, 0x22]
- lsls r0, 7
- strh r0, [r5, 0x32]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- ldr r0, =0xffffec00
- b _081028FA
- .pool
-_081028D4:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0810291C
- ldrh r0, [r5, 0x20]
- subs r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r4, [r5, 0x22]
- adds r4, 0x14
- strh r4, [r5, 0x22]
- lsls r0, 7
- strh r0, [r5, 0x32]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- movs r0, 0xA0
- lsls r0, 5
-_081028FA:
- bl __divsi3
- strh r0, [r5, 0x34]
- lsls r4, 7
- strh r4, [r5, 0x36]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- ldr r0, =0xfffff600
- bl __divsi3
- strh r0, [r5, 0x38]
- b _08102958
- .pool
-_0810291C:
- ldrh r0, [r5, 0x20]
- adds r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r4, [r5, 0x22]
- subs r4, 0x14
- strh r4, [r5, 0x22]
- lsls r0, 7
- strh r0, [r5, 0x32]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- ldr r0, =0xffffec00
- bl __divsi3
- strh r0, [r5, 0x34]
- lsls r4, 7
- strh r4, [r5, 0x36]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- movs r0, 0xA0
- lsls r0, 4
- bl __divsi3
- strh r0, [r5, 0x38]
- ldrb r1, [r5, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x30
- orrs r0, r1
- strb r0, [r5, 0x3]
-_08102958:
- ldr r0, =sub_810296C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102844
-
- thumb_func_start sub_810296C
-sub_810296C: @ 810296C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x34]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- ldrh r1, [r2, 0x38]
- ldrh r3, [r2, 0x36]
- adds r1, r3
- strh r1, [r2, 0x36]
- lsls r0, 16
- asrs r0, 23
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 23
- strh r1, [r2, 0x22]
- ldrh r0, [r2, 0x30]
- subs r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _081029A2
- ldrh r0, [r2, 0x3A]
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x3C]
- strh r0, [r2, 0x22]
-_081029A2:
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _081029B0
- adds r0, r2, 0
- bl DestroyAnimSprite
-_081029B0:
- pop {r0}
- bx r0
- thumb_func_end sub_810296C
-
- thumb_func_start sub_81029B4
-sub_81029B4: @ 81029B4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, =gTasks
- adds r6, r0, r1
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x8]
- ldr r0, =0x00002771
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0xA]
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- lsls r0, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r3, r0, 16
- ldr r2, =gSprites
- movs r0, 0x8
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r4, r0, 4
- movs r5, 0x1
- ldr r2, =gPlttBufferUnfaded
-_08102A0C:
- adds r1, r3, r5
- lsls r1, 1
- adds r1, r2
- adds r0, r4, r5
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xF
- bls _08102A0C
- adds r0, r3, 0
- movs r1, 0x10
- movs r2, 0xB
- movs r3, 0
- bl BlendPalette
- movs r0, 0
- strh r0, [r6, 0xE]
- movs r5, 0
- ldr r7, =gSprites
- movs r1, 0x1C
- adds r1, r7
- mov r9, r1
- b _08102A88
- .pool
-_08102A54:
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r4, r2, r7
- ldrb r1, [r6, 0xA]
- lsls r1, 4
- ldrb r3, [r4, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r1
- strb r0, [r4, 0x5]
- movs r0, 0
- strh r0, [r4, 0x2E]
- lsls r0, r5, 7
- strh r0, [r4, 0x30]
- mov r0, r8
- strh r0, [r4, 0x32]
- add r2, r9
- ldr r0, =sub_8102B3C
- str r0, [r2]
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_08102A88:
- cmp r5, 0x1
- bhi _08102A9A
- movs r0, 0
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08102A54
-_08102A9A:
- ldr r0, =sub_8102AE0
- str r0, [r6]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08102AC8
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl ClearGpuRegBits
- b _08102AD2
- .pool
-_08102AC8:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl ClearGpuRegBits
-_08102AD2:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81029B4
-
- thumb_func_start sub_8102AE0
-sub_8102AE0: @ 8102AE0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08102B32
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08102B1C
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _08102B26
- .pool
-_08102B1C:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_08102B26:
- ldr r0, =0x00002771
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08102B32:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102AE0
-
- thumb_func_start sub_8102B3C
-sub_8102B3C: @ 8102B3C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08102B58
- movs r0, 0
- strh r0, [r5, 0x34]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_08102B58:
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x40
- ble _08102B80
- ldr r2, =gTasks
- movs r0, 0x32
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0xE]
- subs r1, 0x1
- strh r1, [r0, 0xE]
- adds r0, r5, 0
- bl obj_delete_but_dont_free_vram
- b _08102BC2
- .pool
-_08102B80:
- ldr r4, =gSineTable
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- lsls r0, 1
- adds r0, r4
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x6
- bl __divsi3
- strh r0, [r5, 0x36]
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- lsls r0, 1
- adds r0, r4
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0xD
- bl __divsi3
- strh r0, [r5, 0x38]
- ldrh r1, [r5, 0x30]
- adds r1, r0
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r5, 0x30]
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- movs r2, 0x36
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
-_08102BC2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102B3C
-
- thumb_func_start sub_8102BCC
-sub_8102BCC: @ 8102BCC
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, =DestroyAnimSprite
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67D8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102BCC
-
- thumb_func_start sub_8102BE8
-sub_8102BE8: @ 8102BE8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r4, =gUnknown_08593020
- ldrh r0, [r4]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xFF
- beq _08102C2C
- lsls r0, r3, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r3, r0, 16
- movs r2, 0x1
- ldr r5, =gPlttBufferFaded
-_08102C14:
- adds r1, r3, r2
- lsls r1, 1
- adds r1, r5
- lsls r0, r2, 1
- adds r0, r4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _08102C14
-_08102C2C:
- movs r4, 0x1
- ldr r0, =gUnknown_08593020
- mov r8, r0
-_08102C32:
- lsls r0, r4, 1
- adds r0, r4
- lsls r5, r0, 2
- mov r1, r8
- adds r0, r5, r1
- ldrh r0, [r0]
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, 0x1
- mov r12, r4
- cmp r3, 0xFF
- beq _08102C7A
- lsls r0, r3, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r3, r0, 16
- movs r2, 0x1
- ldr r7, =gPlttBufferFaded
- ldr r6, =gUnknown_08593020
- adds r4, r5, 0
-_08102C60:
- adds r1, r3, r2
- lsls r1, 1
- adds r1, r7
- lsls r0, r2, 1
- adds r0, r4
- adds r0, r6
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _08102C60
-_08102C7A:
- mov r1, r12
- lsls r0, r1, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08102C32
- mov r0, r9
- bl DestroyAnimVisualTask
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102BE8
-
- thumb_func_start sub_8102CA0
-sub_8102CA0: @ 8102CA0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0x1
- ldr r6, =gUnknown_08593020
-_08102CAA:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r6
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08102CAA
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102CA0
-
- thumb_func_start sub_8102CD4
-sub_8102CD4: @ 8102CD4
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- bl sub_80A6838
- ldr r4, =gBattleAnimArgs
- ldrb r1, [r4]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r2, =gUnknown_08593020
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08102D10
- lsls r2, r0, 4
- ldrb r1, [r5, 0x5]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
-_08102D10:
- ldrh r0, [r4, 0x2]
- movs r1, 0
- strh r0, [r5, 0x30]
- strh r1, [r5, 0x32]
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x34]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _08102D34
- movs r6, 0x30
- movs r3, 0x28
- b _08102D4E
- .pool
-_08102D34:
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r3, r0, 24
-_08102D4E:
- ldrh r0, [r5, 0x20]
- lsls r1, r0, 4
- strh r1, [r5, 0x36]
- ldrh r1, [r5, 0x22]
- lsls r2, r1, 4
- strh r2, [r5, 0x38]
- subs r0, r6, r0
- lsls r0, 16
- asrs r0, 16
- subs r1, r3, r1
- lsls r1, 16
- asrs r1, 16
- adds r2, r5, 0
- adds r2, 0x3A
- adds r3, r5, 0
- adds r3, 0x3C
- movs r4, 0x28
- str r4, [sp]
- bl sub_8102D8C
- ldr r0, =sub_8102DE4
- str r0, [r5, 0x1C]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102CD4
-
- thumb_func_start sub_8102D8C
-sub_8102D8C: @ 8102D8C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r2, 0
- mov r8, r3
- ldr r2, [sp, 0x18]
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 24
- lsrs r1, r2, 24
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bge _08102DAE
- lsls r0, r1, 24
- negs r0, r0
- lsrs r1, r0, 24
-_08102DAE:
- lsls r5, r2, 8
- lsls r1, 24
- asrs r1, 24
- adds r0, r5, 0
- bl __divsi3
- adds r4, r0, 0
- cmp r4, 0
- bne _08102DC2
- movs r4, 0x1
-_08102DC2:
- adds r0, r5, 0
- adds r1, r4, 0
- bl __divsi3
- strh r0, [r7]
- lsls r0, r6, 16
- asrs r0, 8
- adds r1, r4, 0
- bl __divsi3
- mov r1, r8
- strh r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8102D8C
-
- thumb_func_start sub_8102DE4
-sub_8102DE4: @ 8102DE4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x2E]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r1, r0, r1
- adds r0, r1, 0
- cmp r1, 0
- bge _08102E00
- adds r0, 0xFF
-_08102E00:
- asrs r0, 8
- lsls r0, 8
- subs r0, r1, r0
- ldrh r1, [r4, 0x3A]
- ldrh r2, [r4, 0x36]
- adds r1, r2
- strh r1, [r4, 0x36]
- ldrh r2, [r4, 0x3C]
- ldrh r3, [r4, 0x38]
- adds r2, r3
- strh r2, [r4, 0x38]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r4, 0x20]
- lsls r2, 16
- asrs r2, 20
- strh r2, [r4, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0xF
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- ldrh r0, [r4, 0x20]
- adds r0, 0x10
- lsls r0, 16
- movs r1, 0x88
- lsls r1, 17
- cmp r0, r1
- bhi _08102E4E
- lsls r0, r2, 16
- asrs r1, r0, 16
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- blt _08102E4E
- cmp r1, 0x80
- ble _08102E56
-_08102E4E:
- adds r0, r4, 0
- bl move_anim_8074EE0
- b _08102EA6
-_08102E56:
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- cmp r1, 0
- beq _08102EA6
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, r1
- ble _08102EA6
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08102E7E
- strh r5, [r4, 0x30]
-_08102E7E:
- ldr r2, =gUnknown_08593020
- movs r3, 0x30
- ldrsh r1, [r4, r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08102EA6
- lsls r2, r0, 4
- ldrb r1, [r4, 0x5]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x5]
-_08102EA6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102DE4
-
- thumb_func_start sub_8102EB0
-sub_8102EB0: @ 8102EB0
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r7, =gBattleAnimAttacker
- ldrb r0, [r7]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08102ECE
- ldr r1, =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_08102ECE:
- ldrb r0, [r7]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- movs r5, 0
- strh r0, [r6, 0x20]
- ldrb r0, [r7]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r4, 0x4]
- adds r0, r2
- strh r0, [r6, 0x22]
- ldrb r1, [r4]
- adds r0, r6, 0
- bl StartSpriteAnim
- strh r5, [r6, 0x32]
- strh r5, [r6, 0x34]
- ldrh r0, [r6, 0x20]
- lsls r0, 4
- strh r0, [r6, 0x36]
- ldrh r0, [r6, 0x22]
- lsls r0, 4
- strh r0, [r6, 0x38]
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- lsls r0, 4
- movs r1, 0x5
- bl __divsi3
- strh r0, [r6, 0x3A]
- movs r2, 0x4
- ldrsh r0, [r4, r2]
- lsls r0, 7
- movs r1, 0x5
- bl __divsi3
- strh r0, [r6, 0x3C]
- ldr r0, =sub_8102F40
- str r0, [r6, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102EB0
-
- thumb_func_start sub_8102F40
-sub_8102F40: @ 8102F40
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- strh r0, [r4, 0x36]
- ldrh r1, [r4, 0x3C]
- ldrh r2, [r4, 0x38]
- adds r1, r2
- strh r1, [r4, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r4, 0x22]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- ble _08102F9E
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08102F9E
- ldrh r0, [r4, 0x32]
- adds r0, 0x10
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r1, 0x12
- bl Cos
- strh r0, [r4, 0x24]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- movs r1, 0x12
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08102F9E
- movs r0, 0x1
- strh r0, [r4, 0x34]
-_08102F9E:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x30
- bne _08102FB2
- adds r0, r4, 0
- bl move_anim_8074EE0
-_08102FB2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8102F40
-
- thumb_func_start sub_8102FB8
-sub_8102FB8: @ 8102FB8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _08102FDC
- ldrb r0, [r5, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r5, 0x3]
- movs r6, 0x10
- b _08102FDE
- .pool
-_08102FDC:
- ldr r6, =0x0000fff0
-_08102FDE:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x8
- strh r0, [r5, 0x22]
- movs r0, 0x8
- strh r0, [r5, 0x2E]
- ldr r0, =WaitAnimForDuration
- str r0, [r5, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8102FB8
-
- thumb_func_start sub_8103028
-sub_8103028: @ 8103028
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_80A6838
- ldrh r0, [r4, 0x22]
- adds r0, 0x8
- strh r0, [r4, 0x22]
- ldr r5, =gBattleAnimArgs
- ldrb r1, [r5, 0x2]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r2, =gUnknown_08593020
- movs r0, 0x4
- ldrsh r1, [r5, r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08103068
- lsls r2, r0, 4
- ldrb r1, [r4, 0x5]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x5]
-_08103068:
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- cmp r0, 0
- bne _08103074
- ldr r2, =0x0000ffe0
-_08103074:
- movs r0, 0x28
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x20]
- strh r1, [r4, 0x30]
- lsls r0, r2, 16
- asrs r0, 16
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- subs r0, 0x28
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl InitAnimLinearTranslation
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x38]
- ldr r0, =sub_81030B0
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103028
-
- thumb_func_start sub_81030B0
-sub_81030B0: @ 81030B0
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- bne _08103100
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Sin
- lsls r0, 16
- lsrs r1, r0, 16
- ldrh r2, [r4, 0x24]
- movs r3, 0x24
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bge _081030DC
- lsls r0, r1, 16
- negs r0, r0
- lsrs r1, r0, 16
-_081030DC:
- lsls r0, r1, 16
- asrs r0, 16
- adds r0, r2
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- ldrh r3, [r4, 0x26]
- adds r0, r3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _08103106
-_08103100:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08103106:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81030B0
-
- thumb_func_start sub_810310C
-sub_810310C: @ 810310C
- push {r4-r6,lr}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0810312C
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_80A861C
- adds r0, 0x8
- b _08103136
-_0810312C:
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_80A861C
- subs r0, 0x8
-_08103136:
- strh r0, [r6, 0x20]
- adds r0, r5, 0
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- adds r0, r5, 0
- movs r1, 0
- bl sub_80A861C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08103158
- adds r0, 0x3
-_08103158:
- asrs r0, 2
- subs r0, r4, r0
- strh r0, [r6, 0x22]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_810310C
-
- thumb_func_start sub_8103164
-sub_8103164: @ 8103164
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08103180
- ldr r0, =gBattleAnimAttacker
- b _08103182
- .pool
-_08103180:
- ldr r0, =gBattleAnimTarget
-_08103182:
- ldrb r4, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_810310C
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- negs r1, r0
- orrs r1, r0
- lsrs r1, 31
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x2]
- strh r0, [r5, 0x2E]
- adds r0, r1, 0x2
- strh r0, [r5, 0x30]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r1, =sub_81031D0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67D8
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103164
-
- thumb_func_start sub_81031D0
-sub_81031D0: @ 81031D0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _081031F8
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, =sub_80A67D8
- str r0, [r4, 0x1C]
-_081031F8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81031D0
-
- thumb_func_start sub_8103208
-sub_8103208: @ 8103208
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08103224
- ldr r0, =gBattleAnimAttacker
- b _08103226
- .pool
-_08103224:
- ldr r0, =gBattleAnimTarget
-_08103226:
- ldrb r0, [r0]
- adds r1, r4, 0
- bl sub_810310C
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r1, =sub_8103250
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67BC
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103208
-
- thumb_func_start sub_8103250
-sub_8103250: @ 8103250
- 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, 0x10
- ble _08103276
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r1, =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67BC
- str r0, [r4, 0x1C]
-_08103276:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103250
-
- thumb_func_start sub_8103284
-sub_8103284: @ 8103284
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _081032A0
- ldr r0, =gBattleAnimAttacker
- b _081032A2
- .pool
-_081032A0:
- ldr r0, =gBattleAnimTarget
-_081032A2:
- ldrb r5, [r0]
- adds r0, r5, 0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_80A861C
- strh r0, [r4, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bgt _081032CA
- movs r0, 0xA
- strh r0, [r4, 0x22]
-_081032CA:
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- strh r6, [r4, 0x30]
- adds r1, r4, 0
- adds r1, 0x43
- ldrb r0, [r1]
- strh r0, [r4, 0x32]
- ldrb r0, [r1]
- adds r0, 0x4
- strh r0, [r4, 0x34]
- strh r6, [r4, 0x36]
- ldr r1, =sub_8103300
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67BC
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103284
-
- thumb_func_start sub_8103300
-sub_8103300: @ 8103300
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x36]
- adds r0, 0x1
- strh r0, [r1, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _08103316
- ldr r0, =sub_8103320
- str r0, [r1, 0x1C]
-_08103316:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103300
-
- thumb_func_start sub_8103320
-sub_8103320: @ 8103320
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r1, r0, 0x4
- strh r1, [r2, 0x30]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFE
- ble _08103352
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _0810334C
- strh r0, [r2, 0x24]
- ldr r0, =sub_8103250
- str r0, [r2, 0x1C]
- b _08103388
- .pool
-_0810334C:
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2, 0x30]
-_08103352:
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r0, 0x4F
- ble _08103362
- ldrh r0, [r2, 0x34]
- adds r1, r2, 0
- adds r1, 0x43
- strb r0, [r1]
-_08103362:
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- cmp r0, 0x9F
- ble _08103372
- ldrh r0, [r2, 0x32]
- adds r1, r2, 0
- adds r1, 0x43
- strb r0, [r1]
-_08103372:
- ldr r1, =gSineTable
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- asrs r1, r0, 1
- adds r0, r1
- strh r0, [r2, 0x24]
-_08103388:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103320
-
- thumb_func_start sub_8103390
-sub_8103390: @ 8103390
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _081033AC
- ldr r0, =gBattleAnimAttacker
- b _081033AE
- .pool
-_081033AC:
- ldr r0, =gBattleAnimTarget
-_081033AE:
- ldrb r4, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_810310C
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _081033D4
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0x2
- b _081033DE
- .pool
-_081033D4:
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x3
-_081033DE:
- strh r0, [r5, 0x2E]
- ldr r0, =sub_81033F0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103390
-
- thumb_func_start sub_81033F0
-sub_81033F0: @ 81033F0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- ble _0810341E
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r1, =sub_810342C
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67D8
- str r0, [r4, 0x1C]
-_0810341E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81033F0
-
- thumb_func_start sub_810342C
-sub_810342C: @ 810342C
- 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, 0x5
- ble _08103444
- adds r0, r1, 0
- bl DestroyAnimSprite
-_08103444:
- pop {r0}
- bx r0
- thumb_func_end sub_810342C
-
- .align 2, 0
diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s
deleted file mode 100644
index c8cd53398..000000000
--- a/asm/battle_anim_effects_2.s
+++ /dev/null
@@ -1,7544 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8103448
-sub_8103448: @ 8103448
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_80A6838
- ldr r5, =gBattleAnimArgs
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_80A6864
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x34]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x36]
- ldr r1, =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, =sub_80A6450
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103448
-
- thumb_func_start sub_8103498
-sub_8103498: @ 8103498
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _081034B4
- ldr r0, =gBattleAnimAttacker
- b _081034B6
- .pool
-_081034B4:
- ldr r0, =gBattleAnimTarget
-_081034B6:
- ldrb r0, [r0]
- adds r1, r4, 0
- bl sub_810310C
- movs r0, 0
- strh r0, [r4, 0x2E]
- strh r0, [r4, 0x30]
- ldr r0, =sub_81034D8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103498
-
- thumb_func_start sub_81034D8
-sub_81034D8: @ 81034D8
- push {lr}
- adds r1, r0, 0
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- beq _0810350A
- cmp r0, 0x1
- bgt _081034EE
- cmp r0, 0
- beq _081034F4
- b _08103538
-_081034EE:
- cmp r0, 0x2
- beq _08103524
- b _08103538
-_081034F4:
- ldrh r0, [r1, 0x26]
- subs r0, 0x3
- strh r0, [r1, 0x26]
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _08103538
- b _0810351C
-_0810350A:
- ldrh r0, [r1, 0x26]
- adds r0, 0x3
- strh r0, [r1, 0x26]
- ldrh r0, [r1, 0x30]
- subs r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _08103538
-_0810351C:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- b _08103538
-_08103524:
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x40
- bne _08103538
- adds r0, r1, 0
- bl DestroyAnimSprite
-_08103538:
- pop {r0}
- bx r0
- thumb_func_end sub_81034D8
-
- thumb_func_start sub_810353C
-sub_810353C: @ 810353C
- push {r4,lr}
- adds r4, r0, 0
- ldr r3, =gSprites
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r4, 0x30]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x30]
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- cmp r2, 0
- bne _0810357A
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x24]
- adds r0, r4, 0
- bl move_anim_8074EE0
-_0810357A:
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810353C
-
- thumb_func_start sub_810358C
-sub_810358C: @ 810358C
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- adds r0, r1
- ldrb r6, [r0]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _081035E4
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r5, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r5, 0x20]
- adds r1, r0, 0
- b _081035EE
- .pool
-_081035E4:
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- strh r0, [r5, 0x20]
-_081035EE:
- ldrh r0, [r1, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x30]
- strh r6, [r5, 0x32]
- ldr r0, =sub_810353C
- str r0, [r5, 0x1C]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810358C
-
- thumb_func_start sub_8103620
-sub_8103620: @ 8103620
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x38]
- ldr r0, =WaitAnimForDuration
- str r0, [r4, 0x1C]
- ldr r1, =sub_8103658
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103620
-
- thumb_func_start sub_8103658
-sub_8103658: @ 8103658
- push {lr}
- ldrh r1, [r0, 0x30]
- strh r1, [r0, 0x2E]
- ldrh r1, [r0, 0x20]
- strh r1, [r0, 0x32]
- ldrh r1, [r0, 0x22]
- adds r1, 0xF
- strh r1, [r0, 0x36]
- ldr r1, =StartAnimLinearTranslation
- str r1, [r0, 0x1C]
- ldr r1, =sub_8103680
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103658
-
- thumb_func_start sub_8103680
-sub_8103680: @ 8103680
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x38]
- movs r3, 0x38
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _08103696
- adds r0, r1, 0
- bl DestroyAnimSprite
- b _0810369A
-_08103696:
- subs r0, r2, 0x1
- strh r0, [r1, 0x38]
-_0810369A:
- pop {r0}
- bx r0
- thumb_func_end sub_8103680
-
- thumb_func_start sub_81036A0
-sub_81036A0: @ 81036A0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_80A7270
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81036DC
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81036A0
-
- thumb_func_start sub_81036DC
-sub_81036DC: @ 81036DC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r1, r0, r1
- ldrb r4, [r1]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08103718
- ldr r1, =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x8]
- negs r0, r0
- lsls r0, 16
- lsrs r3, r0, 16
- adds r6, r2, 0
- b _08103726
- .pool
-_08103718:
- ldr r2, =gTasks
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r0, r2
- ldrh r3, [r0, 0x8]
- adds r6, r1, 0
-_08103726:
- movs r2, 0x80
- lsls r2, 1
- adds r0, r4, 0
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldr r1, =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08103760
- ldrh r0, [r1, 0x8]
- adds r0, 0xB0
- strh r0, [r1, 0x8]
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x26]
- adds r1, 0x1
- b _0810378A
- .pool
-_08103760:
- cmp r0, 0x1
- bne _08103776
- ldrh r0, [r1, 0xE]
- adds r0, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- bne _081037D0
- movs r0, 0x2
- b _081037CE
-_08103776:
- ldrh r0, [r1, 0x8]
- subs r0, 0xB0
- strh r0, [r1, 0x8]
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x26]
- subs r1, 0x1
-_0810378A:
- strh r1, [r0, 0x26]
- adds r0, r4, 0
- bl sub_80A73A0
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r3, 0x8
- ldrsh r2, [r1, r3]
- movs r0, 0xF2
- lsls r0, 4
- cmp r2, r0
- beq _081037AA
- cmp r2, 0
- bne _081037D0
-_081037AA:
- ldrh r2, [r1, 0xA]
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0x2
- bne _081037CC
- adds r0, r4, 0
- bl sub_80A7344
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _081037D0
- .pool
-_081037CC:
- adds r0, r2, 0x1
-_081037CE:
- strh r0, [r1, 0xA]
-_081037D0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81036DC
-
- thumb_func_start sub_81037D8
-sub_81037D8: @ 81037D8
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_80A6838
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08103804
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- adds r5, r0, 0
- b _08103810
- .pool
-_08103804:
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r5, r1, 0
-_08103810:
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810384C
- adds r3, r4, 0
- adds r3, 0x3F
- ldrb r0, [r3]
- movs r1, 0x1
- adds r2, r0, 0
- orrs r2, r1
- strb r2, [r3]
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08103860
- movs r0, 0x2
- orrs r2, r0
- strb r2, [r3]
- b _08103860
- .pool
-_0810384C:
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _08103860
- adds r2, r4, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
-_08103860:
- ldr r0, =sub_80A67D8
- str r0, [r4, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81037D8
-
- thumb_func_start sub_810387C
-sub_810387C: @ 810387C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl InitAnimSpritePos
- ldr r0, =sub_80A67BC
- str r0, [r4, 0x1C]
- ldr r1, =sub_81038A0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810387C
-
- thumb_func_start sub_81038A0
-sub_81038A0: @ 81038A0
- push {lr}
- movs r1, 0x6
- strh r1, [r0, 0x2E]
- ldrh r1, [r0, 0x20]
- strh r1, [r0, 0x32]
- ldrh r1, [r0, 0x22]
- subs r1, 0x20
- strh r1, [r0, 0x36]
- ldr r1, =StartAnimLinearTranslation
- str r1, [r0, 0x1C]
- ldr r1, =DestroyAnimSprite
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81038A0
-
- thumb_func_start sub_81038C8
-sub_81038C8: @ 81038C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _081038EC
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- b _0810390E
- .pool
-_081038EC:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810390E
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
-_0810390E:
- adds r0, r5, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r6, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r6, 0x4]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r6, 0x6]
- adds r0, r2
- lsls r0, 16
- lsrs r0, 16
- adds r7, r0, 0
- ldrh r1, [r5, 0x20]
- mov r2, r8
- lsls r0, r2, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r5, 0x22]
- lsls r1, r7, 16
- asrs r1, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl ArcTan2Neg
- lsls r0, 16
- movs r1, 0xF0
- lsls r1, 24
- adds r0, r1
- lsrs r4, r0, 16
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _08103980
- ldr r2, =0xffffa000
- adds r0, r4, r2
- lsls r0, 16
- lsrs r4, r0, 16
-_08103980:
- movs r3, 0x80
- lsls r3, 1
- str r4, [sp]
- adds r0, r5, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_80A73E0
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x2E]
- mov r0, r8
- strh r0, [r5, 0x32]
- strh r7, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81038C8
-
- thumb_func_start sub_81039CC
-sub_81039CC: @ 81039CC
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r3, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _081039F6
- ldr r2, =gTasks
- movs r0, 0x3C
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0xA]
- subs r1, 0x1
- strh r1, [r0, 0xA]
- adds r0, r3, 0
- bl DestroySprite
-_081039F6:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81039CC
-
- thumb_func_start sub_8103A00
-sub_8103A00: @ 8103A00
- push {r4,lr}
- adds r2, r0, 0
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r3, 0x2E
- ldrsh r1, [r2, r3]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- ble _08103A34
- ldrh r0, [r2, 0x34]
- ldrh r1, [r2, 0x38]
- adds r0, r1
- strh r0, [r2, 0x38]
- ldrh r0, [r2, 0x36]
- ldrh r3, [r2, 0x3A]
- adds r0, r3
- b _08103A42
- .pool
-_08103A34:
- ldrh r0, [r2, 0x38]
- ldrh r1, [r2, 0x34]
- subs r0, r1
- strh r0, [r2, 0x38]
- ldrh r0, [r2, 0x3A]
- ldrh r1, [r2, 0x36]
- subs r0, r1
-_08103A42:
- strh r0, [r2, 0x3A]
- ldrh r0, [r2, 0x38]
- ldrh r1, [r2, 0x30]
- adds r3, r0, r1
- strh r3, [r2, 0x30]
- ldrh r0, [r2, 0x3A]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- ldrh r1, [r4, 0x16]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08103A66
- lsls r0, r3, 16
- lsrs r0, 24
- negs r0, r0
- b _08103A6A
-_08103A66:
- lsls r0, r3, 16
- lsrs r0, 24
-_08103A6A:
- strh r0, [r2, 0x24]
- ldrh r1, [r4, 0x18]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08103A7E
- ldrh r0, [r2, 0x32]
- lsrs r0, 8
- negs r0, r0
- b _08103A82
-_08103A7E:
- ldrh r0, [r2, 0x32]
- lsrs r0, 8
-_08103A82:
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r2, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _08103A98
- movs r0, 0x1E
- strh r0, [r2, 0x2E]
- ldr r0, =sub_81039CC
- str r0, [r2, 0x1C]
-_08103A98:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103A00
-
- thumb_func_start sub_8103AA4
-sub_8103AA4: @ 8103AA4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- movs r0, 0x3C
- ldrsh r1, [r7, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, =gTasks
- adds r6, r0, r1
- ldrh r2, [r6, 0x16]
- movs r1, 0x2
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- ldrh r3, [r7, 0x30]
- adds r2, r0, r3
- strh r2, [r7, 0x30]
- ldrh r0, [r6, 0x18]
- ands r1, r0
- ldrh r0, [r7, 0x32]
- adds r1, r0
- strh r1, [r7, 0x32]
- ldrh r1, [r6, 0x16]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08103AEC
- lsls r0, r2, 16
- lsrs r0, 24
- negs r0, r0
- b _08103AF0
- .pool
-_08103AEC:
- lsls r0, r2, 16
- lsrs r0, 24
-_08103AF0:
- strh r0, [r7, 0x24]
- ldrh r1, [r6, 0x18]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08103B04
- ldrh r0, [r7, 0x32]
- lsrs r0, 8
- negs r0, r0
- b _08103B08
-_08103B04:
- ldrh r0, [r7, 0x32]
- lsrs r0, 8
-_08103B08:
- strh r0, [r7, 0x26]
- ldrh r0, [r7, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r7, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _08103BD4
- movs r4, 0
- movs r0, 0x8
- strh r0, [r7, 0x2E]
- movs r0, 0x4
- strh r0, [r6, 0x12]
- movs r0, 0x80
- lsls r0, 5
- bl sub_8151624
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r7, 0x24]
- ldrh r1, [r7, 0x20]
- adds r2, r0, r1
- strh r2, [r7, 0x20]
- ldrh r0, [r7, 0x26]
- ldrh r3, [r7, 0x22]
- adds r0, r3
- strh r0, [r7, 0x22]
- strh r4, [r7, 0x26]
- strh r4, [r7, 0x24]
- ldrh r3, [r6, 0x1E]
- movs r0, 0x1E
- ldrsh r1, [r6, r0]
- lsls r0, r2, 16
- asrs r0, 16
- cmp r1, r0
- blt _08103B52
- subs r0, r3, r2
- b _08103B54
-_08103B52:
- subs r0, r2, r3
-_08103B54:
- lsls r0, 24
- lsrs r4, r0, 16
- ldrh r3, [r6, 0x20]
- movs r0, 0x20
- ldrsh r1, [r6, r0]
- ldrh r2, [r7, 0x22]
- movs r6, 0x22
- ldrsh r0, [r7, r6]
- cmp r1, r0
- blt _08103B6C
- subs r0, r3, r2
- b _08103B6E
-_08103B6C:
- subs r0, r2, r3
-_08103B6E:
- lsls r0, 24
- lsrs r0, 16
- mov r8, r0
- movs r0, 0
- strh r0, [r7, 0x32]
- strh r0, [r7, 0x30]
- strh r0, [r7, 0x3A]
- strh r0, [r7, 0x38]
- lsls r0, r4, 16
- asrs r0, 16
- lsls r5, 16
- asrs r5, 16
- adds r1, r5, 0
- bl sub_8151534
- adds r4, r0, 0
- lsls r4, 16
- asrs r4, 16
- movs r6, 0xE0
- lsls r6, 1
- adds r0, r6, 0
- bl sub_8151624
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_8151534
- strh r0, [r7, 0x34]
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- adds r1, r5, 0
- bl sub_8151534
- adds r4, r0, 0
- lsls r4, 16
- asrs r4, 16
- adds r0, r6, 0
- bl sub_8151624
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_8151534
- strh r0, [r7, 0x36]
- ldr r0, =sub_8103A00
- str r0, [r7, 0x1C]
-_08103BD4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103AA4
-
- thumb_func_start sub_8103BE4
-sub_8103BE4: @ 8103BE4
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08103C02
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_08103C02:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103BE4
-
- thumb_func_start sub_8103C0C
-sub_8103C0C: @ 8103C0C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x8]
- subs r1, r0, 0x1
- strh r1, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bgt _08103CE0
- ldr r0, =gUnknown_085933B0
- movs r2, 0x1A
- ldrsh r1, [r5, r2]
- movs r3, 0x1C
- ldrsh r2, [r5, r3]
- ldrb r3, [r5, 0xC]
- ldrb r4, [r5, 0xA]
- subs r3, r4
- lsls r3, 24
- lsrs r3, 24
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r0, 4
- add r0, r12
- lsls r0, 2
- ldr r1, =gSprites
- adds r6, r0, r1
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _08103C6C
- cmp r0, 0x2
- beq _08103C82
- b _08103C90
- .pool
-_08103C6C:
- ldrb r2, [r6, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x18
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x57
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x3]
- b _08103C90
-_08103C82:
- ldrb r0, [r6, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r6, 0x3]
-_08103C90:
- ldr r3, =gTasks
- lsls r2, r7, 2
- adds r2, r7
- lsls r2, 3
- adds r4, r2, r3
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0x14]
- subs r0, r1
- strh r0, [r6, 0x2E]
- strh r7, [r6, 0x3C]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- adds r0, 0xD
- lsls r0, 1
- adds r0, r2
- adds r3, 0x8
- adds r0, r3
- mov r2, r12
- strh r2, [r0]
- ldrh r0, [r4, 0xE]
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r0, 0x3F
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x9A
- bl PlaySE12WithPanning
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- cmp r0, 0x2
- ble _08103CE0
- ldr r0, =sub_8103BE4
- str r0, [r4]
-_08103CE0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103C0C
-
- thumb_func_start sub_8103CF0
-sub_8103CF0: @ 8103CF0
- 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
- movs r0, 0
- mov r9, r0
- movs r5, 0
- mov r0, sp
- mov r1, r9
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x2
- strh r1, [r4]
- bl IsContest
- lsls r0, 24
- mov r10, r4
- cmp r0, 0
- beq _08103D5C
- ldr r1, =gTasks
- lsls r2, r7, 2
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0, 0x10]
- ldr r3, =gBattleAnimArgs
- ldrh r0, [r3]
- negs r0, r0
- strh r0, [r3]
- ldrh r1, [r3, 0x4]
- movs r0, 0x1
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _08103D54
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strh r0, [r3, 0x4]
- b _08103DB6
- .pool
-_08103D54:
- movs r0, 0x1
- orrs r0, r1
- strh r0, [r3, 0x4]
- b _08103DB6
-_08103D5C:
- ldr r1, =gBattlerPositions
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- lsls r2, r7, 2
- mov r8, r2
- cmp r0, 0
- bne _08103DB6
- ldr r1, =gTasks
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- strh r3, [r0, 0x10]
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r2]
- negs r0, r0
- strh r0, [r2]
- ldrh r0, [r2, 0x2]
- negs r0, r0
- strh r0, [r2, 0x2]
- ldrh r1, [r2, 0x4]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08103DB0
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- b _08103DB4
- .pool
-_08103DB0:
- movs r0, 0x1
- orrs r0, r1
-_08103DB4:
- strh r0, [r2, 0x4]
-_08103DB6:
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- ldr r1, =gTasks
- mov r3, r8
- adds r4, r3, r7
- lsls r4, 3
- adds r4, r1
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1A]
- adds r6, r0, 0
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- mov r9, r0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08103E20
- ldr r4, =gBattleAnimTarget
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08103E20
- ldrb r0, [r4]
- movs r1, 0
- mov r2, sp
- mov r3, r10
- bl SetAverageBattlerPositions
- b _08103E42
- .pool
-_08103E20:
- mov r5, sp
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r1, r10
- strh r0, [r1]
-_08103E42:
- mov r4, sp
- ldr r0, =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- mov r2, sp
- ldr r3, =gBattleAnimArgs
- ldrh r0, [r3]
- ldrh r2, [r2]
- adds r0, r2
- strh r0, [r1, 0x1E]
- strh r0, [r4]
- ldrh r0, [r3, 0x2]
- mov r3, r10
- ldrh r3, [r3]
- adds r0, r3
- strh r0, [r1, 0x20]
- mov r1, r10
- strh r0, [r1]
- mov r0, sp
- ldrh r2, [r0]
- movs r3, 0
- ldrsh r0, [r0, r3]
- adds r1, r6, 0
- cmp r0, r1
- blt _08103E88
- subs r0, r2, r1
- b _08103E8A
- .pool
-_08103E88:
- subs r0, r1, r2
-_08103E8A:
- lsls r0, 16
- lsrs r0, 16
- lsls r4, r0, 16
- asrs r4, 16
- ldr r5, =gBattleAnimArgs
- ldrh r1, [r5, 0x4]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- lsls r0, 16
- asrs r0, 16
- bl sub_8151624
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_8151534
- ldr r2, =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r6, r1, r2
- strh r0, [r6, 0x12]
- movs r1, 0x12
- ldrsh r0, [r6, r1]
- movs r1, 0x80
- bl sub_8151534
- strh r0, [r6, 0x14]
- ldrh r0, [r5, 0x4]
- strh r0, [r6, 0x16]
- mov r2, r10
- ldrh r1, [r2]
- movs r3, 0
- ldrsh r0, [r2, r3]
- mov r4, r9
- cmp r0, r4
- blt _08103F08
- subs r4, r1, r4
- lsls r4, 16
- asrs r4, 16
- movs r1, 0x12
- ldrsh r0, [r6, r1]
- bl sub_8151624
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_8151534
- movs r1, 0x2
- negs r1, r1
- ands r1, r0
- strh r1, [r6, 0x18]
- b _08103F28
- .pool
-_08103F08:
- subs r4, r1
- lsls r4, 16
- asrs r4, 16
- movs r2, 0x12
- ldrsh r0, [r6, r2]
- bl sub_8151624
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_8151534
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r6, 0x18]
-_08103F28:
- ldr r1, =gTasks
- mov r3, r8
- adds r0, r3, r7
- lsls r0, 3
- adds r5, r0, r1
- ldr r4, =gBattleAnimArgs
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0xE]
- ldrh r1, [r4, 0x8]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08103F78
- movs r0, 0x80
- eors r0, r1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3F
- ble _08103FA0
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =0x0000ffc0
- adds r1, r2, 0
- ldrh r4, [r4, 0x8]
- adds r1, r4
- adds r0, r1
- b _08103FB0
- .pool
-_08103F78:
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x3F
- ble _08103FA0
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =0x0000ffc0
- adds r1, r3, 0
- ldrh r4, [r4, 0x8]
- adds r1, r4
- adds r0, r1
- b _08103FB0
- .pool
-_08103FA0:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x8]
- subs r0, r1
-_08103FB0:
- strh r0, [r5, 0xC]
- ldr r0, =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0x2
- bgt _08103FC8
- movs r0, 0x3
- strh r0, [r1, 0xC]
-_08103FC8:
- ldr r0, =sub_8103C0C
- 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
- .pool
- thumb_func_end sub_8103CF0
-
- thumb_func_start sub_8103FE8
-sub_8103FE8: @ 8103FE8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl InitAnimSpritePos
- ldr r0, =gUnknown_085934A0
- ldrh r0, [r0, 0x2]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r4, 0x2E]
- ldr r0, =sub_8104018
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8103FE8
-
- thumb_func_start sub_8104018
-sub_8104018: @ 8104018
- push {r4-r7,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _0810407C
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r5, [r4, 0x2E]
- ldr r1, =gPlttBufferFaded
- adds r0, r5, 0
- adds r0, 0x8
- lsls r0, 1
- adds r0, r1
- ldrh r7, [r0]
- adds r6, r1, 0
- adds r1, r5, 0
- adds r1, 0x9
- lsls r0, r5, 1
- adds r0, r6
- adds r2, r0, 0
- adds r2, 0x10
- movs r3, 0x7
- lsls r1, 1
- adds r1, r6
-_08104050:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _08104050
- adds r0, r5, 0
- adds r0, 0xF
- lsls r0, 1
- adds r0, r6
- strh r7, [r0]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x18
- bne _0810407C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0810407C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104018
-
- thumb_func_start sub_8104088
-sub_8104088: @ 8104088
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _081040CC
- ldrh r0, [r4, 0x4]
- negs r0, r0
- strh r0, [r4, 0x4]
-_081040CC:
- lsls r0, r6, 16
- asrs r0, 16
- ldrh r1, [r4, 0x4]
- adds r0, r1
- lsls r0, 16
- ldrh r1, [r5, 0x20]
- lsrs r6, r0, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r5, 0x22]
- lsls r1, r7, 16
- asrs r1, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl ArcTan2Neg
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_80A73E0
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x2E]
- strh r6, [r5, 0x32]
- strh r7, [r5, 0x36]
- ldr r0, =sub_80A7000
- str r0, [r5, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104088
-
- thumb_func_start sub_810413C
-sub_810413C: @ 810413C
- ldr r1, =0x0000fff0
- strh r1, [r0, 0x32]
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- ldr r1, =sub_8104154
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_810413C
-
- thumb_func_start sub_8104154
-sub_8104154: @ 8104154
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08104178
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
-_08104178:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x5
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7E
- ble _081041B8
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _081041B8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081041B8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104154
-
- thumb_func_start sub_81041C4
-sub_81041C4: @ 81041C4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r4, 0x1C]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =sub_810421C
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81041C4
-
- thumb_func_start sub_810421C
-sub_810421C: @ 810421C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xA6
- bl PlaySE12WithPanning
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- movs r2, 0
- movs r1, 0x7
- adds r0, r4, 0
- adds r0, 0x3C
-_08104250:
- strh r2, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _08104250
- bl Random2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x7
- ands r0, r1
- ldr r2, =0x0000fff4
- adds r1, r2, 0
- subs r1, r0
- strh r1, [r4, 0x3A]
- bl Random2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA0
- bl __umodsi3
- adds r0, 0xA0
- strh r0, [r4, 0x3C]
- ldr r0, =sub_81042A0
- str r0, [r4, 0x1C]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810421C
-
- thumb_func_start sub_81042A0
-sub_81042A0: @ 81042A0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x3C]
- ldrh r2, [r4, 0x2E]
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r2, r0, 24
- strh r2, [r4, 0x24]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081042BE
- negs r0, r2
- strh r0, [r4, 0x24]
-_081042BE:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x3A
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7E
- ble _081042FE
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _081042FE
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081042FE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81042A0
-
- thumb_func_start sub_8104304
-sub_8104304: @ 8104304
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08104322
- ldrh r0, [r4, 0x22]
- adds r0, 0x10
- strh r0, [r4, 0x22]
-_08104322:
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0xC]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldr r0, =sub_80A62EC
- str r0, [r4, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104304
-
- thumb_func_start sub_8104364
-sub_8104364: @ 8104364
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- movs r7, 0x20
- ldr r4, =0x0000ffe0
- movs r0, 0x10
- mov r8, r0
- ldr r6, =0x0000fff0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08104390
- adds r7, r4, 0
- movs r4, 0x20
- mov r8, r6
- movs r6, 0x10
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_08104390:
- lsls r0, r7, 16
- asrs r0, 16
- ldrh r1, [r5, 0x20]
- adds r0, r1
- strh r0, [r5, 0x20]
- lsls r0, r4, 16
- asrs r0, 16
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- movs r0, 0x6
- strh r0, [r5, 0x2E]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- add r0, r8
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, =sub_81043F8
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104364
-
- thumb_func_start sub_81043F8
-sub_81043F8: @ 81043F8
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0810440E
- adds r0, r2, 0
- bl DestroyAnimSprite
-_0810440E:
- pop {r0}
- bx r0
- thumb_func_end sub_81043F8
-
- thumb_func_start sub_8104414
-sub_8104414: @ 8104414
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- movs r0, 0x20
- mov r8, r0
- ldr r4, =0x0000ffe0
- movs r2, 0x10
- mov r9, r2
- ldr r6, =0x0000fff0
- ldr r7, =gBattleAnimArgs
- ldrh r1, [r7]
- movs r2, 0
- ldrsh r0, [r7, r2]
- cmp r0, 0
- beq _08104448
- mov r8, r4
- movs r4, 0x20
- mov r9, r6
- movs r6, 0x10
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
-_08104448:
- mov r0, r8
- lsls r1, r0, 16
- asrs r1, 16
- ldrh r2, [r5, 0x20]
- adds r1, r2
- strh r1, [r5, 0x20]
- lsls r0, r4, 16
- asrs r0, 16
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- movs r0, 0x6
- strh r0, [r5, 0x2E]
- strh r1, [r5, 0x30]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- add r0, r9
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl InitAnimLinearTranslation
- ldrh r0, [r7]
- strh r0, [r5, 0x38]
- ldrh r0, [r5, 0x2E]
- strh r0, [r5, 0x3A]
- ldr r0, =sub_81044BC
- str r0, [r5, 0x1C]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104414
-
- thumb_func_start sub_81044BC
-sub_81044BC: @ 81044BC
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _08104520
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08104520
- adds r0, r4, 0
- movs r1, 0
- bl SeekSpriteAnim
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r2, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0x2
- strh r0, [r4, 0x24]
- ldr r0, =0x0000fffe
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- eors r0, r1
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x36]
- strh r2, [r4, 0x34]
- ldr r0, =sub_8104530
- str r0, [r4, 0x1C]
-_08104520:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81044BC
-
- thumb_func_start sub_8104530
-sub_8104530: @ 8104530
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08104548
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- negs r0, r0
- strh r0, [r4, 0x26]
-_08104548:
- ldrh r0, [r4, 0x34]
- movs r1, 0x1
- eors r0, r1
- movs r1, 0
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _0810458A
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x36]
- strh r1, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- movs r1, 0x1
- eors r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, =sub_8104594
- str r0, [r4, 0x1C]
-_0810458A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104530
-
- thumb_func_start sub_8104594
-sub_8104594: @ 8104594
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _081045A8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081045A8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8104594
-
- thumb_func_start sub_81045B0
-sub_81045B0: @ 81045B0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A7270
- adds r0, r4, 0
- movs r1, 0xD0
- movs r2, 0xD0
- movs r3, 0
- bl obj_id_set_rotscale
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- movs r1, 0
- bl sub_80A750C
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x50
- strh r1, [r0, 0x8]
- ldr r1, =sub_8104614
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81045B0
-
- thumb_func_start sub_8104614
-sub_8104614: @ 8104614
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- subs r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _08104664
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80A7344
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- movs r1, 0x1
- bl sub_80A750C
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08104664:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104614
-
- thumb_func_start sub_8104674
-sub_8104674: @ 8104674
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0x8]
- movs r1, 0
- bl sub_80A7270
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- strh r5, [r4, 0xE]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x10]
- strh r5, [r4, 0x12]
- strh r5, [r4, 0x14]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x16]
- ldr r0, =sub_81046CC
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104674
-
- thumb_func_start sub_81046CC
-sub_81046CC: @ 81046CC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _081046E6
- b _081047F6
-_081046E6:
- lsls r0, 2
- ldr r1, =_081046F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081046F8:
- .4byte _08104710
- .4byte _08104758
- .4byte _0810478E
- .4byte _08104794
- .4byte _081047A4
- .4byte _081047D8
-_08104710:
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08104720
- cmp r0, 0x3
- beq _08104720
- cmp r0, 0x6
- bne _08104728
-_08104720:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8104800
-_08104728:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x10]
- adds r0, 0x28
- strh r0, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- movs r1, 0x10
- ldrsh r2, [r4, r1]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_80A7E6C
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x20
- bne _081047F6
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- b _081047D0
-_08104758:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081047F6
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- cmp r1, 0x3
- bne _0810476E
- strh r0, [r4, 0xC]
- strh r1, [r4, 0xA]
- b _081047F6
-_0810476E:
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- movs r2, 0x80
- lsls r2, 1
- strh r2, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_80A7E6C
- movs r0, 0x2
- strh r0, [r4, 0xA]
- b _081047F6
-_0810478E:
- movs r0, 0
- strh r0, [r4, 0xA]
- b _081047F6
-_08104794:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- ble _081047F6
- b _081047CC
-_081047A4:
- ldrh r0, [r4, 0xC]
- adds r0, 0x2
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x10]
- subs r0, 0x50
- strh r0, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- movs r1, 0x10
- ldrsh r2, [r4, r1]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_80A7E6C
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x20
- bne _081047F6
-_081047CC:
- movs r0, 0
- strh r0, [r4, 0xC]
-_081047D0:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _081047F6
-_081047D8:
- ldrb r0, [r4, 0x8]
- bl sub_80A7344
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x26]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_081047F6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81046CC
-
- thumb_func_start sub_8104800
-sub_8104800: @ 8104800
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r0, 0
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r0, 16
- asrs r4, r0, 16
- cmp r4, 0
- blt _081048DA
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xFF
- bne _08104844
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
- b _081048DA
- .pool
-_08104844:
- ldr r5, =gSprites
- lsls r3, r4, 4
- adds r3, r4
- lsls r3, 2
- adds r4, r3, r5
- ldrb r1, [r4, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1F
- ands r6, r0
- lsls r2, r6, 1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- ldrb r0, [r7, 0x16]
- ldrb r1, [r7, 0xE]
- subs r0, r1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrh r0, [r7, 0xE]
- adds r0, 0x1
- strh r0, [r7, 0xE]
- ldrh r0, [r7, 0x14]
- adds r0, 0x1
- strh r0, [r7, 0x14]
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- mov r0, r9
- strh r0, [r4, 0x30]
- movs r0, 0x6
- strh r0, [r4, 0x32]
- adds r5, 0x1C
- adds r3, r5
- ldr r0, =sub_81048F0
- str r0, [r3]
- mov r1, r8
- lsls r0, r1, 24
- lsrs r0, 24
- movs r1, 0x10
- ldrsh r2, [r7, r1]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x1]
- movs r3, 0x4
- negs r3, r3
- ands r3, r0
- movs r0, 0x1
- orrs r3, r0
- strb r3, [r4, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r4, 0
- bl CalcCenterToCornerVec
-_081048DA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104800
-
- thumb_func_start sub_81048F0
-sub_81048F0: @ 81048F0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _0810492E
- ldr r3, =gTasks
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl obj_delete_but_dont_free_vram
-_0810492E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81048F0
-
- thumb_func_start sub_8104938
-sub_8104938: @ 8104938
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- ldr r5, =gBattleAnimArgs
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08104964
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _0810498A
- .pool
-_08104964:
- ldrb r0, [r5]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- strh r1, [r4, 0x8]
- strh r2, [r4, 0xA]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0xC]
- strh r2, [r4, 0xE]
- strh r2, [r4, 0x10]
- ldr r2, =gUnknown_085935E8
- adds r0, r4, 0
- bl sub_80A7CFC
- ldr r0, =sub_8104998
- str r0, [r4]
-_0810498A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104938
-
- thumb_func_start sub_8104998
-sub_8104998: @ 8104998
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r0, 0xA
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _08104A00
- cmp r5, 0x1
- bgt _081049C0
- cmp r5, 0
- beq _081049CA
- b _08104AA8
- .pool
-_081049C0:
- cmp r5, 0x2
- beq _08104A34
- cmp r5, 0x3
- beq _08104A64
- b _08104AA8
-_081049CA:
- adds r0, r4, 0
- bl sub_80A7D34
- ldrh r2, [r4, 0x10]
- adds r2, 0x3
- strh r2, [r4, 0x10]
- ldr r3, =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x26]
- adds r1, r2
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _08104AA8
- strh r5, [r4, 0xE]
- b _08104A5C
- .pool
-_08104A00:
- adds r0, r4, 0
- bl sub_80A7D34
- ldr r2, =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x10]
- ldrh r2, [r0, 0x26]
- adds r1, r2
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _08104AA8
- movs r0, 0
- strh r0, [r4, 0xE]
- b _08104A5C
- .pool
-_08104A34:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08104A5C
- ldr r2, =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x2
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0x10]
- subs r0, 0x2
- strh r0, [r4, 0x10]
- b _08104AA8
- .pool
-_08104A5C:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _08104AA8
-_08104A64:
- adds r0, r4, 0
- bl sub_80A7D34
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08104AA8
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- cmp r0, 0
- bne _08104A9C
- ldr r2, =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x26]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _08104AA8
- .pool
-_08104A9C:
- ldrb r1, [r4, 0x8]
- ldr r2, =gUnknown_085935E8
- adds r0, r4, 0
- bl sub_80A7CFC
- strh r5, [r4, 0xA]
-_08104AA8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104998
-
- thumb_func_start sub_8104AB4
-sub_8104AB4: @ 8104AB4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_08593608
- adds r0, r4, 0
- bl sub_80A7CFC
- ldr r0, =sub_8104AF0
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104AB4
-
- thumb_func_start sub_8104AF0
-sub_8104AF0: @ 8104AF0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r0, r1
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _08104B10
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08104B10:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104AF0
-
- thumb_func_start sub_8104B1C
-sub_8104B1C: @ 8104B1C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08104B50
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r4, 0x20]
- movs r0, 0x40
- b _08104B6A
- .pool
-_08104B50:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x20
- strh r0, [r4, 0x20]
- ldr r0, =0x0000ffc0
-_08104B6A:
- strh r0, [r4, 0x30]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- strh r0, [r4, 0x22]
- movs r0, 0x34
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x32]
- strh r1, [r4, 0x34]
- strh r1, [r4, 0x36]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A656C
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104B1C
-
- thumb_func_start sub_8104BAC
-sub_8104BAC: @ 8104BAC
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08104BC8
- ldr r0, =gBattleAnimAttacker
- b _08104BCA
- .pool
-_08104BC8:
- ldr r0, =gBattleAnimTarget
-_08104BCA:
- ldrb r5, [r0]
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08104BE4
- ldr r1, =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_08104BE4:
- adds r0, r5, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x20]
- adds r0, r5, 0
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x4]
- adds r0, r4
- strh r0, [r6, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- bgt _08104C16
- movs r0, 0x8
- strh r0, [r6, 0x22]
-_08104C16:
- ldr r1, =move_anim_8074EE0
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67BC
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104BAC
-
- thumb_func_start sub_8104C38
-sub_8104C38: @ 8104C38
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- strh r1, [r4, 0x8]
- strh r0, [r4, 0xA]
- ldr r2, =gUnknown_085936A4
- adds r0, r4, 0
- bl sub_80A7CFC
- ldr r0, =sub_8104C78
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104C38
-
- thumb_func_start sub_8104C78
-sub_8104C78: @ 8104C78
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r0, r1
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _08104C98
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08104C98:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104C78
-
- thumb_func_start sub_8104CA4
-sub_8104CA4: @ 8104CA4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r4, r1, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- strh r0, [r4, 0x8]
- strh r2, [r4, 0xA]
- movs r0, 0x4
- strh r0, [r4, 0xC]
- movs r0, 0x7
- strh r0, [r4, 0xE]
- movs r0, 0x3
- strh r0, [r4, 0x10]
- ldr r3, =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x20]
- strh r0, [r4, 0x12]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x14]
- strh r2, [r4, 0x16]
- strh r2, [r4, 0x18]
- movs r0, 0x2
- strh r0, [r4, 0x1A]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08104D0E
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0xC]
-_08104D0E:
- ldr r0, =sub_8104D28
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104CA4
-
- thumb_func_start sub_8104D28
-sub_8104D28: @ 8104D28
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r3, r0, r1
- ldrh r0, [r3, 0x16]
- adds r0, 0x1
- strh r0, [r3, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _08104D8E
- movs r0, 0
- strh r0, [r3, 0x16]
- ldrh r0, [r3, 0x18]
- adds r0, 0x1
- strh r0, [r3, 0x18]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08104D78
- ldr r2, =gSprites
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x1A]
- ldrh r2, [r0, 0x22]
- adds r1, r2
- b _08104D8C
- .pool
-_08104D78:
- ldr r2, =gSprites
- movs r5, 0x8
- ldrsh r1, [r3, r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- ldrh r2, [r3, 0x1A]
- subs r1, r2
-_08104D8C:
- strh r1, [r0, 0x22]
-_08104D8E:
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- beq _08104DDC
- cmp r0, 0x1
- bgt _08104DA4
- cmp r0, 0
- beq _08104DAA
- b _08104E6C
- .pool
-_08104DA4:
- cmp r0, 0x2
- beq _08104E0C
- b _08104E6C
-_08104DAA:
- ldr r2, =gSprites
- movs r5, 0x8
- ldrsh r1, [r3, r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0xC]
- ldrh r2, [r0, 0x20]
- adds r1, r2
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0xE]
- subs r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _08104E6C
- movs r0, 0xE
- strh r0, [r3, 0xE]
- movs r0, 0x1
- strh r0, [r3, 0xA]
- b _08104E6C
- .pool
-_08104DDC:
- ldr r2, =gSprites
- movs r5, 0x8
- ldrsh r1, [r3, r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- ldrh r2, [r3, 0xC]
- subs r1, r2
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0xE]
- subs r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _08104E6C
- movs r0, 0x7
- strh r0, [r3, 0xE]
- movs r0, 0x2
- strh r0, [r3, 0xA]
- b _08104E6C
- .pool
-_08104E0C:
- ldr r2, =gSprites
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0xC]
- ldrh r5, [r0, 0x20]
- adds r1, r5
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0xE]
- subs r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0
- bne _08104E6C
- ldrh r0, [r3, 0x10]
- subs r0, 0x1
- strh r0, [r3, 0x10]
- lsls r0, 16
- cmp r0, 0
- beq _08104E48
- movs r0, 0x7
- strh r0, [r3, 0xE]
- strh r1, [r3, 0xA]
- b _08104E6C
- .pool
-_08104E48:
- ldrh r1, [r3, 0x18]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08104E66
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- ldrh r2, [r3, 0x1A]
- subs r1, r2
- strh r1, [r0, 0x22]
-_08104E66:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08104E6C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8104D28
-
- thumb_func_start sub_8104E74
-sub_8104E74: @ 8104E74
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r5, r1, r0
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- bl GetBattlerYCoordWithElevation
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- movs r1, 0
- strh r0, [r5, 0x8]
- movs r0, 0x4
- strh r0, [r5, 0xA]
- strh r1, [r5, 0xC]
- strh r1, [r5, 0xE]
- strh r1, [r5, 0x10]
- strh r1, [r5, 0x12]
- ldrb r0, [r4]
- bl sub_80A861C
- strh r0, [r5, 0x26]
- ldrb r0, [r4]
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08104ED4
- ldr r0, =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r5, 0x14]
- ldr r0, =0x04000014
- b _08104EDC
- .pool
-_08104ED4:
- ldr r0, =gBattle_BG2_X
- ldrh r0, [r0]
- strh r0, [r5, 0x14]
- ldr r0, =0x04000018
-_08104EDC:
- str r0, [sp]
- ldrh r0, [r5, 0x8]
- adds r1, r0, 0
- subs r1, 0x40
- lsls r2, r1, 16
- lsls r0, 16
- cmp r2, r0
- bgt _08104F1A
- ldr r4, =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r4, r0
-_08104EF4:
- asrs r3, r2, 16
- cmp r3, 0
- blt _08104F0C
- lsls r1, r3, 1
- adds r2, r1, r4
- ldrh r0, [r5, 0x14]
- adds r0, 0xF0
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r5, 0x14]
- adds r0, 0xF0
- strh r0, [r1]
-_08104F0C:
- adds r0, r3, 0x1
- lsls r2, r0, 16
- asrs r1, r2, 16
- movs r3, 0x8
- ldrsh r0, [r5, r3]
- cmp r1, r0
- ble _08104EF4
-_08104F1A:
- ldr r0, =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldr r0, =sub_8104F54
- str r0, [r5]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104E74
-
- thumb_func_start sub_8104F54
-sub_8104F54: @ 8104F54
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r3, r0, r1
- movs r1, 0x10
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _08104F78
- cmp r0, 0x1
- beq _08104F8E
- b _0810500E
- .pool
-_08104F78:
- ldrh r0, [r3, 0x12]
- adds r0, 0x1
- strh r0, [r3, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _0810500E
- ldrh r0, [r3, 0x10]
- adds r0, 0x1
- strh r0, [r3, 0x10]
- b _0810500E
-_08104F8E:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0810500E
- movs r0, 0
- strh r0, [r3, 0xA]
- ldrh r1, [r3, 0xE]
- movs r0, 0x3
- ands r0, r1
- strh r0, [r3, 0xC]
- ldrh r0, [r3, 0x8]
- subs r0, r1
- strh r0, [r3, 0x12]
- movs r2, 0xC
- ldrsh r1, [r3, r2]
- cmp r1, 0x1
- beq _08104FC4
- cmp r1, 0x1
- ble _08104FCC
- cmp r1, 0x2
- beq _08104FC8
- cmp r1, 0x3
- beq _08104FC8
- b _08104FCC
-_08104FC4:
- subs r0, 0x2
- b _08104FCA
-_08104FC8:
- adds r0, 0x1
-_08104FCA:
- strh r0, [r3, 0x12]
-_08104FCC:
- movs r1, 0x12
- ldrsh r0, [r3, r1]
- cmp r0, 0
- blt _08104FF0
- ldr r2, =gScanlineEffectRegBuffers
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r3, 0x14]
- strh r1, [r0]
- movs r1, 0x12
- ldrsh r0, [r3, r1]
- lsls r0, 1
- movs r1, 0xF0
- lsls r1, 3
- adds r2, r1
- adds r0, r2
- ldrh r1, [r3, 0x14]
- strh r1, [r0]
-_08104FF0:
- ldrh r0, [r3, 0xE]
- adds r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x26
- ldrsh r1, [r3, r2]
- cmp r0, r1
- blt _0810500E
- ldr r1, =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_0810500E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8104F54
-
- thumb_func_start sub_810501C
-sub_810501C: @ 810501C
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, =gBattleAnimTarget
- ldrb r0, [r6]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x10
- movs r5, 0
- strh r0, [r4, 0x20]
- ldrb r0, [r6]
- bl GetBattlerYCoordWithElevation
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x2E]
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x32]
- movs r0, 0x10
- strh r0, [r4, 0x34]
- strh r5, [r4, 0x36]
- ldrb r0, [r6]
- movs r1, 0
- bl sub_80A861C
- adds r0, 0x2
- strh r0, [r4, 0x38]
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4, 0x3A]
- ldr r0, =sub_8105078
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810501C
-
- thumb_func_start sub_8105078
-sub_8105078: @ 8105078
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _081050DC
- cmp r1, 0x1
- bgt _0810508E
- cmp r1, 0
- beq _08105094
- b _081051BC
-_0810508E:
- cmp r1, 0x2
- beq _0810516E
- b _081051BC
-_08105094:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _081050BE
- strh r1, [r4, 0x32]
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_081050BE:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _081051BC
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r2]
- b _08105166
-_081050DC:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08105122
- ldrh r2, [r4, 0x32]
- movs r3, 0x32
- ldrsh r1, [r4, r3]
- movs r3, 0x38
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _08105122
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- subs r0, 0x1
- strh r0, [r4, 0x22]
- adds r0, r2, 0x1
- strh r0, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _08105122
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xCD
- bl PlaySE12WithPanning
-_08105122:
- ldrh r0, [r4, 0x34]
- ldrh r2, [r4, 0x36]
- adds r1, r0, r2
- strh r1, [r4, 0x36]
- lsls r0, r1, 16
- asrs r2, r0, 16
- cmp r2, 0x1F
- ble _08105136
- movs r0, 0x40
- b _08105144
-_08105136:
- movs r0, 0x20
- negs r0, r0
- cmp r2, r0
- bgt _08105150
- movs r2, 0x40
- negs r2, r2
- adds r0, r2, 0
-_08105144:
- subs r0, r1
- strh r0, [r4, 0x36]
- movs r3, 0x34
- ldrsh r0, [r4, r3]
- negs r0, r0
- strh r0, [r4, 0x34]
-_08105150:
- ldrh r0, [r4, 0x36]
- movs r2, 0
- strh r0, [r4, 0x24]
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- movs r3, 0x32
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _081051BC
- strh r2, [r4, 0x30]
- strh r2, [r4, 0x32]
-_08105166:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _081051BC
-_0810516E:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0810519A
- movs r0, 0
- strh r0, [r4, 0x32]
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_0810519A:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _081051BC
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081051BC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8105078
-
- thumb_func_start sub_81051C4
-sub_81051C4: @ 81051C4
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- movs r5, 0
- mov r0, sp
- strh r5, [r0]
- mov r1, sp
- adds r1, 0x2
- strh r5, [r1]
- ldr r0, =gBattleAnimArgs
- movs r3, 0x4
- ldrsh r2, [r0, r3]
- adds r7, r1, 0
- adds r1, r0, 0
- cmp r2, 0
- bne _081051F0
- ldr r0, =gBattleAnimAttacker
- b _081051F2
- .pool
-_081051F0:
- ldr r0, =gBattleAnimTarget
-_081051F2:
- ldrb r5, [r0]
- ldrb r1, [r1, 0x6]
- movs r0, 0x1
- adds r4, r0, 0
- eors r4, r1
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0810526A
- movs r1, 0x2
- adds r0, r5, 0
- eors r0, r1
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _0810526A
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, sp
- adds r3, r7, 0
- bl SetAverageBattlerPositions
- cmp r4, 0
- bne _08105230
- adds r0, r5, 0
- movs r1, 0
- b _08105234
- .pool
-_08105230:
- adds r0, r5, 0
- movs r1, 0x2
-_08105234:
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08105260
- ldr r2, =gBattleAnimArgs
- mov r0, sp
- ldrh r1, [r0]
- subs r1, r4
- ldrh r0, [r2]
- subs r1, r0
- subs r0, r1
- strh r0, [r2]
- b _0810526A
- .pool
-_08105260:
- ldr r1, =gBattleAnimArgs
- mov r0, sp
- ldrh r0, [r0]
- subs r0, r4
- strh r0, [r1]
-_0810526A:
- ldr r1, =sub_80A77C8
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81051C4
-
- thumb_func_start sub_8105284
-sub_8105284: @ 8105284
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _0810529E
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0810529E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8105284
-
- thumb_func_start sub_81052A4
-sub_81052A4: @ 81052A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r5, r0, 0
- movs r6, 0
- mov r0, sp
- strh r6, [r0]
- mov r1, sp
- adds r1, 0x2
- strh r6, [r1]
- ldr r0, =gBattleAnimArgs
- movs r2, 0xA
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _081052DC
- ldr r0, =gBattleAnimAttacker
- ldrb r7, [r0]
- ldr r0, =gBattleAnimTarget
- b _081052E2
- .pool
-_081052DC:
- ldr r0, =gBattleAnimTarget
- ldrb r7, [r0]
- ldr r0, =gBattleAnimAttacker
-_081052E2:
- ldrb r0, [r0]
- mov r8, r0
- ldr r0, =gBattleAnimArgs
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0
- bne _08105308
- movs r0, 0
- mov r10, r0
- movs r1, 0x1
- str r1, [sp, 0x4]
- b _08105310
- .pool
-_08105308:
- movs r2, 0x2
- mov r10, r2
- movs r3, 0x3
- str r3, [sp, 0x4]
-_08105310:
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810536C
- adds r0, r7, 0
- mov r1, r10
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r1, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r0, 0x2
- mov r4, r8
- eors r4, r0
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _0810535C
- ldr r2, =gSprites
- ldr r0, =gBattlerSpriteIds
- adds r0, r4, r0
- b _081053EA
- .pool
-_0810535C:
- ldr r2, =gSprites
- ldr r0, =gBattlerSpriteIds
- add r0, r8
- b _081053EA
- .pool
-_0810536C:
- adds r0, r7, 0
- mov r1, r10
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gBattleAnimArgs
- ldrh r1, [r1]
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _081053E4
- movs r0, 0x2
- adds r4, r7, 0
- eors r4, r0
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _081053E4
- ldr r3, =gSprites
- ldr r2, =gBattlerSpriteIds
- adds r0, r7, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r6, r0, r3
- adds r2, r4, r2
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r3
- movs r0, 0x20
- ldrsh r1, [r6, r0]
- movs r3, 0x20
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bge _081053E0
- adds r0, r2, 0
- adds r0, 0x43
- ldrb r0, [r0]
- adds r0, 0x1
- b _081053FA
- .pool
-_081053E0:
- adds r0, r6, 0
- b _081053F4
-_081053E4:
- ldr r2, =gSprites
- ldr r0, =gBattlerSpriteIds
- adds r0, r7, r0
-_081053EA:
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
-_081053F4:
- adds r0, 0x43
- ldrb r0, [r0]
- subs r0, 0x1
-_081053FA:
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- adds r0, r7, 0
- ldr r1, [sp, 0x4]
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0810544C
- movs r1, 0x2
- mov r0, r8
- eors r0, r1
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _0810544C
- ldrb r1, [r4, 0xC]
- mov r0, r8
- mov r2, sp
- mov r3, sp
- adds r3, 0x2
- bl SetAverageBattlerPositions
- b _0810546C
- .pool
-_0810544C:
- mov r4, sp
- mov r0, r8
- mov r1, r10
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- mov r0, r8
- ldr r1, [sp, 0x4]
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r2, sp
- strh r0, [r2, 0x2]
-_0810546C:
- mov r0, r8
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08105490
- mov r3, sp
- mov r2, sp
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x6]
- ldrh r2, [r2]
- adds r0, r2
- strh r0, [r3]
- adds r2, r1, 0
- b _0810549E
- .pool
-_08105490:
- mov r3, sp
- mov r0, sp
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r0]
- ldrh r1, [r2, 0x6]
- subs r0, r1
- strh r0, [r3]
-_0810549E:
- ldrh r1, [r2, 0x8]
- mov r3, sp
- ldrh r3, [r3, 0x2]
- adds r1, r3
- mov r0, sp
- strh r1, [r0, 0x2]
- mov r3, r9
- strh r3, [r5, 0x30]
- strh r3, [r5, 0x20]
- strh r6, [r5, 0x34]
- strh r6, [r5, 0x22]
- ldrh r0, [r0]
- strh r0, [r5, 0x32]
- strh r1, [r5, 0x36]
- ldrh r0, [r2]
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- bl InitAnimLinearTranslation
- ldr r1, =sub_8105284
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81052A4
-
- thumb_func_start sub_81054E8
-sub_81054E8: @ 81054E8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =0x000027db
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0810550E
- lsls r0, 20
- ldr r1, =0x01010000
- adds r0, r1
- lsrs r0, 16
- ldr r1, =gBattleAnimArgs
- ldrb r2, [r1, 0xA]
- ldrh r3, [r1, 0x8]
- movs r1, 0xF
- bl BlendPalette
-_0810550E:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r1, =sub_80A77C8
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81054E8
-
- thumb_func_start sub_8105538
-sub_8105538: @ 8105538
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0xA0
- cmp r0, 0
- beq _08105554
- ldr r1, =0x0000ff60
-_08105554:
- movs r0, 0xE0
- lsls r0, 2
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x3C]
- ldr r0, =sub_810557C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105538
-
- thumb_func_start sub_810557C
-sub_810557C: @ 810557C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x2E]
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- subs r1, r0
- movs r5, 0
- strh r1, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- subs r2, 0x20
- strh r2, [r4, 0x2E]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0xA0
- cmp r0, 0
- beq _081055AC
- ldr r1, =0x0000ff60
-_081055AC:
- lsls r0, r1, 16
- asrs r0, 16
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x26]
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _081055E0
- ldrh r2, [r4, 0x22]
- adds r0, r1, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x26]
- strh r5, [r4, 0x24]
- strh r5, [r4, 0x2E]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, =sub_81055F4
- str r0, [r4, 0x1C]
-_081055E0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810557C
-
- thumb_func_start sub_81055F4
-sub_81055F4: @ 81055F4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _08105612
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, =sub_810561C
- str r0, [r4, 0x1C]
-_08105612:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81055F4
-
- thumb_func_start sub_810561C
-sub_810561C: @ 810561C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08105682
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- movs r0, 0
- strh r0, [r4, 0x2E]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08105668
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- ldr r0, =sub_8105694
- b _08105680
- .pool
-_08105668:
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x20
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- ldr r0, =sub_810571C
-_08105680:
- str r0, [r4, 0x1C]
-_08105682:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810561C
-
- thumb_func_start sub_8105694
-sub_8105694: @ 8105694
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x26]
- subs r0, 0x2
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _081056CA
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0x2E]
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, =sub_81056D4
- str r0, [r4, 0x1C]
-_081056CA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105694
-
- thumb_func_start sub_81056D4
-sub_81056D4: @ 81056D4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _08105712
- ldrh r1, [r4, 0x2E]
- subs r1, 0x1
- strh r1, [r4, 0x2E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08105712
- ldr r0, =sub_810571C
- str r0, [r4, 0x1C]
-_08105712:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81056D4
-
- thumb_func_start sub_810571C
-sub_810571C: @ 810571C
- push {lr}
- adds r3, r0, 0
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08105754
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r1, 0x3C
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _08105750
- ldr r0, =sub_810575C
- b _08105752
- .pool
-_08105750:
- ldr r0, =DestroyAnimSprite
-_08105752:
- str r0, [r3, 0x1C]
-_08105754:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810571C
-
- thumb_func_start sub_810575C
-sub_810575C: @ 810575C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810575C
-
- thumb_func_start sub_810577C
-sub_810577C: @ 810577C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x8]
- ldr r2, =gUnknown_085938B0
- adds r0, r4, 0
- bl sub_80A7CFC
- ldr r0, =sub_81057B8
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810577C
-
- thumb_func_start sub_81057B8
-sub_81057B8: @ 81057B8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- adds r0, r4, 0
- bl sub_80A7D34
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _08105802
- ldr r2, =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
- movs r0, 0x8
- ldrsh r1, [r4, 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]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08105802:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81057B8
-
- thumb_func_start sub_8105810
-sub_8105810: @ 8105810
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r4, r1, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- movs r0, 0x3
- strh r0, [r4, 0x20]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08105850
- ldr r0, =0x0000ffff
- strh r0, [r4, 0x22]
- movs r0, 0x8
- b _08105856
- .pool
-_08105850:
- movs r0, 0x1
- strh r0, [r4, 0x22]
- ldr r0, =0x0000fff8
-_08105856:
- strh r0, [r4, 0x24]
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, =sub_8105878
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105810
-
- thumb_func_start sub_8105878
-sub_8105878: @ 8105878
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r3, r0, r1
- movs r0, 0x8
- ldrsh r4, [r3, r0]
- cmp r4, 0x1
- beq _081058CC
- cmp r4, 0x1
- bgt _081058A0
- cmp r4, 0
- beq _081058AA
- b _08105992
- .pool
-_081058A0:
- cmp r4, 0x2
- beq _08105948
- cmp r4, 0x3
- beq _08105962
- b _08105992
-_081058AA:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x24]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- strh r4, [r3, 0xA]
- strh r4, [r3, 0xC]
- strh r4, [r3, 0xE]
- b _0810595A
- .pool
-_081058CC:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08105992
- movs r0, 0
- strh r0, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- ands r0, r4
- lsls r0, 16
- cmp r0, 0
- beq _08105904
- ldr r2, =gSprites
- movs r4, 0x26
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- adds r1, 0x6
- b _08105916
- .pool
-_08105904:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- subs r1, 0x6
-_08105916:
- strh r1, [r0, 0x24]
- ldrh r0, [r3, 0xE]
- adds r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _08105992
- ldrh r1, [r3, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810595A
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x24]
- subs r0, 0x6
- strh r0, [r1, 0x24]
- b _0810595A
- .pool
-_08105948:
- ldrh r0, [r3, 0x20]
- subs r0, 0x1
- strh r0, [r3, 0x20]
- lsls r0, 16
- cmp r0, 0
- beq _0810595A
- movs r0, 0
- strh r0, [r3, 0x8]
- b _08105992
-_0810595A:
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- b _08105992
-_08105962:
- ldr r2, =gSprites
- movs r4, 0x26
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x22]
- ldrh r4, [r0, 0x24]
- adds r1, r4
- strh r1, [r0, 0x24]
- movs r0, 0x26
- ldrsh r1, [r3, 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 _08105992
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08105992:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105878
-
- thumb_func_start sub_810599C
-sub_810599C: @ 810599C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- movs r0, 0x1
- strh r0, [r4, 0x10]
- movs r0, 0xE
- strh r0, [r4, 0x22]
- movs r0, 0x2
- strh r0, [r4, 0x24]
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, =sub_81059E0
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810599C
-
- thumb_func_start sub_81059E0
-sub_81059E0: @ 81059E0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- cmp r2, 0
- bne _08105AA6
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x10
- ldrsh r1, [r4, r3]
- cmp r0, r1
- ble _08105AA6
- strh r2, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08105A3C
- ldr r3, =gSprites
- movs r6, 0x26
- ldrsh r1, [r4, r6]
- 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
- b _08105A52
- .pool
-_08105A3C:
- ldr r3, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, 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
-_08105A52:
- strb r1, [r0]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r6, 0x22
- ldrsh r1, [r4, r6]
- cmp r0, r1
- blt _08105AA6
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- movs r6, 0x24
- ldrsh r1, [r4, r6]
- cmp r0, r1
- bge _08105A88
- strh r2, [r4, 0xA]
- strh r2, [r4, 0xC]
- strh r2, [r4, 0xE]
- b _08105AA6
- .pool
-_08105A88:
- movs r0, 0x26
- ldrsh r1, [r4, 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]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08105AA6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81059E0
-
- thumb_func_start sub_8105AAC
-sub_8105AAC: @ 8105AAC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- movs r1, 0x4
- strh r1, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- strh r0, [r4, 0x12]
- strh r0, [r4, 0x14]
- strh r0, [r4, 0x16]
- strh r0, [r4, 0x18]
- strh r0, [r4, 0x22]
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, =sub_8105B08
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105AAC
-
- thumb_func_start sub_8105B08
-sub_8105B08: @ 8105B08
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r0, 0x18
- ldrsh r2, [r4, r0]
- cmp r2, 0x1
- beq _08105B74
- cmp r2, 0x1
- bgt _08105B30
- cmp r2, 0
- beq _08105B36
- b _08105B90
- .pool
-_08105B30:
- cmp r2, 0x2
- beq _08105B8C
- b _08105B90
-_08105B36:
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08105B90
- strh r2, [r4, 0x10]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- movs r1, 0x1
- ands r0, r1
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0x14]
- adds r0, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _08105B90
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08105B6E
- strh r2, [r4, 0x14]
- movs r0, 0x1
- strh r0, [r4, 0x18]
- b _08105B90
-_08105B6E:
- movs r0, 0x2
- strh r0, [r4, 0x18]
- b _08105B90
-_08105B74:
- movs r1, 0
- strh r1, [r4, 0x12]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _08105B90
- strh r2, [r4, 0x16]
- strh r1, [r4, 0x18]
- b _08105B90
-_08105B8C:
- movs r0, 0x1
- strh r0, [r4, 0x12]
-_08105B90:
- movs r2, 0x8
- ldrsh r5, [r4, r2]
- cmp r5, 0
- beq _08105B9E
- cmp r5, 0x1
- beq _08105C34
- b _08105C42
-_08105B9E:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _08105C42
- strh r5, [r4, 0xA]
- ldr r0, =gUnknown_085938DC
- movs r3, 0x24
- ldrsh r1, [r4, r3]
- movs r3, 0x26
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _08105C42
- ldr r0, =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- strh r6, [r1, 0x2E]
- movs r0, 0xD
- strh r0, [r1, 0x30]
- ldr r2, =gUnknown_085938F4
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1, 0x24]
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r2, 0x1
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1, 0x26]
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08105C42
- strh r5, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _08105C42
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08105C42
- .pool
-_08105C34:
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08105C42
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_08105C42:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8105B08
-
- thumb_func_start sub_8105C48
-sub_8105C48: @ 8105C48
- push {r4,lr}
- adds r3, r0, 0
- ldr r4, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- movs r2, 0x1
- ldrb r1, [r0, 0x12]
- ands r1, r2
- lsls r1, 2
- mov r0, r12
- ldrb r2, [r0]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- adds r0, r3, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08105CAA
- movs r0, 0x30
- ldrsh r1, [r3, r0]
- lsls r1, 1
- movs r0, 0x2E
- ldrsh r2, [r3, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r0, r4, 0
- adds r0, 0x8
- adds r1, r0
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r3, 0
- bl DestroySprite
-_08105CAA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105C48
-
- thumb_func_start sub_8105CB4
-sub_8105CB4: @ 8105CB4
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =0x000027de
- bl IndexOfSpritePaletteTag
- mov r1, sp
- strb r0, [r1]
- movs r4, 0x1
- ldr r0, =0x00002710
- adds r5, r0, 0
-_08105CCC:
- subs r0, r5, r4
- lsls r0, 16
- lsrs r0, 16
- bl AllocSpritePalette
- mov r2, sp
- adds r1, r2, r4
- strb r0, [r1]
- adds r4, 0x1
- cmp r4, 0x2
- ble _08105CCC
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- adds r1, r0, 0
- ldr r0, =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r2, 0xBE
- lsls r2, 1
- adds r0, r2
- str r1, [r0]
- ldr r0, =gBattleAnimSpritePalette_206
- bl LZDecompressWram
- movs r4, 0
-_08105D00:
- ldr r5, =gMonSpritesGfxPtr
- ldr r0, [r5]
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r1
- lsls r1, r4, 6
- ldr r0, [r0]
- adds r0, r1
- mov r2, sp
- adds r1, r2, r4
- ldrb r1, [r1]
- lsls r1, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- adds r4, 0x1
- cmp r4, 0x2
- ble _08105D00
- ldr r0, [r5]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0
- str r1, [r0]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105CB4
-
- thumb_func_start sub_8105D60
-sub_8105D60: @ 8105D60
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, =gUnknown_08593950
- movs r4, 0x2
-_08105D6A:
- ldrh r0, [r5]
- bl FreeSpritePaletteByTag
- adds r5, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08105D6A
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105D60
-
- thumb_func_start sub_8105D88
-sub_8105D88: @ 8105D88
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsls r2, 24
- lsrs r3, r2, 24
- movs r0, 0x1
- ands r3, r0
- negs r0, r3
- orrs r0, r3
- asrs r0, 31
- movs r3, 0x20
- ands r0, r3
- ldrh r4, [r5, 0x4]
- lsls r3, r4, 22
- lsrs r3, 22
- lsrs r1, 22
- adds r0, r1
- adds r3, r0
- ldr r1, =0x000003ff
- adds r0, r1, 0
- ands r3, r0
- ldr r0, =0xfffffc00
- ands r0, r4
- orrs r0, r3
- strh r0, [r5, 0x4]
- ldr r0, =gUnknown_08593950
- lsrs r2, 25
- lsls r2, 1
- adds r2, r0
- ldrh r0, [r2]
- bl IndexOfSpritePaletteTag
- lsls r0, 4
- ldrb r2, [r5, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105D88
-
- thumb_func_start sub_8105DE8
-sub_8105DE8: @ 8105DE8
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0
- bl InitAnimSpritePos
- ldr r6, =gBattleAnimAttacker
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08105E08
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_08105E08:
- ldr r4, =gBattleAnimArgs
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x2E]
- ldrb r0, [r6]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrb r0, [r6]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldrb r1, [r4, 0xA]
- ldrb r2, [r4, 0xC]
- adds r0, r5, 0
- bl sub_8105D88
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105DE8
-
- thumb_func_start sub_8105E60
-sub_8105E60: @ 8105E60
- 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, 0x1
- bne _08105E7A
- adds r0, r4, 0
- movs r1, 0
- bl InitAnimSpritePos
-_08105E7A:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r2, [r4, 0x32]
- lsls r0, r2, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x7
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- subs r2, 0x80
- strh r2, [r4, 0x32]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x3C
- bne _08105EAA
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08105EAA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8105E60
-
- thumb_func_start sub_8105EB0
-sub_8105EB0: @ 8105EB0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- bl IsContest
- lsls r0, 24
- movs r6, 0xF0
- cmp r0, 0
- beq _08105EC4
- movs r6, 0x98
-_08105EC4:
- movs r5, 0
- ldr r1, =gBattle_WIN0H
- strh r6, [r1]
- ldr r4, =gBattle_WIN0V
- movs r0, 0xA0
- strh r0, [r4]
- ldrh r1, [r1]
- movs r0, 0x40
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x44
- bl SetGpuReg
- ldr r1, =0x00003f1f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =0x00003f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0xC8
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x10
- bl SetGpuReg
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- strh r6, [r0, 0xA]
- ldr r1, =sub_8105F30
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105EB0
-
- thumb_func_start sub_8105F30
-sub_8105F30: @ 8105F30
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r3, r1, r2
- ldrh r0, [r3, 0x8]
- adds r4, r0, 0
- adds r4, 0xD
- strh r4, [r3, 0x8]
- ldrh r0, [r3, 0xA]
- adds r2, r0, 0
- subs r2, 0xD
- strh r2, [r3, 0xA]
- lsls r1, r4, 16
- lsls r0, r2, 16
- cmp r1, r0
- blt _08105F70
- ldr r0, =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, =sub_8105F84
- str r0, [r3]
- b _08105F78
- .pool
-_08105F70:
- ldr r1, =gBattle_WIN0H
- lsls r0, r4, 8
- orrs r2, r0
- strh r2, [r1]
-_08105F78:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105F30
-
- thumb_func_start sub_8105F84
-sub_8105F84: @ 8105F84
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0x1C]
- adds r0, 0x1
- movs r4, 0
- strh r0, [r1, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _08105FD8
- movs r0, 0x88
- strh r0, [r1, 0x1E]
- movs r0, 0x50
- movs r1, 0x88
- bl SetGpuReg
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_80A75AC
- ldr r2, =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- b _0810600C
- .pool
-_08105FD8:
- cmp r0, 0x4
- ble _0810600C
- ldr r0, =gBattle_WIN0H
- strh r4, [r0]
- ldr r0, =gBattle_WIN0V
- strh r4, [r0]
- ldr r4, =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0810600C:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8105F84
-
- thumb_func_start sub_8106020
-sub_8106020: @ 8106020
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _0810607C
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_08593988
- adds r0, r5, 0
- bl sub_80A7CFC
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0, 0x24]
- b _081060A4
- .pool
-_0810607C:
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r4, r0, r1
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
- adds r0, r5, 0
- bl sub_80A7D34
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _081060A4
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_081060A4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106020
-
- thumb_func_start sub_81060B0
-sub_81060B0: @ 81060B0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _0810610C
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_08593988
- adds r0, r5, 0
- bl sub_80A7CFC
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0, 0x24]
- b _08106134
- .pool
-_0810610C:
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r4, r0, r1
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
- adds r0, r5, 0
- bl sub_80A7D34
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08106134
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_08106134:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81060B0
-
- thumb_func_start sub_8106140
-sub_8106140: @ 8106140
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- movs r0, 0x5F
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl InitAnimLinearTranslation
- ldr r0, =sub_810618C
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106140
-
- thumb_func_start sub_810618C
-sub_810618C: @ 810618C
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- bne _081061B6
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xE
- bl Sin
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x4
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _081061BC
-_081061B6:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081061BC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810618C
-
- thumb_func_start sub_81061C4
-sub_81061C4: @ 81061C4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081061E8
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x32]
- adds r0, r2, 0x1
- strh r0, [r4, 0x2E]
- b _08106244
- .pool
-_081061E8:
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
- cmp r0, 0x64
- ble _08106236
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_08106236:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x78
- ble _08106244
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08106244:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81061C4
-
- thumb_func_start sub_810624C
-sub_810624C: @ 810624C
- push {lr}
- ldr r2, =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r0, 0x20]
- movs r1, 0xA0
- strh r1, [r0, 0x22]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0x2E]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x30]
- ldr r1, =WaitAnimForDuration
- str r1, [r0, 0x1C]
- ldr r1, =sub_810627C
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810624C
-
- thumb_func_start sub_810627C
-sub_810627C: @ 810627C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- lsls r0, 16
- lsrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x34]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- lsls r0, 16
- asrs r5, r0, 16
- cmp r5, 0x48
- bgt _081062E2
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- cmp r5, 0x40
- bgt _081062E2
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081062E2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810627C
-
- thumb_func_start sub_81062E8
-sub_81062E8: @ 81062E8
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x3
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0810632A
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_0810632A:
- ldr r0, =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r4, =gBattle_BG1_Y
- strh r1, [r4]
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x16
- bl SetGpuReg
- mov r0, sp
- bl sub_80A6B30
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08C232E0
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80A6CC0
- ldr r1, =gUnknown_08C23D78
- mov r0, sp
- movs r2, 0
- bl sub_80A6D60
- ldr r0, =gUnknown_08C23D50
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81063A8
- str r1, [r0]
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81062E8
-
- thumb_func_start sub_81063A8
-sub_81063A8: @ 81063A8
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x20
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bls _081063C6
- b _081064F0
-_081063C6:
- lsls r0, 2
- ldr r1, =_081063D8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081063D8:
- .4byte _081063EC
- .4byte _08106430
- .4byte _08106452
- .4byte _08106496
- .4byte _081064BC
-_081063EC:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _081064F0
- strh r5, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- adds r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _081064F0
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x1E]
- b _081064F0
-_08106430:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8D
- bne _081064F0
- movs r0, 0x10
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- b _081064F0
-_08106452:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _081064F0
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- subs r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _081064F0
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r1, [r4, 0x1E]
- b _081064F0
-_08106496:
- mov r0, sp
- bl sub_80A6B30
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_80A6C68
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- b _081064F0
- .pool
-_081064BC:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _081064D0
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_081064D0:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_081064F0:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81063A8
-
- thumb_func_start sub_81064F8
-sub_81064F8: @ 81064F8
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0810653A
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_0810653A:
- ldr r0, =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r4, =gBattle_BG1_Y
- strh r1, [r4]
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x16
- bl SetGpuReg
- mov r0, sp
- bl sub_80A6B30
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _08106578
- ldr r1, =gBattleAnimBackgroundTilemap_ScaryFaceContest
- b _0810658A
- .pool
-_08106578:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810659C
- ldr r1, =gBattleAnimBackgroundTilemap_ScaryFacePlayer
-_0810658A:
- mov r0, sp
- movs r2, 0
- bl sub_80A6D60
- b _081065A6
- .pool
-_0810659C:
- ldr r1, =gBattleAnimBackgroundTilemap_ScaryFaceOpponent
- mov r0, sp
- movs r2, 0
- bl sub_80A6D60
-_081065A6:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08C249F8
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80A6CC0
- ldr r0, =gUnknown_08C249D0
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81065EC
- str r1, [r0]
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81064F8
-
- thumb_func_start sub_81065EC
-sub_81065EC: @ 81065EC
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x20
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bls _0810660A
- b _08106730
-_0810660A:
- lsls r0, 2
- ldr r1, =_0810661C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0810661C:
- .4byte _08106630
- .4byte _08106674
- .4byte _08106696
- .4byte _081066DA
- .4byte _081066FC
-_08106630:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _08106730
- strh r5, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- adds r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0xE
- bne _08106730
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x1E]
- b _08106730
-_08106674:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _08106730
- movs r0, 0xE
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- b _08106730
-_08106696:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _08106730
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- subs r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _08106730
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r1, [r4, 0x1E]
- b _08106730
-_081066DA:
- mov r0, sp
- bl sub_80A6B30
- movs r0, 0x1
- bl sub_80A6C68
- movs r0, 0x2
- bl sub_80A6C68
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
-_081066FC:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _08106710
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_08106710:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08106730:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81065EC
-
- thumb_func_start sub_810673C
-sub_810673C: @ 810673C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- ldrb r0, [r5]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x3C]
- ldr r1, =sub_810679C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810673C
-
- thumb_func_start sub_810679C
-sub_810679C: @ 810679C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7F
- bhi _081067B2
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- b _081067B6
-_081067B2:
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
-_081067B6:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- bl Sin
- strh r0, [r4, 0x24]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- ldrh r1, [r4, 0x34]
- lsls r1, 16
- asrs r1, 24
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x9
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r3, 0x38
- ldrsh r2, [r4, r3]
- cmp r2, 0
- beq _08106828
- cmp r2, 0x1
- bne _08106858
- ldr r1, =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r4, 0x32]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldr r3, =0xffffff00
- adds r0, r3, 0
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _08106858
- movs r0, 0x2
- strh r0, [r4, 0x38]
- b _08106868
- .pool
-_08106828:
- movs r3, 0x80
- lsls r3, 3
- adds r0, r3, 0
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- movs r3, 0x80
- lsls r3, 1
- adds r0, r3, 0
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x2E
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _08106858
- strh r2, [r4, 0x36]
- movs r0, 0x1
- strh r0, [r4, 0x38]
-_08106858:
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08106868
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08106868:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810679C
-
- thumb_func_start sub_8106878
-sub_8106878: @ 8106878
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- strh r0, [r5, 0x2E]
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x7
- bl Cos
- strh r0, [r5, 0x30]
- ldr r0, =sub_81068CC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106878
-
- thumb_func_start sub_81068CC
-sub_81068CC: @ 81068CC
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- ldrh r3, [r2, 0x26]
- adds r0, r3
- strh r0, [r2, 0x26]
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- movs r3, 0x24
- ldrsh r1, [r2, r3]
- adds r0, r1
- adds r0, 0x10
- movs r1, 0x88
- lsls r1, 1
- cmp r0, r1
- bhi _0810690A
- movs r0, 0x22
- ldrsh r1, [r2, r0]
- movs r3, 0x26
- ldrsh r0, [r2, r3]
- adds r1, r0
- cmp r1, 0xA0
- bgt _0810690A
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _08106910
-_0810690A:
- adds r0, r2, 0
- bl DestroyAnimSprite
-_08106910:
- pop {r0}
- bx r0
- thumb_func_end sub_81068CC
-
- thumb_func_start sub_8106914
-sub_8106914: @ 8106914
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- ldrh r3, [r2, 0x26]
- adds r0, r3
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x34]
- adds r1, r0, 0x1
- strh r1, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x32
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _08106940
- adds r0, r2, 0
- bl DestroyAnimSprite
-_08106940:
- pop {r0}
- bx r0
- thumb_func_end sub_8106914
-
- thumb_func_start sub_8106944
-sub_8106944: @ 8106944
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- strh r0, [r5, 0x2E]
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x7
- bl Cos
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x32]
- ldr r0, =sub_8106914
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106944
-
- thumb_func_start sub_810699C
-sub_810699C: @ 810699C
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081069B2
- adds r0, r2, 0
- bl DestroyAnimSprite
-_081069B2:
- pop {r0}
- bx r0
- thumb_func_end sub_810699C
-
- thumb_func_start sub_81069B8
-sub_81069B8: @ 81069B8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, =sub_810699C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81069B8
-
- thumb_func_start sub_81069D0
-sub_81069D0: @ 81069D0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081069EE
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
-_081069EE:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r5, r0, 1
- movs r0, 0xFF
- ands r5, r0
- adds r0, r5, 0
- movs r1, 0x50
- bl Sin
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x4F
- bgt _08106A32
- adds r0, r5, 0
- movs r1, 0x50
- bl Cos
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- lsls r0, 16
- asrs r0, 24
- adds r1, r0
- strh r1, [r4, 0x26]
-_08106A32:
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- cmp r2, 0x5A
- ble _08106A50
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- ldrh r0, [r4, 0x24]
- subs r0, r1
- strh r0, [r4, 0x24]
-_08106A50:
- cmp r2, 0x64
- ble _08106A5A
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08106A5A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81069D0
-
- thumb_func_start sub_8106A64
-sub_8106A64: @ 8106A64
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r1, 0x5
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x14
- ble _08106ABA
- adds r1, r0, 0
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_08106ABA:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x1E
- ble _08106AC8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08106AC8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8106A64
-
- thumb_func_start sub_8106AD0
-sub_8106AD0: @ 8106AD0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08106AF4
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x32]
- adds r0, r2, 0x1
- strh r0, [r4, 0x2E]
- b _08106B48
- .pool
-_08106AF4:
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- movs r5, 0
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- adds r2, r0, 0
- strh r2, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
- cmp r0, 0x46
- ble _08106B48
- ldr r0, =sub_8106A64
- str r0, [r4, 0x1C]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r1, [r4, 0x22]
- adds r0, r2, r1
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x24]
- strh r5, [r4, 0x26]
- bl Random2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB4
- bl __umodsi3
- strh r0, [r4, 0x34]
-_08106B48:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106AD0
-
- thumb_func_start sub_8106B54
-sub_8106B54: @ 8106B54
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08106B8E
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A82E4
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- movs r0, 0x1
- strh r0, [r4, 0x32]
-_08106B8E:
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r0, r2
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r1, r0, 2
- adds r0, r1, 0
- cmp r1, 0
- bge _08106BA4
- adds r0, 0xFF
-_08106BA4:
- asrs r0, 8
- lsls r0, 8
- subs r0, r1, r0
- strh r0, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bge _08106BB6
- movs r0, 0
- strh r0, [r4, 0x30]
-_08106BB6:
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _08106BC4
- adds r0, 0x3
-_08106BC4:
- asrs r0, 2
- movs r1, 0x1E
- subs r1, r0
- adds r0, r2, 0
- bl Cos
- strh r0, [r4, 0x24]
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _08106BE0
- adds r0, 0x7
-_08106BE0:
- asrs r0, 3
- movs r1, 0xA
- subs r1, r0
- adds r0, r2, 0
- bl Sin
- strh r0, [r4, 0x26]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x80
- ble _08106C04
- ldrh r1, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08106C04
- ldr r0, =0x0000ffff
- strh r0, [r4, 0x32]
-_08106C04:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08106C18
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bge _08106C18
- movs r0, 0x1
- strh r0, [r4, 0x32]
-_08106C18:
- ldrh r0, [r4, 0x34]
- adds r1, r0, 0x1
- strh r1, [r4, 0x34]
- subs r0, 0x9
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x46
- bls _08106C5C
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08106C6A
- .pool
-_08106C5C:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_08106C6A:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x5A
- ble _08106C78
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08106C78:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8106B54
-
- thumb_func_start sub_8106C80
-sub_8106C80: @ 8106C80
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08106CB4
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrb r1, [r1, 0x4]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08106CC8
- .pool
-_08106CB4:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08106CC8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08106CC8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8106C80
-
- thumb_func_start sub_8106CD0
-sub_8106CD0: @ 8106CD0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r1, =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08106CEC
- adds r0, r5, 0
- bl DestroyAnimSprite
- b _08106D50
- .pool
-_08106CEC:
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08106CFC
- ldr r4, =gBattleAnimAttacker
- b _08106CFE
- .pool
-_08106CFC:
- ldr r4, =gBattleAnimTarget
-_08106CFE:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r0, =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r0, r2]
- adds r2, r0, 0
- cmp r1, 0
- bne _08106D34
- ldrh r0, [r5, 0x20]
- adds r0, 0x20
- b _08106D38
- .pool
-_08106D34:
- ldrh r0, [r5, 0x20]
- subs r0, 0x20
-_08106D38:
- strh r0, [r5, 0x20]
- ldrh r0, [r2, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r1, [r2, 0x2]
- strh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =sub_8106D5C
- str r0, [r5, 0x1C]
-_08106D50:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106CD0
-
- thumb_func_start sub_8106D5C
-sub_8106D5C: @ 8106D5C
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08106D8C
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- cmp r0, 0
- beq _08106D86
- ldrh r1, [r2, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
- b _08106D8C
-_08106D86:
- adds r0, r2, 0
- bl DestroyAnimSprite
-_08106D8C:
- pop {r0}
- bx r0
- thumb_func_end sub_8106D5C
-
- thumb_func_start sub_8106D90
-sub_8106D90: @ 8106D90
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- ldr r2, =gUnknown_08593B98
- adds r0, r4, 0
- bl sub_80A7CFC
- ldr r0, =sub_8106DD4
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106D90
-
- thumb_func_start sub_8106DD4
-sub_8106DD4: @ 8106DD4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r0, r1
- bl sub_80A7D34
- lsls r0, 24
- cmp r0, 0
- bne _08106DF4
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08106DF4:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106DD4
-
- thumb_func_start sub_8106E00
-sub_8106E00: @ 8106E00
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08106E1C
- ldr r0, =gBattleAnimAttacker
- b _08106E1E
- .pool
-_08106E1C:
- ldr r0, =gBattleAnimTarget
-_08106E1E:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08106E38
- ldr r1, =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_08106E38:
- adds r0, r6, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r7, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r3, [r7, 0x2]
- adds r0, r3
- movs r4, 0
- strh r0, [r5, 0x20]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r7, 0x4]
- adds r0, r1
- strh r0, [r5, 0x22]
- strh r4, [r5, 0x2E]
- ldrh r1, [r5, 0x20]
- lsls r1, 3
- strh r1, [r5, 0x30]
- lsls r0, 3
- strh r0, [r5, 0x32]
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- lsls r0, 3
- cmp r0, 0
- bge _08106E78
- adds r0, 0x7
-_08106E78:
- asrs r0, 3
- strh r0, [r5, 0x34]
- movs r3, 0x4
- ldrsh r0, [r7, r3]
- lsls r0, 3
- cmp r0, 0
- bge _08106E88
- adds r0, 0x7
-_08106E88:
- asrs r0, 3
- strh r0, [r5, 0x36]
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0x6
- ldrsh r0, [r7, r3]
- lsls r0, 4
- adds r1, r0
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r0, =sub_8106EC8
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106E00
-
- thumb_func_start sub_8106EC8
-sub_8106EC8: @ 8106EC8
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x34]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- strh r0, [r2, 0x30]
- ldrh r1, [r2, 0x36]
- ldrh r3, [r2, 0x32]
- adds r1, r3
- strh r1, [r2, 0x32]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 19
- strh r1, [r2, 0x22]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _08106EFC
- adds r0, r2, 0
- bl DestroyAnimSprite
-_08106EFC:
- pop {r0}
- bx r0
- thumb_func_end sub_8106EC8
-
- thumb_func_start sub_8106F00
-sub_8106F00: @ 8106F00
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08106F22
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0]
- movs r0, 0x78
- subs r0, r1
- strh r0, [r4, 0x30]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_08106F22:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _08106F40
- ldrb r0, [r4, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- movs r1, 0
- bl sub_80A750C
-_08106F40:
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- adds r0, 0x50
- cmp r1, r0
- bne _08106F54
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08106F54:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106F00
-
- thumb_func_start sub_8106F60
-sub_8106F60: @ 8106F60
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08106F8E
- movs r5, 0x78
- strh r5, [r6, 0x20]
- ldr r4, =gBattleAnimArgs
- movs r2, 0
- ldrsh r0, [r4, r2]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- subs r0, 0xF
- strh r0, [r6, 0x22]
- ldrb r1, [r4, 0x2]
- adds r0, r6, 0
- bl StartSpriteAnim
- strh r5, [r6, 0x38]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x34]
-_08106F8E:
- ldrh r0, [r6, 0x2E]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r6, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r6, 0x30]
- movs r2, 0x2E
- ldrsh r0, [r6, r2]
- lsls r4, r0, 1
- adds r4, r0
- ldrh r0, [r6, 0x34]
- adds r4, r0
- movs r2, 0xFF
- ldrh r0, [r6, 0x3A]
- adds r0, 0xA
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6, 0x3A]
- ands r4, r2
- adds r0, r4, 0
- movs r1, 0x64
- bl Cos
- strh r0, [r6, 0x24]
- adds r0, r4, 0
- movs r1, 0xA
- bl Sin
- adds r4, r0, 0
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r1, 0x4
- bl Cos
- ldrh r2, [r6, 0x30]
- adds r4, r2
- adds r0, r4
- strh r0, [r6, 0x26]
- movs r0, 0x2E
- ldrsh r1, [r6, r0]
- movs r2, 0x38
- ldrsh r0, [r6, r2]
- cmp r1, r0
- ble _0810700A
- ldr r0, =sub_8107018
- str r0, [r6, 0x1C]
- strh r5, [r6, 0x2E]
- adds r0, r6, 0
- bl oamt_add_pos2_onto_pos1
- movs r0, 0x5
- strh r0, [r6, 0x32]
- strh r5, [r6, 0x36]
- strh r5, [r6, 0x34]
- adds r0, r6, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_0810700A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8106F60
-
- thumb_func_start sub_8107018
-sub_8107018: @ 8107018
- 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, 0xA
- ble _08107032
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldr r0, =sub_810703C
- str r0, [r1, 0x1C]
-_08107032:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107018
-
- thumb_func_start sub_810703C
-sub_810703C: @ 810703C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x34]
- adds r0, r1, r2
- strh r0, [r4, 0x34]
- strh r0, [r4, 0x26]
- adds r1, 0x1
- strh r1, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x30
- ble _08107066
- lsls r0, r1, 16
- cmp r0, 0
- ble _08107066
- ldrh r0, [r4, 0x36]
- subs r1, r0, 0x5
- strh r1, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x36]
-_08107066:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- ble _08107098
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08107098:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bne _081070A6
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081070A6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810703C
-
- thumb_func_start sub_81070AC
-sub_81070AC: @ 81070AC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081070F8
- ldr r4, =gBattleAnimAttacker
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _081070F8
- ldrb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- movs r1, 0
- bl SetAverageBattlerPositions
- ldrh r0, [r5, 0x22]
- adds r0, 0x28
- strh r0, [r5, 0x22]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _08107118
- .pool
-_081070F8:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x28
- strh r0, [r5, 0x22]
-_08107118:
- movs r0, 0xD
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- subs r0, 0x48
- strh r0, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81070AC
-
- thumb_func_start AnimTask_IsFuryCutterHitRight
-AnimTask_IsFuryCutterHitRight: @ 8107144
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gBattleAnimArgs
- ldr r1, =gAnimDisableStructPtr
- ldr r1, [r1]
- ldrb r2, [r1, 0x10]
- movs r1, 0x1
- ands r1, r2
- strh r1, [r3, 0xE]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_IsFuryCutterHitRight
-
- thumb_func_start AnimTask_GetFuryCutterHitCount
-AnimTask_GetFuryCutterHitCount: @ 8107168
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gBattleAnimArgs
- ldr r1, =gAnimDisableStructPtr
- ldr r1, [r1]
- ldrb r1, [r1, 0x10]
- strh r1, [r2, 0xE]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_GetFuryCutterHitCount
-
- .align 2, 0
diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s
new file mode 100644
index 000000000..4b9466786
--- /dev/null
+++ b/asm/battle_anim_effects_3.s
@@ -0,0 +1,1632 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start AnimTask_GetReturnPowerLevel
+AnimTask_GetReturnPowerLevel: @ 815F8A0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r3, =gBattleAnimArgs
+ movs r2, 0
+ strh r2, [r3, 0xE]
+ ldr r1, =gAnimFriendship
+ ldrb r0, [r1]
+ ldrb r1, [r1]
+ adds r0, r1, 0
+ subs r0, 0x3D
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r1, 0
+ cmp r0, 0x1E
+ bhi _0815F8C4
+ movs r0, 0x1
+ strh r0, [r3, 0xE]
+_0815F8C4:
+ adds r0, r2, 0
+ subs r0, 0x5C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x6C
+ bhi _0815F8D4
+ movs r0, 0x2
+ strh r0, [r3, 0xE]
+_0815F8D4:
+ lsls r0, r1, 24
+ lsrs r0, 24
+ cmp r0, 0xC8
+ bls _0815F8E0
+ movs r0, 0x3
+ strh r0, [r3, 0xE]
+_0815F8E0:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end AnimTask_GetReturnPowerLevel
+
+ thumb_func_start sub_815F8F4
+sub_815F8F4: @ 815F8F4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x4
+ bls _0815F91A
+ b _0815FE68
+_0815F91A:
+ lsls r0, 2
+ ldr r1, =_0815F92C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0815F92C:
+ .4byte _0815F940
+ .4byte _0815F9F4
+ .4byte _0815FBE8
+ .4byte _0815FD08
+ .4byte _0815FD8C
+_0815F940:
+ movs r0, 0
+ bl GetAnimBattlerSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, =gTasks
+ mov r2, r8
+ lsls r4, r2, 2
+ adds r0, r4, r2
+ lsls r0, 3
+ adds r6, r0, r1
+ movs r3, 0x80
+ lsls r3, 4
+ adds r0, r3, 0
+ ldrh r1, [r6, 0xA]
+ adds r0, r1
+ strh r0, [r6, 0xA]
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _0815F998
+ ldr r2, =gSprites
+ lsls r3, r7, 4
+ adds r1, r3, r7
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r6, 0xA]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r4, [r1, 0x24]
+ adds r0, r4
+ strh r0, [r1, 0x24]
+ b _0815F9B2
+ .pool
+_0815F998:
+ ldr r3, =gSprites
+ lsls r4, r7, 4
+ adds r2, r4, r7
+ lsls r2, 2
+ adds r2, r3
+ ldrh r1, [r6, 0xA]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+ adds r3, r4, 0
+_0815F9B2:
+ ldr r1, =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrb r0, [r4, 0xA]
+ strh r0, [r4, 0xA]
+ adds r1, r3, r7
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r1, 0x24]
+ ldrh r1, [r1, 0x20]
+ adds r0, r1
+ lsls r0, 16
+ movs r1, 0x80
+ lsls r1, 14
+ adds r0, r1
+ movs r1, 0x98
+ lsls r1, 17
+ cmp r0, r1
+ bhi _0815F9DE
+ b _0815FE68
+_0815F9DE:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0815FE68
+ .pool
+_0815F9F4:
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _0815FA28
+ ldr r0, =gContestResources
+ ldr r0, [r0]
+ ldr r0, [r0, 0x18]
+ ldr r2, [r0, 0x8]
+ mov r10, r2
+ ldr r3, [r0, 0xC]
+ mov r9, r3
+ ldrh r6, [r0]
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSpriteSubpriority
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r7, 0
+ b _0815FB4E
+ .pool
+_0815FA28:
+ ldr r4, =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0815FAC8
+ ldr r7, =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, =gPlayerParty
+ adds r0, r5
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, =gBattleSpritesDataPtr
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _0815FA9C
+ lsls r0, r2, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ b _0815FA9E
+ .pool
+_0815FA9C:
+ ldrh r6, [r1, 0x2]
+_0815FA9E:
+ movs r0, 0x1
+ bl GetAnimBattlerSpriteId
+ ldr r2, =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r7, 0
+ movs r5, 0x88
+ lsls r5, 1
+ b _0815FB50
+ .pool
+_0815FAC8:
+ ldr r7, =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, =gEnemyParty
+ adds r0, r5
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, =gBattleSpritesDataPtr
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _0815FB2C
+ lsls r0, r2, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ b _0815FB2E
+ .pool
+_0815FB2C:
+ ldrh r6, [r1, 0x2]
+_0815FB2E:
+ movs r0, 0x1
+ bl GetAnimBattlerSpriteId
+ ldr r2, =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r7, 0x1
+_0815FB4E:
+ ldr r5, =0x0000ffe0
+_0815FB50:
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r3, r5, 16
+ asrs r3, 16
+ str r0, [sp]
+ str r4, [sp, 0x4]
+ mov r4, r10
+ str r4, [sp, 0x8]
+ mov r0, r9
+ str r0, [sp, 0xC]
+ ldr r4, =gBattleAnimAttacker
+ ldrb r0, [r4]
+ str r0, [sp, 0x10]
+ movs r0, 0
+ str r0, [sp, 0x14]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0
+ bl sub_80A8394
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, =gBattleSpritesDataPtr
+ ldr r1, [r0]
+ ldrb r0, [r4]
+ ldr r1, [r1]
+ lsls r0, 2
+ adds r0, r1
+ ldrh r0, [r0, 0x2]
+ cmp r0, 0
+ beq _0815FBBA
+ ldr r1, =gSprites
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ lsls r0, 4
+ movs r2, 0x80
+ lsls r2, 1
+ adds r1, r2, 0
+ orrs r0, r1
+ ldr r3, =0x00007fff
+ movs r1, 0x10
+ movs r2, 0x6
+ bl BlendPalette
+_0815FBBA:
+ ldr r0, =gTasks
+ mov r3, r8
+ lsls r1, r3, 2
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ strh r5, [r1, 0x26]
+ b _0815FD7E
+ .pool
+_0815FBE8:
+ ldr r1, =gTasks
+ mov r0, r8
+ lsls r4, r0, 2
+ adds r0, r4, r0
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrh r0, [r6, 0x26]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r1, 0
+ ldrh r2, [r6, 0xA]
+ adds r0, r2
+ strh r0, [r6, 0xA]
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _0815FC40
+ ldr r3, =gSprites
+ lsls r4, r5, 4
+ adds r2, r4, r5
+ lsls r2, 2
+ adds r2, r3
+ ldrh r1, [r6, 0xA]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+ adds r3, r4, 0
+ b _0815FC56
+ .pool
+_0815FC40:
+ ldr r2, =gSprites
+ lsls r3, r5, 4
+ adds r1, r3, r5
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r6, 0xA]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r4, [r1, 0x24]
+ adds r0, r4
+ strh r0, [r1, 0x24]
+_0815FC56:
+ ldr r1, =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrb r0, [r6, 0xA]
+ strh r0, [r6, 0xA]
+ adds r1, r3, r5
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r1, 0x24]
+ ldrh r1, [r1, 0x20]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r1, 0x24
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _0815FCD6
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0815FCB4
+ lsls r4, r5, 16
+ asrs r4, 16
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bge _0815FCD6
+ b _0815FCCA
+ .pool
+_0815FCB4:
+ lsls r4, r5, 16
+ asrs r4, 16
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ ble _0815FCD6
+_0815FCCA:
+ ldrh r0, [r6, 0x24]
+ adds r0, 0x1
+ strh r0, [r6, 0x24]
+ ldr r1, =gBattleAnimArgs
+ ldr r0, =0x0000ffff
+ strh r0, [r1, 0xE]
+_0815FCD6:
+ lsls r0, r5, 16
+ movs r2, 0x80
+ lsls r2, 14
+ adds r0, r2
+ movs r1, 0x98
+ lsls r1, 17
+ cmp r0, r1
+ bhi _0815FCE8
+ b _0815FE68
+_0815FCE8:
+ ldr r0, =gTasks
+ mov r1, r9
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0
+ strh r0, [r1, 0xA]
+ b _0815FD7E
+ .pool
+_0815FD08:
+ movs r0, 0
+ bl GetAnimBattlerSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, =gTasks
+ mov r3, r8
+ lsls r4, r3, 2
+ adds r0, r4, r3
+ lsls r0, 3
+ adds r0, r1
+ ldrh r0, [r0, 0x26]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ ldr r5, =gSprites
+ adds r0, r5
+ bl sub_80A8610
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _0815FD60
+ lsls r1, r7, 4
+ adds r1, r7
+ lsls r1, 2
+ adds r1, r5
+ ldrh r0, [r1, 0x20]
+ negs r0, r0
+ subs r0, 0x20
+ strh r0, [r1, 0x24]
+ b _0815FD74
+ .pool
+_0815FD60:
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r0, 2
+ adds r0, r5
+ ldrh r2, [r0, 0x20]
+ movs r4, 0x88
+ lsls r4, 1
+ adds r1, r4, 0
+ subs r1, r2
+ strh r1, [r0, 0x24]
+_0815FD74:
+ ldr r0, =gTasks
+ mov r1, r9
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+_0815FD7E:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _0815FE68
+ .pool
+_0815FD8C:
+ movs r0, 0
+ bl GetAnimBattlerSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, =gTasks
+ mov r0, r8
+ lsls r4, r0, 2
+ adds r0, r4, r0
+ lsls r0, 3
+ adds r2, r0, r1
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r1, 0
+ ldrh r3, [r2, 0xA]
+ adds r0, r3
+ strh r0, [r2, 0xA]
+ ldr r0, =gBattleAnimAttacker
+ mov r10, r0
+ ldrb r0, [r0]
+ str r2, [sp, 0x18]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ ldr r2, [sp, 0x18]
+ cmp r0, 0
+ bne _0815FE0C
+ ldr r1, =gSprites
+ lsls r5, r7, 4
+ adds r0, r5, r7
+ lsls r0, 2
+ adds r6, r0, r1
+ ldrh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r6, 0x24]
+ adds r0, r1
+ strh r0, [r6, 0x24]
+ movs r2, 0x24
+ ldrsh r4, [r6, r2]
+ movs r3, 0x20
+ ldrsh r0, [r6, r3]
+ adds r4, r0
+ mov r1, r10
+ ldrb r0, [r1]
+ movs r1, 0
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r5, 0
+ cmp r4, r0
+ blt _0815FE44
+ movs r2, 0
+ strh r2, [r6, 0x24]
+ b _0815FE44
+ .pool
+_0815FE0C:
+ ldr r1, =gSprites
+ lsls r5, r7, 4
+ adds r0, r5, r7
+ lsls r0, 2
+ adds r6, r0, r1
+ ldrh r1, [r2, 0xA]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r6, 0x24]
+ subs r0, r1
+ strh r0, [r6, 0x24]
+ movs r3, 0x24
+ ldrsh r4, [r6, r3]
+ movs r1, 0x20
+ ldrsh r0, [r6, r1]
+ adds r4, r0
+ mov r2, r10
+ ldrb r0, [r2]
+ movs r1, 0
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r5, 0
+ cmp r4, r0
+ bgt _0815FE44
+ movs r4, 0
+ strh r4, [r6, 0x24]
+_0815FE44:
+ ldr r1, =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0xA]
+ strh r1, [r0, 0xA]
+ ldr r1, =gSprites
+ adds r0, r3, r7
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0x24
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _0815FE68
+ mov r0, r8
+ bl DestroyAnimVisualTask
+_0815FE68:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_815F8F4
+
+ thumb_func_start sub_815FE80
+sub_815FE80: @ 815FE80
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0815FE92
+ cmp r0, 0x1
+ beq _0815FF3A
+ b _0815FFBC
+_0815FE92:
+ ldr r0, =gBattleAnimArgs
+ movs r2, 0xE
+ ldrsh r1, [r0, r2]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _0815FF2C
+ movs r0, 0x3F
+ bl BattleAnimAdjustPanning
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x7A
+ bl PlaySE12WithPanning
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ strh r0, [r4, 0x22]
+ ldr r0, =0x0000ffe0
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ strh r0, [r4, 0x3C]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0815FFBC
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0815FFBC
+ movs r0, 0x1
+ bl GetAnimBattlerSpriteId
+ ldr r2, =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0x1
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ b _0815FFBC
+ .pool
+_0815FF2C:
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ b _0815FFBC
+_0815FF3A:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x30]
+ adds r0, r2, 0x5
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7F
+ ble _0815FF6E
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ adds r0, r2, 0
+ subs r0, 0x7A
+ strh r0, [r4, 0x30]
+_0815FF6E:
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2, 0
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0815FF9C
+ ldrh r2, [r4, 0x32]
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+ adds r1, r2, 0
+ b _0815FFA8
+ .pool
+_0815FF9C:
+ ldrh r1, [r4, 0x32]
+ lsls r0, r1, 16
+ asrs r0, 24
+ ldrh r2, [r4, 0x24]
+ adds r0, r2
+ strh r0, [r4, 0x24]
+_0815FFA8:
+ movs r0, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x32]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x2
+ bne _0815FFBC
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_0815FFBC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815FE80
+
+ thumb_func_start sub_815FFC4
+sub_815FFC4: @ 815FFC4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x26
+ ldrsh r0, [r0, r2]
+ adds r3, r1, 0
+ cmp r0, 0x4
+ bls _0815FFE0
+ b _08160132
+_0815FFE0:
+ lsls r0, 2
+ ldr r1, =_0815FFF4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0815FFF4:
+ .4byte _08160008
+ .4byte _08160058
+ .4byte _081600B4
+ .4byte _081600CC
+ .4byte _08160132
+_08160008:
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r0, 0
+ ldr r1, =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r1
+ movs r0, 0x6
+ strh r0, [r1, 0x8]
+ cmp r5, r2
+ ble _0816003E
+ negs r0, r0
+ strh r0, [r1, 0x8]
+_0816003E:
+ strh r5, [r1, 0xA]
+ strh r2, [r1, 0xC]
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x1
+ strh r0, [r1, 0x26]
+ b _08160150
+ .pool
+_08160058:
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r1
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r2, r0, r3
+ ldrh r0, [r2, 0x8]
+ ldrh r3, [r1, 0x24]
+ adds r0, r3
+ strh r0, [r1, 0x24]
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ ble _081600A0
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xC
+ ldrsh r1, [r2, r3]
+ b _08160126
+ .pool
+_081600A0:
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xC
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bgt _08160150
+ b _0816012A
+_081600B4:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r3
+ movs r2, 0x8
+ ldrsh r1, [r0, r2]
+ negs r1, r1
+ strh r1, [r0, 0x8]
+ ldrh r1, [r0, 0x26]
+ adds r1, 0x1
+ strh r1, [r0, 0x26]
+ b _08160150
+_081600CC:
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r1
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r2, r0, r3
+ ldrh r0, [r2, 0x8]
+ ldrh r3, [r1, 0x24]
+ adds r0, r3
+ strh r0, [r1, 0x24]
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bge _08160118
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xA
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bgt _08160150
+ b _0816012A
+ .pool
+_08160118:
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xA
+ ldrsh r1, [r2, r3]
+_08160126:
+ cmp r0, r1
+ blt _08160150
+_0816012A:
+ ldrh r0, [r2, 0x26]
+ adds r0, 0x1
+ strh r0, [r2, 0x26]
+ b _08160150
+_08160132:
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0
+ strh r1, [r0, 0x24]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_08160150:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_815FFC4
+
+ thumb_func_start sub_8160164
+sub_8160164: @ 8160164
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, =gTasks
+ adds r4, r1, r0
+ movs r0, 0
+ bl GetAnimBattlerSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0xE]
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _08160198
+ movs r1, 0x1
+_08160198:
+ strh r1, [r4, 0x10]
+ ldr r2, =gSprites
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x22]
+ strh r0, [r4, 0x14]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x20]
+ strh r0, [r4, 0x12]
+ strh r5, [r4, 0x1A]
+ strh r5, [r4, 0x1E]
+ movs r0, 0x1
+ strh r0, [r4, 0x1C]
+ strh r5, [r4, 0x20]
+ ldr r0, =sub_81601DC
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8160164
+
+ thumb_func_start sub_81601DC
+sub_81601DC: @ 81601DC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08160284
+ cmp r0, 0x1
+ bgt _08160204
+ cmp r0, 0
+ beq _0816020A
+ b _081602DA
+ .pool
+_08160204:
+ cmp r0, 0x2
+ beq _081602D4
+ b _081602DA
+_0816020A:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x8
+ movs r2, 0xFF
+ ands r0, r2
+ strh r0, [r4, 0x1E]
+ ldr r5, =gSprites
+ movs r6, 0xE
+ ldrsh r0, [r4, r6]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ ldr r3, =gSineTable
+ movs r6, 0x1E
+ ldrsh r0, [r4, r6]
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 21
+ strh r0, [r1, 0x24]
+ ldrh r0, [r4, 0x1A]
+ adds r0, 0x2
+ ands r0, r2
+ strh r0, [r4, 0x1A]
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r5
+ movs r6, 0x1A
+ ldrsh r0, [r4, r6]
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ ldrh r1, [r4, 0x10]
+ muls r0, r1
+ ldrh r1, [r4, 0x12]
+ adds r0, r1
+ strh r0, [r2, 0x20]
+ movs r6, 0x1A
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bne _081602DA
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrh r1, [r4, 0x12]
+ strh r1, [r0, 0x20]
+ b _081602C4
+ .pool
+_08160284:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x8
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x1E]
+ ldr r3, =gSprites
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ ldr r2, =gSineTable
+ movs r5, 0x1E
+ ldrsh r0, [r4, r5]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 21
+ strh r0, [r1, 0x24]
+ movs r6, 0x1E
+ ldrsh r2, [r4, r6]
+ cmp r2, 0
+ bne _081602DA
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ strh r2, [r1, 0x24]
+_081602C4:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _081602DA
+ .pool
+_081602D4:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_081602DA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81601DC
+
+ thumb_func_start sub_81602E0
+sub_81602E0: @ 81602E0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ ldrh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x14
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x14
+ bl Sin
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08160326
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_08160326:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81602E0
+
+ thumb_func_start sub_8160338
+sub_8160338: @ 8160338
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0816037C
+ ldr r2, =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, =0x0000fff5
+ strh r0, [r4, 0x2E]
+ movs r0, 0xC0
+ strh r0, [r4, 0x30]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ b _08160396
+ .pool
+_0816037C:
+ movs r0, 0xB
+ strh r0, [r4, 0x2E]
+ movs r0, 0xC0
+ strh r0, [r4, 0x30]
+ ldr r1, =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+_08160396:
+ ldr r0, =sub_81602E0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8160338
+
+ thumb_func_start sub_81603A8
+sub_81603A8: @ 81603A8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_80A861C
+ strh r0, [r5, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bgt _081603D2
+ movs r0, 0x10
+ strh r0, [r5, 0x22]
+_081603D2:
+ movs r0, 0
+ strh r0, [r5, 0x3A]
+ movs r1, 0x10
+ strh r1, [r5, 0x3C]
+ ldr r0, =sub_81603F4
+ str r0, [r5, 0x1C]
+ lsls r1, 8
+ movs r0, 0x52
+ bl SetGpuReg
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81603A8
+
+ thumb_func_start sub_81603F4
+sub_81603F4: @ 81603F4
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _0816046C
+ cmp r1, 0x1
+ bgt _0816040A
+ cmp r1, 0
+ beq _08160414
+ b _081604E8
+_0816040A:
+ cmp r1, 0x2
+ beq _08160482
+ cmp r1, 0x3
+ beq _081604E2
+ b _081604E8
+_08160414:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _081604E8
+ strh r1, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0816043E
+ ldrh r2, [r4, 0x3A]
+ movs r3, 0x3A
+ ldrsh r0, [r4, r3]
+ cmp r0, 0xF
+ bgt _0816044C
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x3A]
+ b _0816044C
+_0816043E:
+ ldrh r2, [r4, 0x3C]
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _0816044C
+ subs r0, r2, 0x1
+ strh r0, [r4, 0x3C]
+_0816044C:
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 8
+ ldrh r0, [r4, 0x3A]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _081604E8
+ b _081604DA
+_0816046C:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _081604E8
+ strh r1, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ b _081604DA
+_08160482:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _081604E8
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _081604AE
+ ldrh r2, [r4, 0x3A]
+ movs r3, 0x3A
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _081604BC
+ subs r0, r2, 0x1
+ strh r0, [r4, 0x3A]
+ b _081604BC
+_081604AE:
+ ldrh r2, [r4, 0x3C]
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ cmp r0, 0xF
+ bgt _081604BC
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x3C]
+_081604BC:
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 8
+ ldrh r0, [r4, 0x3A]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _081604E8
+_081604DA:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ b _081604E8
+_081604E2:
+ adds r0, r4, 0
+ bl DestroySpriteAndMatrix
+_081604E8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81603F4
+
+ thumb_func_start AnimTask_GetWeather
+AnimTask_GetWeather: @ 81604F0
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, =gBattleAnimArgs
+ movs r0, 0
+ strh r0, [r2, 0xE]
+ ldr r0, =gWeatherMoveAnim
+ ldrh r1, [r0]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _08160514
+ movs r0, 0x1
+ b _08160536
+ .pool
+_08160514:
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _08160520
+ movs r0, 0x2
+ b _08160536
+_08160520:
+ movs r0, 0x18
+ ands r0, r1
+ cmp r0, 0
+ beq _0816052C
+ movs r0, 0x3
+ b _08160536
+_0816052C:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08160538
+ movs r0, 0x4
+_08160536:
+ strh r0, [r2, 0xE]
+_08160538:
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ thumb_func_end AnimTask_GetWeather
+
+ thumb_func_start sub_8160544
+sub_8160544: @ 8160544
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r0, =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBattlerSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, =gUnknown_085CE9C8
+ adds r0, r4, 0
+ bl PrepareAffineAnimInTaskData
+ ldr r0, =sub_816058C
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8160544
+
+ thumb_func_start sub_816058C
+sub_816058C: @ 816058C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r2, =gTasks
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x8]
+ adds r1, r0, 0x1
+ movs r5, 0
+ strh r1, [r3, 0x8]
+ subs r0, 0x10
+ lsls r0, 16
+ lsrs r0, 16
+ adds r6, r2, 0
+ cmp r0, 0x16
+ bhi _081605F0
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _08160600
+ strh r5, [r3, 0xA]
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ strh r0, [r3, 0xC]
+ movs r5, 0x1
+ ands r0, r5
+ cmp r0, 0
+ bne _081605F0
+ ldr r2, =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, =0x0000ffff
+ strh r1, [r0, 0x24]
+ b _08160600
+ .pool
+_081605F0:
+ ldr r2, =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x24]
+_08160600:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r6
+ bl RunAffineAnimFromTaskData
+ lsls r0, 24
+ cmp r0, 0
+ bne _08160618
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_08160618:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_816058C
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_intro.s b/asm/battle_intro.s
deleted file mode 100644
index 04a0301ce..000000000
--- a/asm/battle_intro.s
+++ /dev/null
@@ -1,2035 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetAnimBgAttribute
-SetAnimBgAttribute: @ 811802C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r6, 0x3
- bls _08118040
- b _08118132
-_08118040:
- ldr r0, =gUnknown_0859741A
- adds r0, r6, r0
- ldrb r0, [r0]
- bl GetGpuReg
- ldr r1, =gUnknown_0203A114
- strh r0, [r1]
- cmp r5, 0x6
- bhi _08118124
- lsls r0, r5, 2
- ldr r1, =_08118068
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118068:
- .4byte _08118084
- .4byte _08118098
- .4byte _081180B0
- .4byte _081180C8
- .4byte _081180E0
- .4byte _081180FC
- .4byte _08118110
-_08118084:
- ldr r2, =gUnknown_0203A114
- lsls r3, r4, 6
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x1]
- b _08118124
- .pool
-_08118098:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 5
- ldrb r2, [r3, 0x1]
- movs r0, 0x21
- negs r0, r0
- b _0811811E
- .pool
-_081180B0:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 6
- ldrb r2, [r3]
- movs r0, 0x41
- negs r0, r0
- b _081180EE
- .pool
-_081180C8:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0xD
- negs r0, r0
- b _081180EE
- .pool
-_081180E0:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x3
- adds r1, r4, 0
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x4
- negs r0, r0
-_081180EE:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08118124
- .pool
-_081180FC:
- ldr r2, =gUnknown_0203A114
- lsls r3, r4, 7
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
- b _08118124
- .pool
-_08118110:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x1F
- adds r1, r4, 0
- ands r1, r0
- ldrb r2, [r3, 0x1]
- movs r0, 0x20
- negs r0, r0
-_0811811E:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x1]
-_08118124:
- ldr r0, =gUnknown_0859741A
- adds r0, r6, r0
- ldrb r0, [r0]
- ldr r1, =gUnknown_0203A114
- ldrh r1, [r1]
- bl SetGpuReg
-_08118132:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetAnimBgAttribute
-
- thumb_func_start GetAnimBgAttribute
-GetAnimBgAttribute: @ 8118140
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r2, 0x3
- bhi _081181C8
- ldr r0, =gUnknown_0859741E
- adds r0, r2, r0
- ldrb r0, [r0]
- bl GetGpuReg
- mov r1, sp
- strh r0, [r1]
- cmp r4, 0x6
- bhi _081181C8
- lsls r0, r4, 2
- ldr r1, =_08118174
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118174:
- .4byte _08118190
- .4byte _08118198
- .4byte _081181A0
- .4byte _081181A8
- .4byte _081181B0
- .4byte _081181B8
- .4byte _081181C0
-_08118190:
- ldr r0, [sp]
- lsls r0, 16
- lsrs r0, 30
- b _081181CA
-_08118198:
- ldr r0, [sp]
- lsls r0, 18
- lsrs r0, 31
- b _081181CA
-_081181A0:
- ldr r0, [sp]
- lsls r0, 25
- lsrs r0, 31
- b _081181CA
-_081181A8:
- ldr r0, [sp]
- lsls r0, 28
- lsrs r0, 30
- b _081181CA
-_081181B0:
- ldr r0, [sp]
- lsls r0, 30
- lsrs r0, 30
- b _081181CA
-_081181B8:
- ldr r0, [sp]
- lsls r0, 24
- lsrs r0, 31
- b _081181CA
-_081181C0:
- ldr r0, [sp]
- lsls r0, 19
- lsrs r0, 27
- b _081181CA
-_081181C8:
- movs r0, 0
-_081181CA:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetAnimBgAttribute
-
- thumb_func_start HandleIntroSlide
-HandleIntroSlide: @ 81181D4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, =gBattleTypeFlags
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _08118208
- ldr r0, =gPartnerTrainerId
- ldrh r1, [r0]
- ldr r0, =0x00000c03
- cmp r1, r0
- beq _08118208
- ldr r0, =sub_8118D68
- b _08118258
- .pool
-_08118208:
- ldr r2, [r2]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0811821C
- ldr r0, =task00_battle_intro_wireless
- b _08118258
- .pool
-_0811821C:
- ldr r0, =0x003f0100
- ands r0, r2
- cmp r0, 0
- beq _08118230
- ldr r0, =task_battle_intro_anim
- b _08118258
- .pool
-_08118230:
- movs r0, 0x80
- lsls r0, 5
- ands r2, r0
- cmp r2, 0
- beq _08118250
- ldr r0, =gGameVersion
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08118250
- movs r4, 0x3
- ldr r0, =task00_battle_intro_80BC6C8
- b _08118258
- .pool
-_08118250:
- ldr r1, =gUnknown_08597424
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
-_08118258:
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x8]
- strh r4, [r1, 0xA]
- strh r0, [r1, 0xC]
- strh r0, [r1, 0xE]
- strh r0, [r1, 0x10]
- strh r0, [r1, 0x12]
- strh r0, [r1, 0x14]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end HandleIntroSlide
-
- thumb_func_start sub_811828C
-sub_811828C: @ 811828C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r0, =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG1_Y
- strh r1, [r0]
- ldr r0, =gBattle_BG2_X
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r4, =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811828C
-
- thumb_func_start task_battle_intro_80BC47C
-task_battle_intro_80BC47C: @ 81182EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
- strh r0, [r1]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- mov r8, r1
- cmp r0, 0x4
- bls _08118318
- b _0811852A
-_08118318:
- lsls r0, 2
- ldr r1, =_08118330
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118330:
- .4byte _08118344
- .4byte _08118374
- .4byte _0811839C
- .4byte _081183E4
- .4byte _08118524
-_08118344:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08118360
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r1, 0x10
- b _0811836A
- .pool
-_08118360:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r1, 0x1
-_0811836A:
- strh r1, [r0, 0xC]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _0811852A
-_08118374:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- mov r3, r8
- adds r1, r0, r3
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _0811838C
- b _0811852A
-_0811838C:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _0811852A
-_0811839C:
- ldr r1, =gBattle_WIN0V
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _081183B4
- b _0811852A
-_081183B4:
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- add r1, r8
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _0811852A
- .pool
-_081183E4:
- lsls r0, r4, 2
- adds r1, r0, r4
- lsls r1, 3
- mov r5, r8
- adds r2, r1, r5
- ldrh r3, [r2, 0xE]
- movs r5, 0xE
- ldrsh r1, [r2, r5]
- mov r12, r0
- cmp r1, 0
- beq _08118400
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- b _0811842E
-_08118400:
- movs r1, 0xA
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _08118420
- ldr r2, =gBattle_BG1_Y
- ldrh r1, [r2]
- ldr r0, =0x0000ffb0
- cmp r1, r0
- beq _0811842E
- subs r0, r1, 0x2
- b _0811842C
- .pool
-_08118420:
- ldr r2, =gBattle_BG1_Y
- ldrh r1, [r2]
- ldr r0, =0x0000ffc8
- cmp r1, r0
- beq _0811842E
- subs r0, r1, 0x1
-_0811842C:
- strh r0, [r2]
-_0811842E:
- ldr r2, =gBattle_WIN0V
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08118442
- ldr r3, =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_08118442:
- mov r5, r12
- adds r0, r5, r4
- lsls r0, 3
- mov r2, r8
- adds r1, r0, r2
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0811845A
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_0811845A:
- movs r3, 0
- ldr r5, =gScanlineEffect
- mov r9, r5
- ldr r7, =gScanlineEffectRegBuffers
- mov r6, r9
- adds r5, r1, 0
-_08118466:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r5, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _08118466
- cmp r3, 0x9F
- bgt _081184AA
- ldr r7, =gScanlineEffectRegBuffers
- ldr r6, =gScanlineEffect
- ldr r1, =gTasks
- mov r2, r12
- adds r0, r2, r4
- lsls r0, 3
- adds r5, r0, r1
-_08118490:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r5, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _08118490
-_081184AA:
- mov r3, r12
- adds r0, r3, r4
- lsls r0, 3
- mov r5, r8
- adds r1, r0, r5
- movs r0, 0xC
- ldrsh r2, [r1, r0]
- cmp r2, 0
- bne _0811852A
- movs r0, 0x3
- mov r3, r9
- strb r0, [r3, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r2, [sp]
- ldr r1, =0x0600e000
- ldr r2, =0x05000200
- mov r0, sp
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _0811852A
- .pool
-_08118524:
- adds r0, r4, 0
- bl sub_811828C
-_0811852A:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task_battle_intro_80BC47C
-
- thumb_func_start task00_battle_intro_80BC6C8
-task00_battle_intro_80BC6C8: @ 8118538
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0xA
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x3
- beq _08118578
- cmp r0, 0x3
- bgt _08118568
- cmp r0, 0x2
- beq _0811856C
- b _08118580
- .pool
-_08118568:
- cmp r0, 0x4
- bne _08118580
-_0811856C:
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x8
- b _0811857E
- .pool
-_08118578:
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
-_0811857E:
- strh r0, [r1]
-_08118580:
- lsls r0, r5, 2
- adds r1, r0, r5
- lsls r1, 3
- adds r4, r1, r2
- movs r3, 0xA
- ldrsh r1, [r4, r3]
- adds r6, r0, 0
- cmp r1, 0x4
- bne _081185E4
- ldr r7, =gBattle_BG1_Y
- ldrh r0, [r4, 0x14]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081185A6
- ldr r1, =0x000001ff
- adds r0, r1
-_081185A6:
- asrs r0, 9
- subs r0, 0x8
- strh r0, [r7]
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0xB3
- bgt _081185C8
- adds r0, r1, 0x4
- b _081185CA
- .pool
-_081185C8:
- adds r0, r1, 0x6
-_081185CA:
- strh r0, [r4, 0x14]
- ldr r2, =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r3, r0, r2
- movs r0, 0x14
- ldrsh r1, [r3, r0]
- movs r0, 0xB4
- lsls r0, 1
- cmp r1, r0
- bne _081185E4
- movs r0, 0
- strh r0, [r3, 0x14]
-_081185E4:
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x4
- bls _081185F4
- b _0811881A
-_081185F4:
- lsls r0, 2
- ldr r1, =_08118608
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118608:
- .4byte _0811861C
- .4byte _0811864C
- .4byte _08118678
- .4byte _081186C8
- .4byte _08118814
-_0811861C:
- ldr r1, =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x10
- strh r3, [r2, 0x10]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08118640
- strh r3, [r2, 0xC]
- b _08118644
- .pool
-_08118640:
- movs r0, 0x1
- strh r0, [r2, 0xC]
-_08118644:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _0811881A
-_0811864C:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _08118662
- b _0811881A
-_08118662:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _0811881A
- .pool
-_08118678:
- ldr r1, =gBattle_WIN0V
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _08118690
- b _0811881A
-_08118690:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- movs r0, 0x1
- strh r0, [r1, 0x12]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _0811881A
- .pool
-_081186C8:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08118708
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _08118728
- ldr r1, =0x00001842
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0xF
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- b _08118728
- .pool
-_08118708:
- ldrh r2, [r1, 0x10]
- movs r0, 0x1F
- ands r0, r2
- cmp r0, 0
- beq _08118728
- ldrh r0, [r1, 0x12]
- subs r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _08118728
- adds r0, r2, 0
- adds r0, 0xFF
- strh r0, [r1, 0x10]
- movs r0, 0x4
- strh r0, [r1, 0x12]
-_08118728:
- ldr r2, =gBattle_WIN0V
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _0811873C
- ldr r3, =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_0811873C:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08118752
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_08118752:
- movs r3, 0
- ldr r0, =gScanlineEffect
- mov r8, r0
- ldr r2, =gScanlineEffectRegBuffers
- mov r12, r2
- mov r7, r8
- adds r4, r1, 0
-_08118760:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r12
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _08118760
- cmp r3, 0x9F
- bgt _081187A4
- ldr r0, =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, =gScanlineEffect
- ldr r1, =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r4, r0, r1
-_0811878A:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r12
- ldrh r0, [r4, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _0811878A
-_081187A4:
- ldr r1, =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0xC
- ldrsh r2, [r1, r3]
- cmp r2, 0
- bne _0811881A
- movs r0, 0x3
- mov r3, r8
- strb r0, [r3, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r2, [sp]
- ldr r1, =0x0600e000
- ldr r2, =0x05000200
- mov r0, sp
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _0811881A
- .pool
-_08118814:
- adds r0, r5, 0
- bl sub_811828C
-_0811881A:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _08118832
- ldrh r1, [r1, 0x10]
- movs r0, 0x52
- bl SetGpuReg
-_08118832:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task00_battle_intro_80BC6C8
-
- thumb_func_start task_battle_intro_anim
-task_battle_intro_anim: @ 8118844
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x8
- strh r0, [r1]
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x4
- bls _0811886E
- b _08118A96
-_0811886E:
- lsls r0, 2
- ldr r1, =_08118884
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118884:
- .4byte _08118898
- .4byte _081188F0
- .4byte _0811891C
- .4byte _0811896C
- .4byte _08118A90
-_08118898:
- ldr r1, =0x00001842
- movs r0, 0x50
- bl SetGpuReg
- ldr r4, =0x00000808
- movs r0, 0x52
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- strh r4, [r2, 0x10]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _081188E4
- movs r0, 0x10
- b _081188E6
- .pool
-_081188E4:
- movs r0, 0x1
-_081188E6:
- strh r0, [r2, 0xC]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _08118A96
-_081188F0:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _08118908
- b _08118A96
-_08118908:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _08118A96
- .pool
-_0811891C:
- ldr r1, =gBattle_WIN0V
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _08118934
- b _08118A96
-_08118934:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- movs r0, 0x1
- strh r0, [r1, 0x12]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _08118A96
- .pool
-_0811896C:
- lsls r0, r5, 2
- adds r1, r0, r5
- lsls r1, 3
- adds r2, r1, r4
- ldrh r3, [r2, 0xE]
- movs r6, 0xE
- ldrsh r1, [r2, r6]
- mov r12, r0
- cmp r1, 0
- beq _08118986
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- b _081189A6
-_08118986:
- ldrh r1, [r2, 0x10]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- beq _081189A6
- ldrh r0, [r2, 0x12]
- subs r0, 0x1
- strh r0, [r2, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _081189A6
- adds r0, r1, 0
- adds r0, 0xFF
- strh r0, [r2, 0x10]
- movs r0, 0x6
- strh r0, [r2, 0x12]
-_081189A6:
- ldr r2, =gBattle_WIN0V
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _081189BA
- ldr r3, =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_081189BA:
- mov r6, r12
- adds r0, r6, r5
- lsls r0, 3
- adds r1, r0, r4
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _081189D0
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_081189D0:
- movs r3, 0
- ldr r6, =gScanlineEffect
- mov r8, r6
- ldr r7, =gScanlineEffectRegBuffers
- adds r4, r1, 0
-_081189DA:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _081189DA
- cmp r3, 0x9F
- bgt _08118A1E
- ldr r7, =gScanlineEffectRegBuffers
- ldr r6, =gScanlineEffect
- ldr r1, =gTasks
- mov r2, r12
- adds r0, r2, r5
- lsls r0, 3
- adds r4, r0, r1
-_08118A04:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r4, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _08118A04
-_08118A1E:
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0xC
- ldrsh r2, [r1, r3]
- cmp r2, 0
- bne _08118A96
- movs r0, 0x3
- mov r6, r8
- strb r0, [r6, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r2, [sp]
- ldr r1, =0x0600e000
- ldr r2, =0x05000200
- mov r0, sp
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _08118A96
- .pool
-_08118A90:
- adds r0, r5, 0
- bl sub_811828C
-_08118A96:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _08118AB0
- ldrh r1, [r1, 0x10]
- movs r0, 0x52
- bl SetGpuReg
-_08118AB0:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_battle_intro_anim
-
- thumb_func_start task00_battle_intro_wireless
-task00_battle_intro_wireless: @ 8118AC0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r7, r0, r1
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- ble _08118B36
- movs r2, 0x10
- ldrsh r0, [r7, r2]
- cmp r0, 0
- bne _08118B36
- ldr r2, =gBattle_BG1_X
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- bne _08118AFE
- cmp r1, 0x4F
- bhi _08118B18
-_08118AFE:
- adds r0, r1, 0x3
- strh r0, [r2]
- ldr r1, =gBattle_BG2_X
- ldrh r0, [r1]
- subs r0, 0x3
- strh r0, [r1]
- b _08118B36
- .pool
-_08118B18:
- str r5, [sp]
- ldr r1, =0x0600e000
- ldr r4, =0x05000200
- mov r0, sp
- adds r2, r4, 0
- bl CpuSet
- str r5, [sp, 0x4]
- add r0, sp, 0x4
- ldr r1, =0x0600f000
- adds r2, r4, 0
- bl CpuSet
- movs r0, 0x1
- strh r0, [r7, 0x10]
-_08118B36:
- ldr r0, =gTasks
- lsls r2, r6, 2
- adds r1, r2, r6
- lsls r1, 3
- adds r1, r0
- movs r3, 0x8
- ldrsh r1, [r1, r3]
- mov r9, r0
- adds r5, r2, 0
- cmp r1, 0x4
- bls _08118B4E
- b _08118D5A
-_08118B4E:
- lsls r0, r1, 2
- ldr r1, =_08118B6C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118B6C:
- .4byte _08118B80
- .4byte _08118B92
- .4byte _08118C38
- .4byte _08118C7C
- .4byte _08118D54
-_08118B80:
- adds r0, r5, r6
- lsls r0, 3
- add r0, r9
- movs r1, 0x20
- strh r1, [r0, 0xC]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _08118D5A
-_08118B92:
- adds r0, r5, r6
- lsls r0, 3
- mov r2, r9
- adds r1, r0, r2
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _08118BA8
- b _08118D5A
-_08118BA8:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- ldr r4, =gSprites
- ldr r5, =gBattleStruct
- ldr r0, [r5]
- adds r0, 0x7D
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r3, [r1, 0x1]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- movs r3, 0x8
- mov r9, r3
- mov r3, r9
- orrs r0, r3
- strb r0, [r1, 0x1]
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x7D
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- movs r1, 0x1C
- adds r1, r4
- mov r8, r1
- add r0, r8
- ldr r6, =sub_8038B74
- str r6, [r0]
- adds r3, 0x7E
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x1]
- ands r2, r1
- mov r3, r9
- orrs r2, r3
- strb r2, [r0, 0x1]
- ldr r0, [r5]
- adds r0, 0x7E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- str r6, [r0]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- ldr r1, =0x00003f06
- movs r0, 0x4A
- bl SetGpuReg
- b _08118D5A
- .pool
-_08118C38:
- ldr r1, =gBattle_WIN0V
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _08118C50
- b _08118D5A
-_08118C50:
- adds r1, r5, r6
- lsls r1, 3
- add r1, r9
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _08118D5A
- .pool
-_08118C7C:
- ldr r2, =gBattle_WIN0V
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08118C90
- ldr r3, =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_08118C90:
- adds r0, r5, r6
- lsls r0, 3
- mov r2, r9
- adds r1, r0, r2
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08118CA6
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_08118CA6:
- movs r3, 0
- ldr r0, =gScanlineEffect
- mov r12, r0
- ldr r2, =gScanlineEffectRegBuffers
- mov r8, r2
- mov r7, r12
- adds r4, r1, 0
-_08118CB4:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r8
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _08118CB4
- cmp r3, 0x9F
- bgt _08118CF8
- ldr r0, =gScanlineEffectRegBuffers
- mov r8, r0
- ldr r7, =gScanlineEffect
- ldr r1, =gTasks
- adds r0, r5, r6
- lsls r0, 3
- adds r4, r0, r1
-_08118CDE:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r8
- ldrh r0, [r4, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _08118CDE
-_08118CF8:
- adds r0, r5, r6
- lsls r0, 3
- mov r2, r9
- adds r1, r0, r2
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _08118D5A
- movs r0, 0x3
- mov r2, r12
- strb r0, [r2, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _08118D5A
- .pool
-_08118D54:
- adds r0, r6, 0
- bl sub_811828C
-_08118D5A:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task00_battle_intro_wireless
-
- thumb_func_start sub_8118D68
-sub_8118D68: @ 8118D68
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- cmp r0, 0x5
- bls _08118D86
- b _08118FB2
-_08118D86:
- lsls r0, 2
- ldr r1, =_08118D98
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118D98:
- .4byte _08118DB0
- .4byte _08118DBE
- .4byte _08118E4C
- .4byte _08118EA8
- .4byte _08118F00
- .4byte _08118FAC
-_08118DB0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r6
- movs r1, 0x1
- strh r1, [r0, 0xC]
- b _08118F84
-_08118DBE:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r6
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _08118DD4
- b _08118FB2
-_08118DD4:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- ldr r1, =0x00005c0a
- movs r0, 0xA
- bl SetGpuReg
- ldr r1, =0x00005e0a
- movs r0, 0xC
- bl SetGpuReg
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- ldr r2, =0x0000f040
- adds r0, r2, 0
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- movs r1, 0xF8
- lsls r1, 6
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =0x00003f3f
- movs r0, 0x4A
- bl SetGpuReg
- ldr r1, =gBattle_BG0_Y
- ldr r2, =0x0000ffd0
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, =gBattle_BG1_X
- movs r0, 0xF0
- strh r0, [r1]
- ldr r1, =gBattle_BG2_X
- subs r2, 0xC0
- adds r0, r2, 0
- strh r0, [r1]
- b _08118FB2
- .pool
-_08118E4C:
- ldr r2, =gBattle_WIN0V
- ldrh r3, [r2]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- adds r1, r3, r0
- strh r1, [r2]
- movs r5, 0xFF
- lsls r5, 8
- ands r1, r5
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- beq _08118E6E
- adds r0, r3, 0
- adds r0, 0xFF
- strh r0, [r2]
-_08118E6E:
- ldrh r0, [r2]
- adds r1, r5, 0
- ands r1, r0
- movs r0, 0x80
- lsls r0, 6
- cmp r1, r0
- beq _08118E7E
- b _08118FB2
-_08118E7E:
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r6
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _08118FB2
- .pool
-_08118EA8:
- ldr r3, =gBattle_WIN0V
- ldrh r2, [r3]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r2
- movs r1, 0x98
- lsls r1, 7
- cmp r0, r1
- beq _08118EC2
- movs r1, 0xFF
- lsls r1, 2
- adds r0, r2, r1
- strh r0, [r3]
-_08118EC2:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r3, r0, r6
- ldrh r1, [r3, 0xC]
- movs r2, 0xC
- ldrsh r0, [r3, r2]
- cmp r0, 0
- beq _08118ED8
- subs r0, r1, 0x2
- strh r0, [r3, 0xC]
-_08118ED8:
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r3, 0xC]
- strh r0, [r1]
- ldr r2, =gBattle_BG2_X
- negs r1, r0
- strh r1, [r2]
- lsls r0, 16
- cmp r0, 0
- bne _08118FB2
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- b _08118FB2
- .pool
-_08118F00:
- ldr r1, =gBattle_BG0_Y
- ldrh r0, [r1]
- adds r3, r0, 0x2
- strh r3, [r1]
- ldr r1, =gBattle_BG2_Y
- ldrh r0, [r1]
- adds r0, 0x2
- strh r0, [r1]
- ldr r5, =gBattle_WIN0V
- ldrh r2, [r5]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r2
- movs r1, 0xA0
- lsls r1, 7
- cmp r0, r1
- beq _08118F28
- adds r0, r2, 0
- adds r0, 0xFF
- strh r0, [r5]
-_08118F28:
- lsls r0, r3, 16
- lsrs r0, 16
- cmp r0, 0
- bne _08118FB2
- str r0, [sp]
- ldr r1, =0x0600e000
- ldr r2, =0x05000800
- mov r0, sp
- bl CpuSet
- movs r0, 0
- bl GetGpuReg
- ldr r1, =0x0000bfff
- ands r1, r0
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- ldr r1, =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
-_08118F84:
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _08118FB2
- .pool
-_08118FAC:
- adds r0, r4, 0
- bl sub_811828C
-_08118FB2:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8118D68
-
- thumb_func_start sub_8118FBC
-sub_8118FBC: @ 8118FBC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- str r0, [sp]
- adds r6, r2, 0
- adds r4, r3, 0
- ldr r0, [sp, 0x24]
- ldr r7, [sp, 0x28]
- ldr r2, [sp, 0x2C]
- mov r9, r2
- ldr r5, [sp, 0x30]
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gMonSpritesGfxPtr
- ldr r2, [r1]
- lsls r4, 2
- adds r2, 0x4
- adds r2, r4
- ldr r1, =gBattleMonForms
- adds r0, r1
- ldrb r1, [r0]
- lsls r1, 11
- ldr r0, [r2]
- adds r0, r1
- movs r2, 0x80
- lsls r2, 3
- adds r1, r7, 0
- bl CpuSet
- ldr r1, [sp]
- lsls r0, r1, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 5
- adds r1, r7, 0
- adds r3, r5, 0
- bl LoadBgTiles
- adds r0, r6, 0
- adds r0, 0x8
- cmp r6, r0
- bge _08119068
- mov r12, r0
- mov r2, r8
- lsls r7, r2, 1
-_0811903A:
- mov r1, r8
- adds r2, r1, 0
- adds r2, 0x8
- adds r4, r6, 0x1
- cmp r1, r2
- bge _08119062
- mov r0, r10
- lsls r3, r0, 12
- lsls r0, r6, 6
- add r0, r9
- adds r6, r7, r0
- subs r1, r2, r1
-_08119052:
- adds r0, r5, 0
- orrs r0, r3
- strh r0, [r6]
- adds r5, 0x1
- adds r6, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _08119052
-_08119062:
- adds r6, r4, 0
- cmp r6, r12
- blt _0811903A
-_08119068:
- ldr r1, [sp]
- lsls r0, r1, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 4
- mov r1, r9
- movs r3, 0
- bl LoadBgTilemap
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8118FBC
-
- thumb_func_start sub_8119094
-sub_8119094: @ 8119094
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- ldr r5, [sp, 0x28]
- mov r8, r5
- ldr r5, [sp, 0x2C]
- ldr r6, [sp, 0x30]
- mov r9, r6
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r1, 24
- lsls r2, 24
- lsls r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- mov r7, r8
- lsls r7, 16
- lsrs r6, r7, 16
- lsls r5, 24
- lsrs r5, 24
- mov r0, r9
- lsls r0, 24
- mov r9, r0
- ldr r4, =0x040000d4
- ldr r0, =gMonSpritesGfxPtr
- ldr r0, [r0]
- lsrs r2, 22
- adds r0, 0x4
- adds r0, r2
- lsrs r3, 13
- ldr r0, [r0]
- adds r0, r3
- str r0, [r4]
- movs r0, 0xC0
- lsls r0, 19
- adds r6, r0
- str r6, [r4, 0x4]
- ldr r0, =0x80000400
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- adds r2, r7, 0
- lsrs r2, 21
- mov r6, r9
- lsrs r6, 15
- subs r4, r2, r6
- lsrs r0, r1, 24
- adds r1, r0, 0
- adds r1, 0x8
- cmp r0, r1
- bge _08119148
- mov r9, r1
- mov r7, r12
- lsls r7, 1
- mov r8, r7
- lsls r5, 11
- str r5, [sp]
-_08119110:
- mov r2, r12
- adds r3, r2, 0
- adds r3, 0x8
- adds r5, r0, 0x1
- cmp r2, r3
- bge _08119142
- mov r1, r10
- lsls r6, r1, 12
- lsls r0, 6
- movs r7, 0xC0
- lsls r7, 19
- adds r0, r7
- ldr r1, [sp]
- adds r0, r1, r0
- mov r7, r8
- adds r1, r7, r0
- subs r2, r3, r2
-_08119132:
- adds r0, r4, 0
- orrs r0, r6
- strh r0, [r1]
- adds r4, 0x1
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _08119132
-_08119142:
- adds r0, r5, 0
- cmp r0, r9
- blt _08119110
-_08119148:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8119094
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cable_car.s b/asm/cable_car.s
deleted file mode 100644
index c1eafc506..000000000
--- a/asm/cable_car.s
+++ /dev/null
@@ -1,2882 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_814FC70
-sub_814FC70: @ 814FC70
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0814FC8E
- ldr r0, =sub_814FCC8
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0814FC8E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814FC70
-
- thumb_func_start sub_814FC9C
-sub_814FC9C: @ 814FC9C
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, =sub_814FC70
- movs r1, 0x1
- 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
- .pool
- thumb_func_end sub_814FC9C
-
- thumb_func_start sub_814FCC8
-sub_814FCC8: @ 814FCC8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- movs r4, 0
- str r4, [sp, 0x14]
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r6, r1, 0
- cmp r0, 0x9
- bhi _0814FD20
- lsls r0, 2
- ldr r1, =_0814FCF8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0814FCF8:
- .4byte _0814FD20
- .4byte _0814FDD8
- .4byte _0814FE90
- .4byte _0814FF50
- .4byte _0814FF7C
- .4byte _0814FF98
- .4byte _0814FFF8
- .4byte _08150090
- .4byte _08150190
- .4byte _081501C8
-_0814FD20:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl sub_8150B6C
- bl ScanlineEffect_Stop
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x10
- mov r9, r0
- add r2, sp, 0xC
- movs r6, 0
- ldr r1, =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r8, r0
-_0814FD4E:
- strh r6, [r2]
- add r0, sp, 0xC
- 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 _0814FD4E
- strh r6, [r2]
- add r2, sp, 0xC
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r3, r8
- orrs r0, r3
- 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, 0x10]
- ldr r2, =0x040000d4
- mov r1, r9
- 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
- add r0, sp, 0xC
- 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]
- ldr r4, =gUnknown_0203ABAC
- ldr r0, =0x00004110
- bl AllocZeroed
- str r0, [r4]
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_0814FDD8:
- bl ResetSpriteData
- bl ResetTasks
- bl FreeAllSpritePalettes
- bl ResetPaletteFade
- bl reset_temp_tile_data_buffers
- bl sub_80AAFA4
- movs r4, 0
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0xF0
- movs r2, 0
-_0814FDFC:
- lsls r0, r4, 2
- adds r0, r1, r0
- str r2, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x13
- bls _0814FDFC
- bl InitMapMusic
- bl ResetMapMusic
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085CD66C
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203ABAC
- ldr r1, [r4]
- adds r1, 0xFC
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r3, =0x000010fc
- adds r1, r3
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x000020fc
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r2, =0x000030fc
- adds r1, r2
- movs r0, 0x3
- bl SetBgTilemapBuffer
- ldr r2, =gSpriteCoordOffsetX
- ldr r1, =gSpriteCoordOffsetY
- movs r0, 0
- strh r0, [r1]
- strh r0, [r2]
- ldr r1, =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_0814FE90:
- movs r4, 0
- add r5, sp, 0x14
- ldr r6, =gUnknown_085CDB54
-_0814FE96:
- lsls r0, r4, 3
- adds r0, r6
- bl LoadCompressedSpriteSheet
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0814FE96
- ldr r0, =gUnknown_085CDB74
- bl LoadSpritePalettes
- ldr r0, =gCableCarMtChimneyTilemap
- adds r1, r5, 0
- bl malloc_and_decompress
- ldr r4, =gUnknown_0203ABAC
- ldr r1, [r4]
- ldr r2, =0x000040fc
- adds r1, r2
- str r0, [r1]
- ldr r0, =gCableCarTreeTilemap
- adds r1, r5, 0
- bl malloc_and_decompress
- ldr r1, [r4]
- movs r3, 0x82
- lsls r3, 7
- adds r1, r3
- str r0, [r1]
- ldr r0, =gCableCarMountainTilemap
- adds r1, r5, 0
- bl malloc_and_decompress
- ldr r1, [r4]
- ldr r2, =0x00004104
- adds r1, r2
- str r0, [r1]
- ldr r0, =gCableCarPylonStemTilemap
- adds r1, r5, 0
- bl malloc_and_decompress
- ldr r1, [r4]
- ldr r3, =0x0000410c
- adds r2, r1, r3
- str r0, [r2]
- ldr r0, =0x00004108
- adds r1, r0
- ldr r0, =gCableCarPylonHookTilemapEntries
- str r0, [r1]
- ldr r1, =gUnknown_08DBA5B8
- movs r0, 0
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_0814FF50:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _0814FF5C
- b _08150226
-_0814FF5C:
- ldr r0, =gUnknown_08DBA518
- movs r1, 0
- movs r2, 0x80
- bl LoadPalette
- ldr r1, =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_0814FF7C:
- bl sub_8150D28
- bl RunTasks
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_0814FF98:
- ldr r0, =gUnknown_0203ABAC
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x7
- bne _0814FFB4
- movs r2, 0x87
- lsls r2, 3
- adds r1, r6, r2
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_0814FFB4:
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0xF0
- ldr r0, [r1]
- cmp r0, 0
- bne _0814FFC4
- b _08150226
-_0814FFC4:
- movs r4, 0
- adds r3, r1, 0
- movs r5, 0xD
- negs r5, r5
-_0814FFCC:
- lsls r0, r4, 2
- adds r0, r3, r0
- ldr r2, [r0]
- cmp r2, 0
- beq _0814FFDE
- ldrb r1, [r2, 0x5]
- adds r0, r5, 0
- ands r0, r1
- strb r0, [r2, 0x5]
-_0814FFDE:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x13
- bls _0814FFCC
- movs r3, 0x87
- lsls r3, 3
- adds r1, r6, r3
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_0814FFF8:
- ldr r6, =gUnknown_0203ABAC
- ldr r0, [r6]
- movs r1, 0x82
- lsls r1, 7
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0xF
- str r0, [sp, 0x4]
- movs r5, 0x11
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0x11
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r0, [r6]
- ldr r2, =0x00004104
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x1E
- str r0, [sp]
- movs r3, 0x14
- mov r8, r3
- str r3, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r0, [r6]
- ldr r1, =0x00004108
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x5
- str r0, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r0, [r6]
- ldr r2, =0x0000410c
- adds r0, r2
- ldr r1, [r0]
- str r4, [sp]
- mov r3, r8
- str r3, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_08150090:
- ldr r0, =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_81514C8
- ldr r1, =gUnknown_0203ABAC
- mov r9, r1
- ldr r0, [r1]
- ldr r2, =0x000040fc
- mov r8, r2
- add r0, r8
- ldr r1, [r0]
- adds r1, 0x90
- movs r6, 0xC
- str r6, [sp]
- movs r5, 0x3
- str r5, [sp, 0x4]
- movs r4, 0x11
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0
- movs r3, 0xE
- bl CopyToBgTilemapBufferRect_ChangePalette
- mov r3, r9
- ldr r0, [r3]
- add r0, r8
- ldr r1, [r0]
- adds r1, 0xD8
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0xC
- movs r3, 0x11
- bl CopyToBgTilemapBufferRect_ChangePalette
- mov r1, r9
- ldr r0, [r1]
- add r0, r8
- ldr r1, [r0]
- movs r2, 0x90
- lsls r2, 1
- adds r1, r2
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0x18
- movs r3, 0x14
- bl CopyToBgTilemapBufferRect_ChangePalette
- mov r3, r9
- ldr r0, [r3]
- add r0, r8
- ldr r1, [r0]
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0
- movs r3, 0x11
- bl CopyToBgTilemapBufferRect_ChangePalette
- mov r1, r9
- ldr r0, [r1]
- add r0, r8
- ldr r1, [r0]
- adds r1, 0x48
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0
- movs r3, 0x14
- bl CopyToBgTilemapBufferRect_ChangePalette
- mov r2, r9
- ldr r0, [r2]
- add r0, r8
- ldr r1, [r0]
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0xC
- movs r3, 0x14
- bl CopyToBgTilemapBufferRect_ChangePalette
- mov r3, r9
- ldr r0, [r3]
- add r0, r8
- ldr r1, [r0]
- adds r1, 0x48
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0xC
- movs r3, 0x17
- bl CopyToBgTilemapBufferRect_ChangePalette
- mov r1, r9
- ldr r0, [r1]
- add r0, r8
- ldr r1, [r0]
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0x18
- movs r3, 0x17
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_08150190:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r1, 0x3
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =0x000001a9
- movs r1, 0x1
- bl FadeInNewBGM
- movs r0, 0x1
- bl sub_8150B6C
- ldr r1, =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- b _08150224
- .pool
-_081501C8:
- ldr r3, =0x04000208
- ldrh r2, [r3]
- movs r0, 0
- strh r0, [r3]
- ldr r4, =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r0, =sub_8150800
- bl SetVBlankCallback
- ldr r0, =mainloop
- bl SetMainCallback2
- ldr r0, =sub_81503E4
- movs r1, 0
- bl CreateTask
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _08150218
- ldr r0, =sub_8150550
- b _0815021A
- .pool
-_08150218:
- ldr r0, =sub_8150664
-_0815021A:
- movs r1, 0x1
- bl CreateTask
- ldr r1, =gUnknown_0203ABAC
- ldr r1, [r1]
-_08150224:
- strb r0, [r1]
-_08150226:
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814FCC8
-
- thumb_func_start mainloop
-mainloop: @ 815023C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl MapMusicMain
- pop {r0}
- bx r0
- thumb_func_end mainloop
-
- thumb_func_start c2_8011A1C
-c2_8011A1C: @ 8150258
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r4, 0
- movs r0, 0
- bl HideBg
- movs r0, 0x1
- bl HideBg
- movs r0, 0x2
- bl HideBg
- movs r0, 0x3
- bl HideBg
- movs r0, 0
- bl sub_8150B6C
- ldr r0, =gSpriteCoordOffsetX
- strh r4, [r0]
- movs r0, 0
- bl sub_80AB130
- add r0, sp, 0x4
- mov r8, r0
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0xF0
- movs r2, 0
-_08150298:
- lsls r0, r4, 2
- adds r0, r1, r0
- str r2, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x13
- bls _08150298
- bl ResetTasks
- bl ResetSpriteData
- bl ResetPaletteFade
- movs r0, 0
- bl UnsetBgTilemapBuffer
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- movs r0, 0x2
- bl UnsetBgTilemapBuffer
- movs r0, 0x3
- bl UnsetBgTilemapBuffer
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r6, =gUnknown_0203ABAC
- ldr r0, [r6]
- ldr r2, =0x00004108
- adds r1, r0, r2
- movs r5, 0
- str r5, [r1]
- ldr r4, =0x0000410c
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r6]
- adds r4, r0, r4
- str r5, [r4]
- ldr r4, =0x00004104
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r6]
- adds r4, r0, r4
- str r5, [r4]
- movs r4, 0x82
- lsls r4, 7
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r6]
- adds r4, r0, r4
- str r5, [r4]
- ldr r4, =0x000040fc
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r6]
- adds r4, r0, r4
- str r5, [r4]
- bl Free
- str r5, [r6]
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- ldr r1, =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_08150340:
- 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 _08150340
- 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]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r2, =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]
- bl WarpIntoMap
- ldr r0, =gFieldCallback
- str r4, [r0]
- ldr r0, =CB2_LoadMap
- bl SetMainCallback2
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_8011A1C
-
- thumb_func_start sub_81503E4
-sub_81503E4: @ 81503E4
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- ldr r5, =gUnknown_0203ABAC
- ldr r3, [r5]
- ldrh r0, [r3, 0x6]
- adds r0, 0x1
- strh r0, [r3, 0x6]
- ldrb r2, [r3, 0x1]
- adds r7, r5, 0
- cmp r2, 0x2
- beq _081504EA
- cmp r2, 0x2
- bgt _08150414
- cmp r2, 0
- beq _08150422
- cmp r2, 0x1
- beq _0815043C
- b _08150542
- .pool
-_08150414:
- cmp r2, 0x3
- bne _0815041A
- b _08150510
-_0815041A:
- cmp r2, 0xFF
- bne _08150420
- b _08150528
-_08150420:
- b _08150542
-_08150422:
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r3, 0x4]
- cmp r0, r1
- beq _0815042E
- b _08150542
-_0815042E:
- ldrb r0, [r3, 0x2]
- bl weather_set
- ldr r1, [r5]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- b _08150542
-_0815043C:
- ldrb r0, [r3, 0x2]
- cmp r0, 0x2
- beq _08150490
- cmp r0, 0x7
- beq _08150448
- b _08150542
-_08150448:
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- adds r2, r0, 0
- adds r2, 0xF0
- ldr r0, [r2]
- cmp r0, 0
- beq _08150542
- ldrb r1, [r0, 0x5]
- movs r0, 0xC
- ands r0, r1
- cmp r0, 0
- beq _08150542
- adds r3, r2, 0
- movs r5, 0xD
- negs r5, r5
-_08150466:
- lsls r0, r4, 2
- adds r0, r3, r0
- ldr r2, [r0]
- cmp r2, 0
- beq _08150478
- ldrb r1, [r2, 0x5]
- adds r0, r5, 0
- ands r0, r1
- strb r0, [r2, 0x5]
-_08150478:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x13
- bls _08150466
- ldr r1, [r7]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- b _08150542
- .pool
-_08150490:
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- movs r1, 0xDA
- lsls r1, 3
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _081504A8
- strb r0, [r3, 0x1]
- b _08150542
- .pool
-_081504A8:
- ldrh r1, [r3, 0x6]
- ldrh r0, [r3, 0x4]
- adds r0, 0x8
- cmp r1, r0
- blt _08150542
- adds r6, r2, 0
- adds r6, 0xF0
- movs r5, 0x1
- movs r7, 0x5
- negs r7, r7
-_081504BC:
- lsls r0, r4, 2
- adds r0, r6, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _081504DE
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r1, r2, 29
- lsrs r1, 31
- eors r1, r5
- ands r1, r5
- lsls r1, 2
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_081504DE:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x13
- bls _081504BC
- b _08150542
-_081504EA:
- lsls r1, r0, 16
- ldr r0, =0x023a0000
- cmp r1, r0
- bne _08150542
- movs r0, 0x3
- strb r0, [r3, 0x1]
- subs r0, 0x4
- str r4, [sp]
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x4
- bl FadeOutBGM
- b _08150542
- .pool
-_08150510:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08150542
- movs r0, 0xFF
- strb r0, [r3, 0x1]
- b _08150542
- .pool
-_08150528:
- movs r0, 0
- bl SetVBlankCallback
- adds r0, r6, 0
- bl DestroyTask
- ldr r0, [r5]
- ldrb r0, [r0]
- bl DestroyTask
- ldr r0, =c2_8011A1C
- bl SetMainCallback2
-_08150542:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81503E4
-
- thumb_func_start sub_8150550
-sub_8150550: @ 8150550
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r6, =gUnknown_0203ABAC
- ldr r1, [r6]
- ldrb r0, [r1, 0x1]
- cmp r0, 0xFF
- beq _08150630
- ldrb r0, [r1, 0x14]
- subs r0, 0x1
- strb r0, [r1, 0x14]
- ldr r1, [r6]
- ldrh r0, [r1, 0x6]
- movs r3, 0x1
- ands r0, r3
- cmp r0, 0
- bne _08150576
- ldrb r0, [r1, 0x15]
- subs r0, 0x1
- strb r0, [r1, 0x15]
-_08150576:
- ldr r2, [r6]
- ldrh r0, [r2, 0x6]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _08150590
- ldrb r0, [r2, 0xC]
- subs r0, 0x1
- strb r0, [r2, 0xC]
- ldr r1, [r6]
- ldrb r0, [r1, 0xD]
- subs r0, 0x1
- strb r0, [r1, 0xD]
-_08150590:
- ldr r0, [r6]
- ldrb r1, [r0, 0x14]
- cmp r1, 0x20
- beq _081505DC
- cmp r1, 0x20
- bgt _081505A8
- cmp r1, 0x10
- beq _081505F4
- b _08150630
- .pool
-_081505A8:
- cmp r1, 0x28
- beq _081505CA
- cmp r1, 0xAF
- bne _08150630
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0xA
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- movs r3, 0x16
- bl FillBgTilemapBufferRect
- b _08150630
-_081505CA:
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0x3
- b _081505EC
-_081505DC:
- str r3, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0x2
-_081505EC:
- movs r3, 0
- bl FillBgTilemapBufferRect
- b _08150630
-_081505F4:
- ldr r1, =0x00004108
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x5
- str r0, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- movs r5, 0x11
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r0, [r6]
- ldr r1, =0x0000410c
- adds r0, r1
- ldr r1, [r0]
- str r4, [sp]
- movs r0, 0x1E
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r1, [r6]
- movs r0, 0x40
- strb r0, [r1, 0x15]
-_08150630:
- bl sub_815115C
- ldr r3, =gSpriteCoordOffsetX
- movs r0, 0
- ldrsh r2, [r3, r0]
- adds r1, r2, 0x1
- adds r0, r1, 0
- cmp r1, 0
- bge _08150646
- adds r0, r2, 0
- adds r0, 0x80
-_08150646:
- asrs r0, 7
- lsls r0, 7
- subs r0, r1, r0
- strh r0, [r3]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8150550
-
- thumb_func_start sub_8150664
-sub_8150664: @ 8150664
- push {r4-r7,lr}
- sub sp, 0xC
- ldr r7, =gUnknown_0203ABAC
- ldr r1, [r7]
- ldrb r0, [r1, 0x1]
- cmp r0, 0xFF
- bne _08150674
- b _081507B6
-_08150674:
- ldrb r0, [r1, 0x14]
- adds r0, 0x1
- strb r0, [r1, 0x14]
- ldr r1, [r7]
- ldrh r0, [r1, 0x6]
- movs r6, 0x1
- ands r0, r6
- cmp r0, 0
- bne _0815068C
- ldrb r0, [r1, 0x15]
- adds r0, 0x1
- strb r0, [r1, 0x15]
-_0815068C:
- ldr r2, [r7]
- ldrh r0, [r2, 0x6]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _081506A6
- ldrb r0, [r2, 0xC]
- adds r0, 0x1
- strb r0, [r2, 0xC]
- ldr r1, [r7]
- ldrb r0, [r1, 0xD]
- adds r0, 0x1
- strb r0, [r1, 0xD]
-_081506A6:
- ldr r0, [r7]
- ldrb r1, [r0, 0x14]
- cmp r1, 0x20
- beq _0815071A
- cmp r1, 0x20
- bgt _081506BC
- cmp r1, 0x10
- beq _081506E8
- b _081507B6
- .pool
-_081506BC:
- cmp r1, 0x28
- beq _08150784
- cmp r1, 0xB0
- bne _081507B6
- ldr r1, =0x0000410c
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x1E
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CopyToBgTilemapBufferRect_ChangePalette
- b _081507B6
- .pool
-_081506E8:
- movs r0, 0x3
- str r0, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- movs r5, 0x11
- str r5, [sp, 0x8]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- movs r0, 0xA
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- movs r3, 0x16
- bl FillBgTilemapBufferRect
- ldr r1, [r7]
- movs r0, 0xC0
- strb r0, [r1, 0x15]
- b _081507B6
-_0815071A:
- ldr r5, =0x00004108
- adds r0, r5
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- str r6, [sp]
- str r6, [sp, 0x4]
- movs r4, 0x11
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x2
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r0, [r7]
- adds r0, r5
- ldr r0, [r0]
- ldrh r1, [r0, 0x6]
- str r6, [sp]
- str r6, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x3
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r0, [r7]
- adds r0, r5
- ldr r0, [r0]
- ldrh r1, [r0, 0xE]
- str r6, [sp]
- str r6, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x2
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r0, [r7]
- adds r0, r5
- ldr r0, [r0]
- ldrh r1, [r0, 0x10]
- str r6, [sp]
- str r6, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x3
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- b _081507B6
- .pool
-_08150784:
- ldr r5, =0x00004108
- adds r0, r5
- ldr r0, [r0]
- ldrh r1, [r0, 0x8]
- str r6, [sp]
- str r6, [sp, 0x4]
- movs r4, 0x11
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x4
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r0, [r7]
- adds r0, r5
- ldr r0, [r0]
- ldrh r1, [r0, 0x12]
- str r6, [sp]
- str r6, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x4
- movs r3, 0x1
- bl FillBgTilemapBufferRect
-_081507B6:
- bl sub_81511B8
- ldr r0, =gUnknown_0203ABAC
- ldr r1, [r0]
- ldrh r0, [r1, 0x6]
- ldrh r1, [r1, 0x4]
- cmp r0, r1
- bcs _081507DC
- ldr r4, =gSpriteCoordOffsetX
- movs r1, 0
- ldrsh r0, [r4, r1]
- b _081507E6
- .pool
-_081507DC:
- ldr r0, =gUnknown_0854C14C
- ldr r4, [r0]
- ldr r0, =0x000006fc
- adds r4, r0
- ldrh r0, [r4]
-_081507E6:
- adds r0, 0xF7
- movs r1, 0xF8
- bl __modsi3
- strh r0, [r4]
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8150664
-
- thumb_func_start sub_8150800
-sub_8150800: @ 8150800
- push {r4,lr}
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- ldr r4, =gUnknown_0203ABAC
- ldr r0, [r4]
- ldrb r1, [r0, 0x14]
- movs r0, 0x1C
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0x15]
- movs r0, 0x1E
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0xC]
- movs r0, 0x14
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0xD]
- movs r0, 0x16
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0x8]
- movs r0, 0x10
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0x9]
- movs r0, 0x12
- bl SetGpuReg
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8150800
-
- thumb_func_start nullsub_58
-nullsub_58: @ 8150864
- bx lr
- thumb_func_end nullsub_58
-
- thumb_func_start sub_8150868
-sub_8150868: @ 8150868
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, =gUnknown_0203ABAC
- ldr r6, [r0]
- ldrb r0, [r6, 0x1]
- cmp r0, 0xFF
- beq _08150934
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _081508E4
- movs r0, 0x6
- ldrsh r4, [r6, r0]
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _08150892
- ldr r1, =0x47800000
- bl __addsf3
-_08150892:
- ldr r1, =0x3e0f5c29
- bl __mulsf3
- bl __fixunssfsi
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x2E]
- subs r1, r0
- strh r1, [r5, 0x20]
- movs r1, 0x6
- ldrsh r4, [r6, r1]
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _081508BA
- ldr r1, =0x47800000
- bl __addsf3
-_081508BA:
- ldr r1, =0x3d89374c
- bl __mulsf3
- bl __fixunssfsi
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x30]
- subs r1, r0
- strh r1, [r5, 0x22]
- b _08150934
- .pool
-_081508E4:
- movs r0, 0x6
- ldrsh r4, [r6, r0]
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _081508F8
- ldr r1, =0x47800000
- bl __addsf3
-_081508F8:
- ldr r1, =0x3e0f5c29
- bl __mulsf3
- bl __fixunssfsi
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x2E]
- adds r0, r1
- strh r0, [r5, 0x20]
- movs r0, 0x6
- ldrsh r4, [r6, r0]
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _08150920
- ldr r1, =0x47800000
- bl __addsf3
-_08150920:
- ldr r1, =0x3d89374c
- bl __mulsf3
- bl __fixunssfsi
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x22]
-_08150934:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8150868
-
- thumb_func_start sub_8150948
-sub_8150948: @ 8150948
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, =gUnknown_0203ABAC
- ldr r6, [r0]
- ldrb r0, [r6, 0x1]
- cmp r0, 0xFF
- bne _08150958
- b _08150A60
-_08150958:
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _081509C8
- movs r0, 0x6
- ldrsh r4, [r6, r0]
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _08150974
- ldr r1, =0x47800000
- bl __addsf3
-_08150974:
- ldr r1, =0x3e0f5c29
- bl __mulsf3
- bl __fixunssfsi
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x2E]
- subs r1, r0
- strh r1, [r5, 0x20]
- movs r1, 0x6
- ldrsh r4, [r6, r1]
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _0815099C
- ldr r1, =0x47800000
- bl __addsf3
-_0815099C:
- ldr r1, =0x3d89374c
- bl __mulsf3
- bl __fixunssfsi
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x30]
- subs r1, r0
- strh r1, [r5, 0x22]
- b _08150A18
- .pool
-_081509C8:
- movs r0, 0x6
- ldrsh r4, [r6, r0]
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _081509DC
- ldr r1, =0x47800000
- bl __addsf3
-_081509DC:
- ldr r1, =0x3e0f5c29
- bl __mulsf3
- bl __fixunssfsi
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x2E]
- adds r0, r1
- strh r0, [r5, 0x20]
- movs r0, 0x6
- ldrsh r4, [r6, r0]
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _08150A04
- ldr r1, =0x47800000
- bl __addsf3
-_08150A04:
- ldr r1, =0x3d89374c
- bl __mulsf3
- bl __fixunssfsi
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x22]
-_08150A18:
- movs r0, 0x32
- ldrsh r2, [r5, r0]
- cmp r2, 0
- bne _08150A48
- movs r0, 0x11
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x34]
- adds r1, r0, 0x1
- strh r1, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _08150A60
- strh r2, [r5, 0x34]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- b _08150A60
- .pool
-_08150A48:
- movs r2, 0
- movs r0, 0x10
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x34]
- adds r1, r0, 0x1
- strh r1, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _08150A60
- strh r2, [r5, 0x34]
- strh r2, [r5, 0x32]
-_08150A60:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8150948
-
- thumb_func_start sub_8150A68
-sub_8150A68: @ 8150A68
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _08150A98
- adds r0, r2, 0
- adds r0, 0x28
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r3, [r2, 0x20]
- adds r0, r3
- strh r0, [r2, 0x20]
- ldrh r1, [r2, 0x22]
- adds r1, 0x10
- adds r0, r2, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- strh r0, [r2, 0x22]
-_08150A98:
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x32
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _08150AEE
- movs r0, 0x30
- ldrsh r1, [r2, r0]
- cmp r1, 0
- beq _08150AB8
- cmp r1, 0x1
- beq _08150AC2
- b _08150AE0
-_08150AB8:
- ldrh r0, [r2, 0x20]
- adds r0, 0x1
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x2E]
- b _08150AD2
-_08150AC2:
- ldrh r0, [r2, 0x2E]
- ands r0, r1
- cmp r0, 0
- beq _08150AE0
- ldrh r0, [r2, 0x20]
- adds r0, 0x1
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x20]
-_08150AD2:
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08150AE0
- ldrh r0, [r2, 0x22]
- adds r0, 0x1
- strh r0, [r2, 0x22]
-_08150AE0:
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- cmp r0, 0xA0
- ble _08150AEE
- adds r0, r2, 0
- bl DestroySprite
-_08150AEE:
- pop {r0}
- bx r0
- thumb_func_end sub_8150A68
-
- thumb_func_start sub_8150AF4
-sub_8150AF4: @ 8150AF4
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _08150B12
- ldrh r1, [r2, 0x22]
- adds r1, 0x10
- adds r0, r2, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- strh r0, [r2, 0x22]
-_08150B12:
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x32
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _08150B68
- movs r0, 0x30
- ldrsh r1, [r2, r0]
- cmp r1, 0
- beq _08150B32
- cmp r1, 0x1
- beq _08150B3C
- b _08150B5A
-_08150B32:
- ldrh r0, [r2, 0x20]
- subs r0, 0x1
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x2E]
- b _08150B4C
-_08150B3C:
- ldrh r0, [r2, 0x2E]
- ands r0, r1
- cmp r0, 0
- beq _08150B5A
- ldrh r0, [r2, 0x20]
- subs r0, 0x1
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x20]
-_08150B4C:
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08150B5A
- ldrh r0, [r2, 0x22]
- subs r0, 0x1
- strh r0, [r2, 0x22]
-_08150B5A:
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- cmp r0, 0x4F
- bgt _08150B68
- adds r0, r2, 0
- bl DestroySprite
-_08150B68:
- pop {r0}
- bx r0
- thumb_func_end sub_8150AF4
-
- thumb_func_start sub_8150B6C
-sub_8150B6C: @ 8150B6C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08150B7A
- cmp r0, 0x1
- beq _08150C1C
-_08150B7A:
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x42
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x46
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xE
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- b _08150D1C
-_08150C1C:
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x42
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x46
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gSpecialVar_0x8004
- ldrh r3, [r0]
- cmp r3, 0
- bne _08150C74
- ldr r1, =gUnknown_0203ABAC
- ldr r2, [r1]
- movs r0, 0xB0
- strb r0, [r2, 0x14]
- ldr r2, [r1]
- movs r0, 0x10
- strb r0, [r2, 0x15]
- ldr r0, [r1]
- strb r3, [r0, 0xC]
- ldr r2, [r1]
- movs r0, 0x50
- b _08150C8C
- .pool
-_08150C74:
- ldr r1, =gUnknown_0203ABAC
- ldr r2, [r1]
- movs r3, 0
- movs r0, 0x60
- strb r0, [r2, 0x14]
- ldr r2, [r1]
- movs r0, 0xE8
- strb r0, [r2, 0x15]
- ldr r0, [r1]
- strb r3, [r0, 0xC]
- ldr r2, [r1]
- movs r0, 0x4
-_08150C8C:
- strb r0, [r2, 0xD]
- ldr r0, [r1]
- strb r3, [r0, 0x9]
- ldr r0, [r1]
- strb r3, [r0, 0x9]
- adds r4, r1, 0
- ldr r0, [r4]
- ldrb r1, [r0, 0x14]
- movs r0, 0x1C
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0x15]
- movs r0, 0x1E
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0xC]
- movs r0, 0x14
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0xD]
- movs r0, 0x16
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0x8]
- movs r0, 0x10
- bl SetGpuReg
- ldr r0, [r4]
- ldrb r1, [r0, 0x9]
- movs r0, 0x12
- bl SetGpuReg
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r1, 0xFC
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
-_08150D1C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8150B6C
-
- thumb_func_start sub_8150D28
-sub_8150D28: @ 8150D28
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- ldr r1, =gCableCarPlayerGraphicsIDs
- add r0, sp, 0xC
- movs r2, 0x2
- bl memcpy
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- add r6, sp, 0x10
- ldr r1, =gMtChimneyHikerGraphicsIDs
- adds r0, r6, 0
- movs r2, 0x4
- bl memcpy
- add r5, sp, 0x14
- ldr r1, =gMtChimneyHikerCoords
- adds r0, r5, 0
- movs r2, 0x8
- bl memcpy
- add r4, sp, 0x1C
- ldr r1, =gMtChimneyHikerMovementDelayTable
- adds r0, r4, 0
- movs r2, 0x4
- bl memcpy
- ldr r0, =gUnknown_085CDBF8
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x20]
- str r1, [sp, 0x24]
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- mov r8, r6
- mov r10, r5
- cmp r0, 0
- beq _08150D86
- cmp r0, 0x1
- beq _08150E68
-_08150D86:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- add r0, sp
- adds r0, 0xC
- ldrb r0, [r0]
- ldr r1, =sub_8150948
- movs r2, 0x66
- str r2, [sp]
- movs r2, 0xC8
- movs r3, 0x49
- bl AddPseudoEventObject
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _08150DD0
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r2, 0x8
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r0, 0x8
- strh r0, [r1, 0x24]
- movs r0, 0x10
- strh r0, [r1, 0x26]
- movs r0, 0xC8
- strh r0, [r1, 0x2E]
- movs r0, 0x49
- strh r0, [r1, 0x30]
-_08150DD0:
- ldr r4, =gSpriteTemplate_85CDB9C
- adds r0, r4, 0
- movs r1, 0xB0
- movs r2, 0x2B
- movs r3, 0x67
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r5
- movs r1, 0x20
- strh r1, [r0, 0x26]
- strh r1, [r0, 0x24]
- movs r1, 0xB0
- strh r1, [r0, 0x2E]
- movs r1, 0x2B
- strh r1, [r0, 0x30]
- adds r4, 0x18
- adds r0, r4, 0
- movs r1, 0xC8
- movs r2, 0x63
- movs r3, 0x65
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r5
- movs r1, 0x8
- strh r1, [r0, 0x24]
- movs r1, 0x4
- strh r1, [r0, 0x26]
- movs r1, 0xC8
- strh r1, [r0, 0x2E]
- movs r1, 0x63
- strh r1, [r0, 0x30]
- ldr r2, =gUnknown_0203ABAC
- ldr r1, [r2]
- movs r0, 0x7
- strb r0, [r1, 0x2]
- ldr r1, [r2]
- movs r0, 0xAF
- lsls r0, 1
- strh r0, [r1, 0x4]
- movs r0, 0x2
- bl sub_80AB130
- b _08150F3A
- .pool
-_08150E68:
- ldr r7, =gUnknown_0203ABAC
- ldr r0, [r7]
- ldr r1, =0x000040fc
- adds r0, r1
- ldr r1, [r0]
- adds r1, 0x48
- movs r0, 0xC
- str r0, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r2, 0x18
- movs r3, 0x1A
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- add r0, sp
- adds r0, 0xC
- ldrb r0, [r0]
- ldr r1, =sub_8150948
- movs r2, 0x66
- str r2, [sp]
- movs r2, 0x80
- movs r3, 0x27
- bl AddPseudoEventObject
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _08150ED4
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r2, 0x8
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r0, 0x8
- strh r0, [r1, 0x24]
- movs r0, 0x10
- strh r0, [r1, 0x26]
- movs r0, 0x80
- strh r0, [r1, 0x2E]
- movs r0, 0x27
- strh r0, [r1, 0x30]
-_08150ED4:
- ldr r4, =gSpriteTemplate_85CDB9C
- adds r0, r4, 0
- movs r1, 0x68
- movs r2, 0x9
- movs r3, 0x67
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r5
- movs r1, 0x20
- strh r1, [r0, 0x26]
- strh r1, [r0, 0x24]
- movs r1, 0x68
- strh r1, [r0, 0x2E]
- movs r1, 0x9
- strh r1, [r0, 0x30]
- adds r4, 0x18
- adds r0, r4, 0
- movs r1, 0x80
- movs r2, 0x41
- movs r3, 0x65
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r5
- movs r1, 0x8
- strh r1, [r0, 0x24]
- movs r1, 0x4
- strh r1, [r0, 0x26]
- movs r1, 0x80
- strh r1, [r0, 0x2E]
- movs r1, 0x41
- strh r1, [r0, 0x30]
- ldr r1, [r7]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- ldr r1, [r7]
- ldr r0, =0x00000109
- strh r0, [r1, 0x4]
- movs r0, 0x7
- bl sub_80AB130
-_08150F3A:
- movs r4, 0
- ldr r5, =gSprites
-_08150F3E:
- lsls r1, r4, 20
- movs r2, 0xC0
- lsls r2, 15
- adds r1, r2
- asrs r1, 16
- lsls r2, r4, 19
- ldr r3, =0xfff80000
- adds r2, r3
- asrs r2, 16
- ldr r0, =gSpriteTemplate_85CDBCC
- movs r3, 0x68
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r5
- movs r1, 0x8
- strh r1, [r0, 0x24]
- strh r1, [r0, 0x26]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8
- bls _08150F3E
- movs r0, 0x3F
- mov r4, r9
- ands r0, r4
- cmp r0, 0
- bne _08151074
- mov r0, r9
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- add r0, r8
- ldrb r0, [r0]
- ldr r5, =gSpecialVar_0x8004
- ldrh r4, [r5]
- lsls r4, 2
- add r1, sp, 0x20
- adds r1, r4, r1
- ldr r1, [r1]
- mov r3, r10
- adds r2, r3, r4
- movs r3, 0
- ldrsh r2, [r2, r3]
- mov r3, sp
- adds r3, 0x16
- adds r3, r4
- movs r4, 0
- ldrsh r3, [r3, r4]
- movs r4, 0x6A
- str r4, [sp]
- bl AddPseudoEventObject
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _08151074
- ldr r1, =gSprites
- lsls r2, r6, 4
- adds r0, r2, r6
- lsls r0, 2
- adds r4, r0, r1
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r4, 0x5]
- adds r0, r4, 0
- adds r0, 0x28
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x24]
- adds r0, r4, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r0, [r5]
- mov r8, r2
- cmp r0, 0
- bne _08151036
- movs r7, 0x1
- mov r5, r9
- ands r5, r7
- cmp r5, 0
- beq _08151030
- adds r0, r4, 0
- movs r1, 0x6
- b _08151044
- .pool
-_08151030:
- adds r0, r4, 0
- movs r1, 0x7
- b _08151056
-_08151036:
- movs r7, 0x1
- mov r5, r9
- ands r5, r7
- cmp r5, 0
- beq _08151052
- adds r0, r4, 0
- movs r1, 0x7
-_08151044:
- bl StartSpriteAnim
- strh r7, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- adds r0, 0x2
- strh r0, [r4, 0x22]
- b _0815105C
-_08151052:
- adds r0, r4, 0
- movs r1, 0x6
-_08151056:
- bl StartSpriteAnim
- strh r5, [r4, 0x30]
-_0815105C:
- ldr r0, =gSprites
- mov r2, r8
- adds r1, r2, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x3
- mov r3, r9
- ands r0, r3
- add r0, sp
- adds r0, 0x1C
- ldrb r0, [r0]
- strh r0, [r1, 0x32]
-_08151074:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8150D28
-
- thumb_func_start sub_8151088
-sub_8151088: @ 8151088
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r3, 0
- mov r9, r3
- ldr r2, =gUnknown_0203ABAC
- ldr r0, [r2]
- ldrb r1, [r0, 0x1B]
- adds r1, 0x2
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 26
- lsrs r0, 24
- mov r12, r0
-_081510AA:
- movs r7, 0
- lsls r0, r3, 1
- adds r1, r3, 0x3
- adds r2, r3, 0x6
- adds r4, r3, 0x1
- str r4, [sp, 0x4]
- adds r0, r3
- lsls r0, 3
- str r0, [sp]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- mov r10, r0
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- mov r8, r0
-_081510CC:
- ldr r0, =gUnknown_0203ABAC
- ldr r6, [r0]
- lsls r3, r7, 1
- ldr r1, [sp]
- adds r2, r3, r1
- adds r4, r6, 0
- adds r4, 0x22
- adds r2, r4, r2
- mov r1, r12
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- ldr r0, =0x000040fc
- adds r5, r6, r0
- ldr r0, [r5]
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
- strh r0, [r2]
- mov r1, r10
- adds r2, r3, r1
- adds r2, r4, r2
- str r2, [sp, 0x8]
- ldr r0, [r5]
- mov r2, r9
- lsls r1, r2, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldr r2, [sp, 0x8]
- strh r0, [r2]
- add r3, r8
- adds r4, r3
- ldr r0, [r5]
- adds r1, r0
- adds r1, 0x48
- ldrh r0, [r1]
- strh r0, [r4]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xB
- bls _081510CC
- ldr r4, [sp, 0x4]
- lsls r0, r4, 24
- lsrs r3, r0, 24
- cmp r3, 0x2
- bls _081510AA
- ldrb r0, [r6, 0x1B]
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- strb r0, [r6, 0x1B]
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8151088
-
- thumb_func_start sub_815115C
-sub_815115C: @ 815115C
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203ABAC
- ldr r4, [r5]
- ldrb r0, [r4, 0x1C]
- adds r0, 0x1
- movs r1, 0x60
- bl __modsi3
- strb r0, [r4, 0x1C]
- ldr r1, [r5]
- ldrb r0, [r1, 0x1F]
- ldrb r2, [r1, 0x1D]
- subs r0, r2
- strb r0, [r1, 0x8]
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x20
- ldrb r0, [r0]
- ldrb r1, [r2, 0x1E]
- subs r0, r1
- strb r0, [r2, 0x9]
- ldr r1, [r5]
- ldrb r0, [r1, 0x1D]
- adds r0, 0x1
- strb r0, [r1, 0x1D]
- ldr r2, [r5]
- ldrb r0, [r2, 0x1D]
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081511A0
- ldrb r0, [r2, 0x1E]
- adds r0, 0x1
- strb r0, [r2, 0x1E]
-_081511A0:
- ldr r0, [r5]
- ldrb r0, [r0, 0x1D]
- cmp r0, 0x10
- bls _081511AC
- bl sub_8151214
-_081511AC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_815115C
-
- thumb_func_start sub_81511B8
-sub_81511B8: @ 81511B8
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203ABAC
- ldr r4, [r5]
- ldrb r0, [r4, 0x1C]
- adds r0, 0x1
- movs r1, 0x60
- bl __modsi3
- strb r0, [r4, 0x1C]
- ldr r1, [r5]
- ldrb r0, [r1, 0x1D]
- ldrb r2, [r1, 0x1F]
- adds r0, r2
- strb r0, [r1, 0x8]
- ldr r1, [r5]
- adds r2, r1, 0
- adds r2, 0x20
- ldrb r0, [r1, 0x1E]
- ldrb r2, [r2]
- adds r0, r2
- strb r0, [r1, 0x9]
- ldr r1, [r5]
- ldrb r0, [r1, 0x1D]
- adds r0, 0x1
- strb r0, [r1, 0x1D]
- ldr r2, [r5]
- ldrb r0, [r2, 0x1D]
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081511FC
- ldrb r0, [r2, 0x1E]
- adds r0, 0x1
- strb r0, [r2, 0x1E]
-_081511FC:
- ldr r0, [r5]
- ldrb r0, [r0, 0x1D]
- cmp r0, 0x10
- bls _08151208
- bl sub_8151388
-_08151208:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81511B8
-
- thumb_func_start sub_8151214
-sub_8151214: @ 8151214
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r7, 0
- ldr r3, =gUnknown_0203ABAC
- ldr r0, [r3]
- strb r7, [r0, 0x1E]
- strb r7, [r0, 0x1D]
- ldr r1, [r3]
- ldrb r0, [r1, 0x8]
- strb r0, [r1, 0x1F]
- ldr r0, [r3]
- ldrb r1, [r0, 0x9]
- adds r0, 0x20
- strb r1, [r0]
- ldr r4, [r3]
- ldrb r1, [r4, 0x19]
- adds r2, r1, 0
- adds r2, 0x1E
- adds r0, r2, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r2, r0
- strb r0, [r4, 0x19]
- ldr r1, [r3]
- ldrb r0, [r1, 0x18]
- subs r0, 0x2
- strb r0, [r1, 0x18]
- ldr r4, =gUnknown_0203ABB2
- ldr r0, [r3]
- ldrb r1, [r0, 0x1A]
- adds r2, r1, 0
- adds r2, 0x17
- adds r0, r2, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r2, r0
- strb r0, [r4]
- ldr r6, =gUnknown_0203ABB0
- mov r9, r3
- ldr r0, =gUnknown_0203ABB1
- mov r8, r0
-_0815126E:
- mov r1, r9
- ldr r2, [r1]
- ldrb r0, [r2, 0x19]
- strb r0, [r6]
- ldr r0, =gUnknown_0203ABB2
- ldrb r0, [r0]
- adds r1, r0, r7
- adds r0, r1, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r1, r0
- mov r1, r8
- strb r0, [r1]
- ldrb r1, [r2, 0x18]
- lsls r1, 1
- lsls r0, r7, 1
- adds r0, r7
- lsls r5, r0, 3
- adds r1, r5
- adds r0, r2, 0
- adds r0, 0x22
- adds r0, r1
- ldrh r1, [r0]
- ldrb r2, [r6]
- mov r0, r8
- ldrb r3, [r0]
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x11
- mov r10, r0
- str r0, [sp, 0x8]
- movs r0, 0
- bl FillBgTilemapBufferRect
- ldrb r1, [r6]
- adds r2, r1, 0x1
- adds r0, r2, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r2, r0
- strb r0, [r6]
- mov r0, r9
- ldr r1, [r0]
- ldrb r0, [r1, 0x18]
- adds r0, 0x1
- lsls r0, 1
- adds r0, r5
- adds r1, 0x22
- adds r1, r0
- ldrh r1, [r1]
- ldrb r2, [r6]
- mov r0, r8
- ldrb r3, [r0]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r0, r10
- str r0, [sp, 0x8]
- movs r0, 0
- bl FillBgTilemapBufferRect
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x8
- bls _0815126E
- ldr r5, =gUnknown_0203ABB0
- ldr r4, =gUnknown_0203ABAC
- ldr r0, [r4]
- ldrb r1, [r0, 0x19]
- adds r2, r1, 0
- adds r2, 0x1E
- adds r0, r2, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r2, r0
- strb r0, [r5]
- ldrb r2, [r5]
- movs r0, 0x2
- str r0, [sp]
- movs r6, 0x20
- str r6, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r1, [r4]
- ldrb r0, [r1, 0x18]
- cmp r0, 0
- bne _08151368
- ldrb r2, [r1, 0x1A]
- adds r3, r2, 0
- adds r3, 0x1D
- adds r0, r3, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r3, r0
- strb r0, [r1, 0x1A]
- ldr r1, [r4]
- movs r0, 0xC
- strb r0, [r1, 0x18]
- bl sub_8151088
- ldr r0, [r4]
- ldrb r1, [r0, 0x1A]
- adds r2, r1, 0x1
- adds r0, r2, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r2, r0
- strb r0, [r5]
- ldrb r3, [r5]
- str r6, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- mov r1, r10
- str r1, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl FillBgTilemapBufferRect
-_08151368:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8151214
-
- thumb_func_start sub_8151388
-sub_8151388: @ 8151388
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r7, 0
- ldr r2, =gUnknown_0203ABAC
- ldr r0, [r2]
- strb r7, [r0, 0x1E]
- strb r7, [r0, 0x1D]
- ldr r1, [r2]
- ldrb r0, [r1, 0x8]
- strb r0, [r1, 0x1F]
- ldr r0, [r2]
- ldrb r1, [r0, 0x9]
- adds r0, 0x20
- strb r1, [r0]
- ldr r4, [r2]
- ldrb r1, [r4, 0x19]
- adds r3, r1, 0x2
- adds r0, r3, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r3, r0
- strb r0, [r4, 0x19]
- ldr r1, [r2]
- ldrb r0, [r1, 0x18]
- adds r0, 0x2
- strb r0, [r1, 0x18]
- ldr r1, =gUnknown_0203ABB5
- ldr r0, [r2]
- ldrb r0, [r0, 0x1A]
- strb r0, [r1]
- ldr r6, =gUnknown_0203ABB3
- mov r10, r2
- ldr r0, =gUnknown_0203ABB4
- mov r9, r0
-_081513D4:
- mov r1, r10
- ldr r2, [r1]
- ldrb r0, [r2, 0x19]
- strb r0, [r6]
- ldr r0, =gUnknown_0203ABB5
- ldrb r0, [r0]
- adds r1, r0, r7
- adds r0, r1, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r1, r0
- mov r1, r9
- strb r0, [r1]
- ldrb r1, [r2, 0x18]
- lsls r1, 1
- lsls r0, r7, 1
- adds r0, r7
- lsls r5, r0, 3
- adds r1, r5
- adds r0, r2, 0
- adds r0, 0x22
- adds r0, r1
- ldrh r1, [r0]
- ldrb r2, [r6]
- mov r0, r9
- ldrb r3, [r0]
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x11
- mov r8, r0
- str r0, [sp, 0x8]
- movs r0, 0
- bl FillBgTilemapBufferRect
- ldrb r1, [r6]
- adds r2, r1, 0x1
- adds r0, r2, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r2, r0
- strb r0, [r6]
- mov r0, r10
- ldr r1, [r0]
- ldrb r0, [r1, 0x18]
- adds r0, 0x1
- lsls r0, 1
- adds r0, r5
- adds r1, 0x22
- adds r1, r0
- ldrh r1, [r1]
- ldrb r2, [r6]
- mov r0, r9
- ldrb r3, [r0]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- movs r0, 0
- bl FillBgTilemapBufferRect
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x8
- bls _081513D4
- ldr r4, =gUnknown_0203ABB4
- ldr r5, =gUnknown_0203ABAC
- ldr r3, [r5]
- ldrb r1, [r3, 0x1A]
- adds r2, r1, 0
- adds r2, 0x17
- adds r0, r2, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r2, r0
- strb r0, [r4]
- ldrb r2, [r3, 0x19]
- ldrb r3, [r4]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- mov r1, r8
- str r1, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- bl FillBgTilemapBufferRect
- ldr r1, [r5]
- ldrb r0, [r1, 0x18]
- cmp r0, 0xA
- bne _081514A6
- ldrb r2, [r1, 0x1A]
- adds r3, r2, 0x3
- adds r0, r3, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r3, r0
- strb r0, [r1, 0x1A]
- ldr r1, [r5]
- movs r0, 0xFE
- strb r0, [r1, 0x18]
- bl sub_8151088
-_081514A6:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8151388
-
- thumb_func_start sub_81514C8
-sub_81514C8: @ 81514C8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081514D6
- cmp r0, 0x1
- beq _08151500
-_081514D6:
- ldr r1, =gUnknown_0203ABAC
- ldr r2, [r1]
- movs r3, 0
- movs r0, 0x2
- strb r0, [r2, 0x1B]
- ldr r0, [r1]
- strb r3, [r0, 0x19]
- ldr r2, [r1]
- movs r0, 0x14
- strb r0, [r2, 0x1A]
- ldr r1, [r1]
- movs r0, 0xC
- strb r0, [r1, 0x18]
- bl sub_8151088
- bl sub_8151214
- b _08151522
- .pool
-_08151500:
- ldr r1, =gUnknown_0203ABAC
- ldr r2, [r1]
- movs r0, 0x2
- strb r0, [r2, 0x1B]
- ldr r2, [r1]
- movs r0, 0x1C
- strb r0, [r2, 0x19]
- ldr r2, [r1]
- movs r0, 0x14
- strb r0, [r2, 0x1A]
- ldr r1, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x18]
- bl sub_8151088
- bl sub_8151388
-_08151522:
- ldr r0, =gUnknown_0203ABAC
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x1C]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81514C8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/contest_painting.s b/asm/contest_painting.s
deleted file mode 100644
index f7c146e3e..000000000
--- a/asm/contest_painting.s
+++ /dev/null
@@ -1,1197 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_812FDA8
-sub_812FDA8: @ 812FDA8
- push {r4-r7,lr}
- ldr r3, =gUnknown_02039F5D
- ldr r4, =gUnknown_02039F5C
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- subs r0, 0x1
- lsls r1, r0, 5
- adds r2, r1
- ldr r1, =gUnknown_02039F3C
- ldr r5, =0x00002e90
- adds r2, r5
- ldm r2!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r2!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r2!, {r6,r7}
- stm r1!, {r6,r7}
- strb r0, [r3]
- movs r0, 0
- strb r0, [r4]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812FDA8
-
- thumb_func_start sub_812FDEC
-sub_812FDEC: @ 812FDEC
- push {lr}
- bl sub_812FE58
- pop {r0}
- bx r0
- thumb_func_end sub_812FDEC
-
- thumb_func_start sub_812FDF8
-sub_812FDF8: @ 812FDF8
- push {lr}
- bl sub_812FFC8
- bl RunTextPrinters
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_812FDF8
-
- thumb_func_start sub_812FE0C
-sub_812FE0C: @ 812FE0C
- push {r4,r5,lr}
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
- ldr r4, =gUnknown_030061C4
- ldr r0, [r4]
- bl Free
- movs r5, 0
- str r5, [r4]
- ldr r4, =gUnknown_03006190
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r0, =gUnknown_030011F7
- ldrb r0, [r0]
- bl RemoveWindow
- movs r0, 0x1
- bl GetBgTilemapBuffer
- bl Free
- bl FreeMonSpritesGfx
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812FE0C
-
- thumb_func_start sub_812FE58
-sub_812FE58: @ 812FE58
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x4
- bls _0812FE6E
- b _0812FFA0
-_0812FE6E:
- lsls r0, 2
- ldr r1, =_0812FE80
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0812FE80:
- .4byte _0812FE94
- .4byte _0812FEC8
- .4byte _0812FF14
- .4byte _0812FF2A
- .4byte _0812FF54
-_0812FE94:
- bl ScanlineEffect_Stop
- movs r0, 0
- bl SetVBlankCallback
- bl AllocateMonSpritesGfx
- ldr r1, =gUnknown_030061C0
- ldr r0, =gUnknown_02039F3C
- str r0, [r1]
- movs r0, 0x1
- bl sub_8130238
- bl sub_81301EC
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _0812FF3E
- .pool
-_0812FEC8:
- bl ResetPaletteFade
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- movs r5, 0
- ldr r1, =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- ldr r6, =0x85000400
- movs r7, 0x85
- lsls r7, 24
-_0812FEE2:
- str r5, [sp]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _0812FEE2
- str r5, [sp]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetSpriteData
- b _0812FF36
- .pool
-_0812FF14:
- ldrh r0, [r4, 0x20]
- bl SeedRng
- bl InitKeys
- bl sub_8130098
- movs r0, 0x87
- lsls r0, 3
- adds r1, r4, r0
- b _0812FF3E
-_0812FF2A:
- ldr r0, =gUnknown_02039F5D
- ldrb r0, [r0]
- ldr r1, =gUnknown_02039F5C
- ldrb r1, [r1]
- bl sub_8130884
-_0812FF36:
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
-_0812FF3E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0812FFA0
- .pool
-_0812FF54:
- ldr r0, =gUnknown_02039F5D
- ldrb r0, [r0]
- ldr r1, =gUnknown_02039F5C
- ldrb r1, [r1]
- bl sub_813010C
- ldr r0, =gUnknown_085B0838
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- movs r1, 0xA0
- lsls r1, 19
- movs r4, 0
- str r4, [sp]
- ldr r0, =0x040000d4
- mov r2, sp
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, =0x85000100
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- movs r0, 0x2
- bl BeginFastPaletteFade
- ldr r0, =sub_81302D0
- bl SetVBlankCallback
- ldr r0, =gUnknown_030011F0
- strb r4, [r0]
- movs r1, 0x9A
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r0, =sub_812FDF8
- bl SetMainCallback2
-_0812FFA0:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812FE58
-
- thumb_func_start sub_812FFC8
-sub_812FFC8: @ 812FFC8
- push {lr}
- sub sp, 0x4
- ldr r3, =gUnknown_030011F0
- ldrb r1, [r3]
- cmp r1, 0x1
- beq _0813001C
- cmp r1, 0x1
- bgt _0812FFE4
- cmp r1, 0
- beq _0812FFEA
- b _08130082
- .pool
-_0812FFE4:
- cmp r1, 0x2
- beq _0813005C
- b _08130082
-_0812FFEA:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812FFFA
- movs r0, 0x1
- strb r0, [r3]
-_0812FFFA:
- ldr r0, =gUnknown_030011F6
- ldrb r0, [r0]
- cmp r0, 0
- beq _08130082
- ldr r1, =gUnknown_030011F4
- ldrh r0, [r1]
- cmp r0, 0
- beq _08130082
- subs r0, 0x1
- b _08130080
- .pool
-_0813001C:
- ldr r0, =gMain
- ldrh r2, [r0, 0x2E]
- ands r1, r2
- cmp r1, 0
- bne _0813002E
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _08130040
-_0813002E:
- movs r0, 0x2
- strb r0, [r3]
- subs r0, 0x3
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_08130040:
- ldr r0, =gUnknown_030011F6
- ldrb r0, [r0]
- cmp r0, 0
- beq _08130082
- ldr r1, =gUnknown_030011F4
- movs r0, 0
- b _08130080
- .pool
-_0813005C:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0813006E
- ldr r0, =sub_812FE0C
- bl SetMainCallback2
-_0813006E:
- ldr r0, =gUnknown_030011F6
- ldrb r0, [r0]
- cmp r0, 0
- beq _08130082
- ldr r1, =gUnknown_030011F4
- ldrh r0, [r1]
- cmp r0, 0x1D
- bhi _08130082
- adds r0, 0x1
-_08130080:
- strh r0, [r1]
-_08130082:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812FFC8
-
- thumb_func_start sub_8130098
-sub_8130098: @ 8130098
- push {r4,lr}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085B07E8
- movs r0, 0
- movs r2, 0x1
- bl InitBgsFromTemplates
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x80
- lsls r0, 4
- bl AllocZeroed
- adds r1, r0, 0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r4, =gUnknown_030011F7
- ldr r0, =gUnknown_085B07EC
- bl AddWindow
- strb r0, [r4]
- bl DeactivateAllTextPrinters
- ldrb r0, [r4]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x1
- bl ShowBg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130098
-
- thumb_func_start sub_813010C
-sub_813010C: @ 813010C
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _081301D4
- ldr r6, =gUnknown_030061C0
- ldr r1, [r6]
- ldrb r5, [r1, 0xA]
- cmp r0, 0x7
- bhi _08130190
- ldr r4, =gStringVar1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_818E868
- ldr r1, =gText_Space
- adds r0, r4, 0
- bl StringAppend
- ldr r1, =gContestRankTextPointers
- ldr r0, [r6]
- ldrb r0, [r0, 0x1E]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringAppend
- ldr r4, =gStringVar2
- ldr r1, [r6]
- adds r1, 0x16
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- bl sub_81DB5AC
- ldr r0, =gStringVar3
- ldr r1, [r6]
- adds r1, 0xB
- bl StringCopy
- ldr r0, =gStringVar4
- ldr r1, =gUnknown_0827EA0C
- bl StringExpandPlaceholders
- b _081301A6
- .pool
-_08130190:
- ldr r0, =gStringVar1
- adds r1, 0xB
- bl StringCopy
- ldr r0, =gStringVar4
- ldr r2, =gContestPaintingDescriptionPointers
- lsls r1, r5, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringExpandPlaceholders
-_081301A6:
- ldr r4, =gStringVar4
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0xD0
- bl GetStringCenterAlignXOffset
- adds r3, r0, 0
- ldr r0, =gUnknown_030011F7
- ldrb r0, [r0]
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- adds r2, r4, 0
- bl AddTextPrinterParameterized
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
-_081301D4:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_813010C
-
- thumb_func_start sub_81301EC
-sub_81301EC: @ 81301EC
- push {lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r2, =0x04000200
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- ldr r1, =0x00000c42
- movs r0, 0x8
- bl SetGpuReg
- ldr r1, =0x00000a45
- movs r0, 0xA
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81301EC
-
- thumb_func_start sub_8130238
-sub_8130238: @ 8130238
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0813025C
- ldr r0, =gUnknown_030011F6
- strb r1, [r0]
- ldr r0, =gUnknown_030011F2
- strh r1, [r0]
- ldr r0, =gUnknown_030011F4
- strh r1, [r0]
- b _0813026E
- .pool
-_0813025C:
- ldr r1, =gUnknown_030011F6
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, =gUnknown_030011F2
- movs r0, 0xF
- strh r0, [r1]
- ldr r1, =gUnknown_030011F4
- movs r0, 0x1E
- strh r0, [r1]
-_0813026E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130238
-
- thumb_func_start sub_8130280
-sub_8130280: @ 8130280
- push {lr}
- ldr r0, =gUnknown_030011F6
- ldrb r0, [r0]
- cmp r0, 0
- bne _08130298
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- b _081302C0
- .pool
-_08130298:
- ldr r1, =0x00000a45
- movs r0, 0xA
- bl SetGpuReg
- ldr r1, =gUnknown_030011F2
- ldr r0, =gUnknown_030011F4
- ldrh r0, [r0]
- lsrs r0, 1
- strh r0, [r1]
- lsls r1, r0, 12
- lsls r2, r0, 8
- orrs r1, r2
- lsls r2, r0, 4
- orrs r1, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4C
- bl SetGpuReg
-_081302C0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130280
-
- thumb_func_start sub_81302D0
-sub_81302D0: @ 81302D0
- push {lr}
- bl sub_8130280
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81302D0
-
- thumb_func_start sub_81302E8
-sub_81302E8: @ 81302E8
- push {r4-r7,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r4, 24
- lsrs r4, 24
- ldr r6, =gUnknown_030061C0
- ldr r0, [r6]
- ldr r1, [r0, 0x4]
- ldr r2, [r0]
- adds r0, r5, 0
- bl GetFrontSpritePalFromSpeciesAndPersonality
- ldr r7, =gUnknown_030061C4
- ldr r1, [r7]
- bl LZDecompressVram
- cmp r4, 0
- bne _08130348
- lsls r0, r5, 3
- ldr r1, =gMonFrontPicTable
- adds r0, r1
- ldr r4, =gMonSpritesGfxPtr
- ldr r1, [r4]
- ldr r1, [r1, 0x8]
- ldr r2, [r6]
- ldr r3, [r2]
- adds r2, r5, 0
- bl HandleLoadSpecialPokePic_DontHandleDeoxys
- ldr r0, [r4]
- ldr r0, [r0, 0x8]
- ldr r1, [r7]
- ldr r2, =gUnknown_03006190
- ldr r2, [r2]
- bl sub_8130380
- b _0813036C
- .pool
-_08130348:
- lsls r0, r5, 3
- ldr r1, =gMonBackPicTable
- adds r0, r1
- ldr r4, =gMonSpritesGfxPtr
- ldr r1, [r4]
- ldr r1, [r1, 0x4]
- ldr r2, [r6]
- ldr r3, [r2]
- adds r2, r5, 0
- bl HandleLoadSpecialPokePic_DontHandleDeoxys
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- ldr r1, [r7]
- ldr r2, =gUnknown_03006190
- ldr r2, [r2]
- bl sub_8130380
-_0813036C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81302E8
-
- thumb_func_start sub_8130380
-sub_8130380: @ 8130380
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r10, r0
- mov r9, r1
- str r2, [sp]
- movs r0, 0
-_08130394:
- movs r3, 0
- adds r1, r0, 0x1
- str r1, [sp, 0x4]
- lsls r0, 3
- str r0, [sp, 0x8]
-_0813039E:
- movs r1, 0
- adds r2, r3, 0x1
- mov r8, r2
- ldr r7, [sp, 0x8]
- adds r0, r7, r3
- lsls r0, 5
- mov r12, r0
- lsls r4, r3, 3
-_081303AE:
- movs r3, 0
- lsls r0, r1, 2
- adds r6, r1, 0x1
- mov r2, r12
- adds r5, r2, r0
- ldr r7, [sp, 0x8]
- adds r0, r7, r1
- lsls r0, 7
- ldr r1, [sp]
- adds r2, r0, r1
-_081303C2:
- lsrs r0, r3, 1
- adds r0, r5, r0
- add r0, r10
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _081303D6
- lsrs r1, 4
- b _081303DA
-_081303D6:
- movs r0, 0xF
- ands r1, r0
-_081303DA:
- cmp r1, 0
- bne _081303EC
- adds r0, r4, r3
- lsls r0, 1
- adds r0, r2
- movs r7, 0x80
- lsls r7, 8
- adds r1, r7, 0
- b _081303F8
-_081303EC:
- adds r0, r4, r3
- lsls r0, 1
- adds r0, r2
- lsls r1, 1
- add r1, r9
- ldrh r1, [r1]
-_081303F8:
- strh r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x7
- bls _081303C2
- lsls r0, r6, 16
- lsrs r1, r0, 16
- cmp r1, 0x7
- bls _081303AE
- mov r1, r8
- lsls r0, r1, 16
- lsrs r3, r0, 16
- cmp r3, 0x7
- bls _0813039E
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- lsrs r0, 16
- cmp r0, 0x7
- bls _08130394
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8130380
-
- thumb_func_start sub_8130430
-sub_8130430: @ 8130430
- push {r4-r7,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_085A989C
- movs r2, 0x80
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- cmp r4, 0x1
- beq _0813044E
- b _081305A4
-_0813044E:
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _0813050C
- lsls r0, 2
- ldr r1, =_08130478
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08130478:
- .4byte _0813048C
- .4byte _081304A4
- .4byte _081304BC
- .4byte _081304D4
- .4byte _081304F8
-_0813048C:
- ldr r0, =gUnknown_085A9A9C
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AE974
- b _081304E0
- .pool
-_081304A4:
- ldr r0, =gUnknown_085AAB20
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AEE80
- b _081304E0
- .pool
-_081304BC:
- ldr r0, =gUnknown_085AB750
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AF38C
- b _081304E0
- .pool
-_081304D4:
- ldr r0, =gUnknown_085AC288
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AF898
-_081304E0:
- ldr r1, =gUnknown_03006190
- ldr r1, [r1]
- bl RLUnCompWram
- b _0813050C
- .pool
-_081304F8:
- ldr r0, =gUnknown_085AD240
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AFDA4
- ldr r1, =gUnknown_03006190
- ldr r1, [r1]
- bl RLUnCompWram
-_0813050C:
- movs r1, 0
- ldr r5, =0x06006000
- ldr r0, =0x00001015
- adds r4, r0, 0
-_08130514:
- movs r3, 0
- lsls r2, r1, 5
-_08130518:
- adds r0, r2, r3
- lsls r0, 1
- adds r0, r5
- strh r4, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1F
- bls _08130518
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x13
- bls _08130514
- movs r1, 0
- ldr r0, =0x0600608c
- mov r12, r0
- ldr r7, =gUnknown_03006190
-_0813053C:
- movs r3, 0
- adds r6, r1, 0x1
- lsls r5, r1, 5
- lsls r4, r1, 6
-_08130544:
- adds r2, r5, r3
- lsls r2, 1
- add r2, r12
- ldr r0, [r7]
- adds r0, r4, r0
- lsls r1, r3, 1
- adds r0, r1
- adds r0, 0x8C
- ldrh r0, [r0]
- strh r0, [r2]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x11
- bls _08130544
- lsls r0, r6, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- bls _0813053C
- movs r3, 0
- ldr r4, =0x0600608e
- ldr r2, =gUnknown_03006190
-_08130570:
- lsls r1, r3, 1
- adds r1, r4
- ldr r0, [r2]
- adds r0, 0x8E
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _08130570
- b _08130676
- .pool
-_081305A4:
- cmp r5, 0x7
- bhi _081305C0
- ldr r0, =gUnknown_085AE370
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085B02B0
- b _08130650
- .pool
-_081305C0:
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _08130676
- lsls r0, 2
- ldr r1, =_081305E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081305E8:
- .4byte _081305FC
- .4byte _08130614
- .4byte _0813062C
- .4byte _08130644
- .4byte _08130664
-_081305FC:
- ldr r0, =gUnknown_085A9A9C
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AE974
- b _08130650
- .pool
-_08130614:
- ldr r0, =gUnknown_085AAB20
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AEE80
- b _08130650
- .pool
-_0813062C:
- ldr r0, =gUnknown_085AB750
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AF38C
- b _08130650
- .pool
-_08130644:
- ldr r0, =gUnknown_085AC288
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AF898
-_08130650:
- ldr r1, =0x06006000
- bl RLUnCompVram
- b _08130676
- .pool
-_08130664:
- ldr r0, =gUnknown_085AD240
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AFDA4
- ldr r1, =0x06006000
- bl RLUnCompVram
-_08130676:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130430
-
- thumb_func_start sub_8130688
-sub_8130688: @ 8130688
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gMain
- ldr r1, =gUnknown_085B0830
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [r3, 0x38]
- str r2, [r3, 0x3C]
- ldrh r2, [r3, 0x3C]
- ldr r1, =0xfffffc00
- ands r1, r2
- strh r1, [r3, 0x3C]
- ldrh r1, [r3, 0x3A]
- ldr r0, =0xfffffe00
- ands r0, r1
- movs r1, 0x58
- orrs r0, r1
- strh r0, [r3, 0x3A]
- adds r1, r3, 0
- adds r1, 0x38
- movs r0, 0x18
- strb r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130688
-
- thumb_func_start sub_81306CC
-sub_81306CC: @ 81306CC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bhi _081306E4
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- b _081306F4
- .pool
-_081306E4:
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
-_081306F4:
- cmp r0, 0x4
- bhi _08130732
- lsls r0, 2
- ldr r1, =_0813070C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0813070C:
- .4byte _08130720
- .4byte _08130724
- .4byte _08130728
- .4byte _0813072C
- .4byte _08130730
-_08130720:
- movs r0, 0x9
- b _08130732
-_08130724:
- movs r0, 0xD
- b _08130732
-_08130728:
- movs r0, 0x2
- b _08130732
-_0813072C:
- movs r0, 0x24
- b _08130732
-_08130730:
- movs r0, 0x6
-_08130732:
- pop {r1}
- bx r1
- thumb_func_end sub_81306CC
-
- thumb_func_start sub_8130738
-sub_8130738: @ 8130738
- push {r4,lr}
- ldr r4, =gUnknown_030061C4
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- ldr r4, =gUnknown_03006190
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130738
-
- thumb_func_start sub_8130760
-sub_8130760: @ 8130760
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =gUnknown_030061A0
- ldr r0, =gUnknown_03006190
- ldr r0, [r0]
- str r0, [r1, 0x4]
- ldr r0, =gUnknown_030061C4
- ldr r0, [r0]
- str r0, [r1, 0x8]
- movs r2, 0
- strb r2, [r1, 0x18]
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0]
- strb r0, [r1, 0x1F]
- strb r2, [r1, 0x19]
- strb r2, [r1, 0x1A]
- movs r0, 0x40
- strb r0, [r1, 0x1B]
- strb r0, [r1, 0x1C]
- strb r0, [r1, 0x1D]
- strb r0, [r1, 0x1E]
- subs r0, r3, 0x2
- adds r4, r1, 0
- cmp r0, 0x22
- bhi _08130844
- lsls r0, 2
- ldr r1, =_081307B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081307B4:
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130840
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130840
-_08130840:
- movs r0, 0x3
- b _08130846
-_08130844:
- movs r0, 0x1
-_08130846:
- strh r0, [r4, 0x14]
- movs r0, 0x2
- strh r0, [r4, 0x16]
- strb r3, [r4]
- ldr r0, =0x06010000
- str r0, [r4, 0x10]
- adds r0, r4, 0
- bl sub_8124F2C
- adds r0, r4, 0
- bl sub_81261A4
- adds r0, r4, 0
- bl sub_8126058
- ldr r0, =gUnknown_030061C4
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x80
- lsls r2, 2
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130760
-
- thumb_func_start sub_8130884
-sub_8130884: @ 8130884
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- bl sub_8130738
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrh r0, [r0, 0x8]
- movs r1, 0
- bl sub_81302E8
- adds r0, r4, 0
- bl sub_81306CC
- lsls r0, 24
- lsrs r0, 24
- bl sub_8130760
- adds r0, r4, 0
- bl sub_8130688
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8130430
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130884
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cute_sketch.s b/asm/contest_painting_effects.s
index 36ef184b9..36ef184b9 100644
--- a/asm/cute_sketch.s
+++ b/asm/contest_painting_effects.s
diff --git a/asm/dark.s b/asm/dark.s
index e4373723d..bb46b0fa9 100644
--- a/asm/dark.s
+++ b/asm/dark.s
@@ -25,7 +25,7 @@ sub_81136E8: @ 81136E8
movs r0, 0x52
bl SetGpuReg
adds r0, r4, 0
- bl sub_80A8364
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -208,7 +208,7 @@ sub_8113888: @ 8113888
bl SetGpuReg
ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_80A8364
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -447,7 +447,7 @@ sub_8113A58: @ 8113A58
cmp r0, 0
bne _08113A8A
adds r0, r3, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_08113A8A:
pop {r0}
bx r0
@@ -581,7 +581,7 @@ sub_8113B90: @ 8113B90
cmp r0, 0
beq _08113BA4
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_08113BA4:
pop {r4}
pop {r0}
@@ -643,7 +643,7 @@ _08113C1E:
strh r0, [r5, 0x18]
ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_80A8364
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xE]
@@ -962,7 +962,7 @@ _08113EBC:
_08113EF8:
ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_80A8364
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xE]
@@ -1561,7 +1561,7 @@ sub_81143C0: @ 81143C0
mov r10, r0
ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
- bl sub_80A8364
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -1638,7 +1638,7 @@ sub_8114470: @ 8114470
lsrs r6, r0, 24
ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl sub_80A8364
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -1684,7 +1684,7 @@ sub_81144BC: @ 81144BC
ldrb r1, [r1, 0x4]
adds r0, r4, 0
bl StartSpriteAnim
- ldr r0, =sub_80A67D8
+ ldr r0, =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
ldr r1, =DestroyAnimSprite
adds r0, r4, 0
@@ -1895,7 +1895,7 @@ _0811465C:
bne _08114708
adds r0, r1, 0
movs r1, 0
- bl sub_80A750C
+ bl SetGreyscaleOrOriginalPalette
b _08114714
.pool
_08114708:
@@ -1984,7 +1984,7 @@ _08114776:
bne _081147B8
adds r0, r1, 0
movs r1, 0x1
- bl sub_80A750C
+ bl SetGreyscaleOrOriginalPalette
_081147B8:
movs r0, 0x8
ldrsh r1, [r4, r0]
@@ -2159,7 +2159,7 @@ _0811492E:
adds r0, 0x10
ldr r1, =gBattleAnimArgs
ldrb r1, [r1, 0x2]
- bl sub_80A750C
+ bl SetGreyscaleOrOriginalPalette
_0811494A:
adds r0, r5, 0
bl DestroyAnimVisualTask
diff --git a/asm/electric.s b/asm/electric.s
deleted file mode 100644
index b1fa8b9ae..000000000
--- a/asm/electric.s
+++ /dev/null
@@ -1,2547 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_810A1A8
-sub_810A1A8: @ 810A1A8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810A1D0
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _0810A1DC
- .pool
-_0810A1D0:
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, r1, 0
-_0810A1DC:
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, =sub_810A1F8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A1A8
-
- thumb_func_start sub_810A1F8
-sub_810A1F8: @ 810A1F8
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0810A20E
- adds r0, r2, 0
- bl DestroyAnimSprite
-_0810A20E:
- pop {r0}
- bx r0
- thumb_func_end sub_810A1F8
-
- thumb_func_start sub_810A214
-sub_810A214: @ 810A214
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810A23C
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r4, 0x20]
- ldrh r0, [r0]
- subs r1, r0
- strh r1, [r4, 0x20]
- b _0810A246
- .pool
-_0810A23C:
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
-_0810A246:
- ldr r0, =sub_810A258
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A214
-
- thumb_func_start sub_810A258
-sub_810A258: @ 810A258
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0810A26E
- adds r0, r2, 0
- bl move_anim_8074EE0
-_0810A26E:
- pop {r0}
- bx r0
- thumb_func_end sub_810A258
-
- thumb_func_start sub_810A274
-sub_810A274: @ 810A274
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810A2C4
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r5, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- ldrh r1, [r2, 0x2]
- subs r0, r1
- strh r0, [r5, 0x22]
- b _0810A2D8
- .pool
-_0810A2C4:
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0]
- ldrh r2, [r5, 0x20]
- adds r1, r2
- strh r1, [r5, 0x20]
- ldrh r1, [r0, 0x2]
- ldrh r2, [r5, 0x22]
- adds r1, r2
- strh r1, [r5, 0x22]
- adds r2, r0, 0
-_0810A2D8:
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldrh r0, [r2, 0x4]
- strh r0, [r5, 0x30]
- ldrh r0, [r2, 0x6]
- strh r0, [r5, 0x32]
- ldrh r0, [r2, 0x8]
- strh r0, [r5, 0x34]
- ldr r1, =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A62EC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A274
-
- thumb_func_start sub_810A308
-sub_810A308: @ 810A308
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _0810A380
- cmp r0, 0x1
- bgt _0810A324
- cmp r0, 0
- beq _0810A32E
- b _0810A380
- .pool
-_0810A324:
- cmp r0, 0x2
- beq _0810A338
- cmp r0, 0x3
- beq _0810A35C
- b _0810A380
-_0810A32E:
- ldr r0, =gBattleAnimAttacker
- b _0810A382
- .pool
-_0810A338:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r6, 0x2
- eors r0, r6
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _0810A354
- ldrb r4, [r4]
- b _0810A384
- .pool
-_0810A354:
- ldrb r0, [r4]
- adds r4, r6, 0
- eors r4, r0
- b _0810A384
-_0810A35C:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- movs r4, 0x2
- eors r0, r4
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _0810A380
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- eors r4, r0
- b _0810A384
- .pool
-_0810A380:
- ldr r0, =gBattleAnimTarget
-_0810A382:
- ldrb r4, [r0]
-_0810A384:
- ldr r0, =gBattleAnimArgs
- movs r2, 0xA
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _0810A3AC
- adds r0, r4, 0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r4, 0
- movs r1, 0x1
- b _0810A3BE
- .pool
-_0810A3AC:
- adds r0, r4, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r4, 0
- movs r1, 0x3
-_0810A3BE:
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r7, =gSineTable
- ldr r6, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- lsls r0, 1
- adds r0, r7
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r2, 0x2
- ldrsh r0, [r6, r2]
- muls r0, r1
- asrs r0, 8
- strh r0, [r5, 0x24]
- movs r1, 0
- ldrsh r0, [r6, r1]
- adds r0, 0x40
- lsls r0, 1
- adds r0, r7
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r2, 0x2
- ldrsh r0, [r6, r2]
- muls r0, r1
- asrs r0, 8
- strh r0, [r5, 0x26]
- ldrh r1, [r6, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810A422
- adds r0, r4, 0
- bl sub_80A8328
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r5, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x5]
-_0810A422:
- ldrb r2, [r5, 0x3]
- lsls r2, 26
- lsrs r2, 27
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- lsls r0, r1, 1
- adds r0, r7
- ldrh r0, [r0]
- ldr r3, =gOamMatrices
- lsls r2, 3
- adds r2, r3
- adds r1, 0x40
- lsls r1, 1
- adds r1, r7
- ldrh r1, [r1]
- strh r1, [r2, 0x6]
- strh r1, [r2]
- strh r0, [r2, 0x2]
- lsls r0, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- ldrh r0, [r6, 0x6]
- strh r0, [r5, 0x2E]
- ldr r0, =sub_810E2C8
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A308
-
- thumb_func_start sub_810A46C
-sub_810A46C: @ 810A46C
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r5, =gBattleAnimArgs
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldr r6, =gBattleAnimTarget
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl InitAnimLinearTranslation
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x38]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x3A]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x3C]
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- lsls r0, 2
- adds r1, r0
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- ldr r1, =sub_810A4F4
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A46C
-
- thumb_func_start sub_810A4F4
-sub_810A4F4: @ 810A4F4
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- bne _0810A55E
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- ldrh r2, [r4, 0x3C]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3C]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _0810A564
- 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]
- b _0810A564
-_0810A55E:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0810A564:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810A4F4
-
- thumb_func_start sub_810A56C
-sub_810A56C: @ 810A56C
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x38]
- subs r0, 0x1
- strh r0, [r3, 0x38]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0810A5A4
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- 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
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x36]
- strh r0, [r3, 0x38]
-_0810A5A4:
- ldrh r0, [r3, 0x34]
- subs r1, r0, 0x1
- strh r1, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bgt _0810A5B6
- adds r0, r3, 0
- bl DestroyAnimSprite
-_0810A5B6:
- pop {r0}
- bx r0
- thumb_func_end sub_810A56C
-
- thumb_func_start sub_810A5BC
-sub_810A5BC: @ 810A5BC
- push {r4-r6,lr}
- adds r6, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0810A5D8
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0810A5E0
-_0810A5D8:
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_0810A5E0:
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4]
- strh r0, [r6, 0x34]
- ldrh r0, [r4, 0x6]
- strh r0, [r6, 0x36]
- strh r0, [r6, 0x38]
- ldr r0, =sub_810A56C
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A5BC
-
- thumb_func_start sub_810A628
-sub_810A628: @ 810A628
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x2E]
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0810A64C
- ldr r0, =gBattleAnimTarget
- b _0810A64E
- .pool
-_0810A64C:
- ldr r0, =gBattleAnimAttacker
-_0810A64E:
- ldrb r6, [r0]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0810A666
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0810A66E
-_0810A666:
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_0810A66E:
- adds r0, r6, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r3, [r4]
- adds r0, r3
- strh r0, [r5, 0x20]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrh r1, [r4, 0xE]
- ldr r0, =0x00007fff
- ands r0, r1
- strh r0, [r5, 0x36]
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x38]
- ldrh r0, [r4, 0xA]
- strh r0, [r5, 0x3A]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x3C]
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- lsls r0, 2
- adds r1, r0
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r1, =sub_810A6EC
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A628
-
- thumb_func_start sub_810A6EC
-sub_810A6EC: @ 810A6EC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3C]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _0810A742
- 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]
-_0810A742:
- ldrh r0, [r4, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _0810A754
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0810A754:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810A6EC
-
- thumb_func_start sub_810A75C
-sub_810A75C: @ 810A75C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_80A6980
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- ldr r3, =gBattleAnimArgs
- movs r5, 0x6
- ldrsh r0, [r3, r5]
- lsls r0, 2
- adds r1, r0
- ldr r5, =0x000003ff
- adds r0, r5, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- movs r1, 0x6
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- bne _0810A7A4
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- b _0810A7B2
- .pool
-_0810A7A4:
- cmp r0, 0x2
- bne _0810A7B6
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x20
-_0810A7B2:
- orrs r1, r0
- strb r1, [r4, 0x3]
-_0810A7B6:
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldr r0, =WaitAnimForDuration
- str r0, [r4, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A75C
-
- thumb_func_start sub_810A7DC
-sub_810A7DC: @ 810A7DC
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, =gBattleAnimTarget
- ldrb r0, [r6]
- movs r1, 0
- bl GetBattlerSpriteCoord
- ldr r1, =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r1
- lsls r0, 24
- ldr r5, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r4, 0x8]
- ldrb r0, [r6]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x2]
- adds r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0xC]
- ldr r0, =sub_810A834
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A7DC
-
- thumb_func_start sub_810A834
-sub_810A834: @ 810A834
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r5, 0
- movs r7, 0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrb r2, [r0, 0xC]
- str r2, [sp]
- ldrh r4, [r0, 0x8]
- ldrh r6, [r0, 0xA]
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- mov r10, r1
- cmp r0, 0
- bne _0810A878
- movs r0, 0
- mov r8, r0
- movs r2, 0x1
- movs r1, 0x10
- mov r12, r1
- b _0810A882
- .pool
-_0810A878:
- movs r2, 0x10
- mov r12, r2
- movs r3, 0x8
- mov r8, r3
- movs r2, 0x4
-_0810A882:
- mov r0, r9
- lsls r1, r0, 2
- adds r0, r1, r0
- lsls r0, 3
- add r0, r10
- movs r3, 0x1C
- ldrsh r0, [r0, r3]
- mov r10, r1
- cmp r0, 0xA
- bhi _0810A978
- lsls r0, 2
- ldr r1, =_0810A8A4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0810A8A4:
- .4byte _0810A8D0
- .4byte _0810A978
- .4byte _0810A8E4
- .4byte _0810A978
- .4byte _0810A904
- .4byte _0810A978
- .4byte _0810A91A
- .4byte _0810A978
- .4byte _0810A93C
- .4byte _0810A978
- .4byte _0810A970
-_0810A8D0:
- ldr r0, =gUnknown_08595828
- lsls r1, r4, 16
- asrs r1, 16
- lsls r2, r6, 16
- asrs r2, 16
- mov r4, r12
- lsls r3, r4, 16
- b _0810A952
- .pool
-_0810A8E4:
- mov r0, r12
- lsls r3, r0, 17
- mov r1, r8
- adds r0, r1, r2
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r0, =gUnknown_08595828
- lsls r1, r4, 16
- asrs r1, 16
- lsls r2, r6, 16
- asrs r2, 16
- b _0810A952
- .pool
-_0810A904:
- mov r3, r12
- lsls r0, r3, 16
- asrs r0, 16
- lsls r3, r0, 1
- adds r3, r0
- lsls r0, r2, 1
- add r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- b _0810A946
-_0810A91A:
- mov r0, r12
- lsls r3, r0, 18
- lsls r0, r2, 1
- adds r0, r2
- add r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r0, =gUnknown_08595828
- lsls r1, r4, 16
- asrs r1, 16
- lsls r2, r6, 16
- asrs r2, 16
- b _0810A952
- .pool
-_0810A93C:
- mov r1, r12
- lsls r0, r1, 16
- asrs r0, 16
- lsls r3, r0, 2
- adds r3, r0
-_0810A946:
- ldr r0, =gUnknown_08595828
- lsls r1, r4, 16
- asrs r1, 16
- lsls r2, r6, 16
- asrs r2, 16
- lsls r3, 16
-_0810A952:
- asrs r3, 16
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- b _0810A978
- .pool
-_0810A970:
- mov r0, r9
- bl DestroyAnimVisualTask
- b _0810A9BC
-_0810A978:
- cmp r7, 0
- beq _0810A9AC
- ldr r4, =gSprites
- lsls r3, r5, 4
- adds r3, r5
- lsls r3, 2
- adds r0, r3, r4
- ldrh r5, [r0, 0x4]
- lsls r2, r5, 22
- lsrs r2, 22
- add r2, r8
- ldr r6, =0x000003ff
- adds r1, r6, 0
- ands r2, r1
- ldr r1, =0xfffffc00
- ands r1, r5
- orrs r1, r2
- strh r1, [r0, 0x4]
- mov r1, sp
- ldrh r1, [r1]
- strh r1, [r0, 0x2E]
- adds r4, 0x1C
- adds r3, r4
- ldr r1, [r3]
- bl _call_via_r1
-_0810A9AC:
- ldr r0, =gTasks
- mov r1, r10
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1C]
- adds r0, 0x1
- strh r0, [r1, 0x1C]
-_0810A9BC:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810A834
-
- thumb_func_start sub_810A9DC
-sub_810A9DC: @ 810A9DC
- push {lr}
- adds r3, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _0810A9FE
- ldrb r1, [r3, 0x1]
- movs r2, 0x3F
- adds r0, r2, 0
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r3, 0x1]
- ldrb r0, [r3, 0x3]
- ands r2, r0
- strb r2, [r3, 0x3]
- b _0810AA12
-_0810A9FE:
- ldrb r2, [r3, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3, 0x1]
- ldrb r0, [r3, 0x3]
- ands r1, r0
- movs r0, 0x40
- orrs r1, r0
- strb r1, [r3, 0x3]
-_0810AA12:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bne _0810AA26
- adds r0, r3, 0
- bl DestroySprite
-_0810AA26:
- pop {r0}
- bx r0
- thumb_func_end sub_810A9DC
-
- thumb_func_start sub_810AA2C
-sub_810AA2C: @ 810AA2C
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
- ldrh r3, [r4, 0x22]
- adds r0, r3
- strh r0, [r4, 0x22]
- ldr r0, =gUnknown_08595840
- adds r1, 0x20
- lsls r1, 16
- asrs r1, 16
- movs r7, 0x22
- ldrsh r2, [r4, r7]
- adds r3, r4, 0
- adds r3, 0x43
- ldrb r3, [r3]
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r6, r2, r3
- ldrh r5, [r6, 0x4]
- lsls r1, r5, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r7, =0x000003ff
- adds r0, r7, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r5
- orrs r0, r1
- strh r0, [r6, 0x4]
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- adds r3, 0x1C
- adds r2, r3
- ldr r0, =sub_810AAB0
- str r0, [r2]
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810AA2C
-
- thumb_func_start sub_810AAB0
-sub_810AAB0: @ 810AAB0
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0810AAE4
- movs r0, 0
- strh r0, [r3, 0x2E]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- 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
- mov r1, r12
- strb r0, [r1]
-_0810AAE4:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _0810AAF8
- adds r0, r3, 0
- bl DestroyAnimSprite
-_0810AAF8:
- pop {r0}
- bx r0
- thumb_func_end sub_810AAB0
-
- thumb_func_start sub_810AAFC
-sub_810AAFC: @ 810AAFC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r5, r1, r0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0810AB28
- ldr r4, =gBattleAnimAttacker
- b _0810AB2A
- .pool
-_0810AB28:
- ldr r4, =gBattleAnimTarget
-_0810AB2A:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x24]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x26]
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r2, 0x2]
- movs r1, 0
- strh r0, [r5, 0x14]
- strh r1, [r5, 0x16]
- strh r1, [r5, 0x18]
- strh r1, [r5, 0x1A]
- strh r1, [r5, 0x1C]
- ldrh r0, [r2, 0x6]
- strh r0, [r5, 0x1E]
- strh r1, [r5, 0x20]
- ldrh r0, [r2, 0x4]
- strh r0, [r5, 0x22]
- ldr r0, =sub_810AB78
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810AAFC
-
- thumb_func_start sub_810AB78
-sub_810AB78: @ 810AB78
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- adds r2, r6, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0810AC78
- ldrh r0, [r5, 0x20]
- adds r0, 0x1
- movs r7, 0
- strh r0, [r5, 0x20]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x22
- ldrsh r1, [r5, r2]
- cmp r0, r1
- ble _0810AC86
- strh r7, [r5, 0x20]
- ldr r0, =gUnknown_085958A8
- movs r3, 0x24
- ldrsh r1, [r5, r3]
- movs r3, 0x26
- ldrsh r2, [r5, r3]
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0810AC86
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- ldr r1, =gUnknown_08595858
- movs r2, 0x1A
- ldrsh r0, [r5, r2]
- lsls r0, 1
- adds r0, r1
- movs r3, 0
- ldrsb r3, [r0, r3]
- ldrh r0, [r4, 0x20]
- adds r3, r0
- strh r3, [r4, 0x20]
- movs r2, 0x1A
- ldrsh r0, [r5, r2]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- movs r2, 0
- ldrsb r2, [r0, r2]
- ldrh r0, [r4, 0x22]
- adds r2, r0
- strh r2, [r4, 0x22]
- movs r1, 0x18
- ldrsh r0, [r5, r1]
- lsls r1, r0, 2
- adds r1, r0
- movs r0, 0x28
- subs r0, r1
- strh r0, [r4, 0x2E]
- strh r3, [r4, 0x30]
- ldrh r0, [r5, 0x24]
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x34]
- ldrh r0, [r5, 0x26]
- strh r0, [r4, 0x36]
- strh r6, [r4, 0x38]
- adds r0, r4, 0
- bl InitAnimLinearTranslation
- ldr r1, =sub_810ACC0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67D8
- str r0, [r4, 0x1C]
- ldrh r0, [r5, 0x1A]
- adds r0, 0x1
- strh r0, [r5, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _0810AC30
- strh r7, [r5, 0x1A]
-_0810AC30:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x1E
- ldrsh r1, [r5, r2]
- cmp r0, r1
- blt _0810AC52
- strh r7, [r5, 0x1C]
- ldrh r1, [r5, 0x18]
- movs r3, 0x18
- ldrsh r0, [r5, r3]
- cmp r0, 0x5
- bgt _0810AC52
- adds r0, r1, 0x1
- strh r0, [r5, 0x18]
-_0810AC52:
- ldrh r0, [r5, 0x16]
- adds r0, 0x1
- strh r0, [r5, 0x16]
- ldrh r0, [r5, 0x14]
- subs r0, 0x1
- strh r0, [r5, 0x14]
- b _0810AC86
- .pool
-_0810AC78:
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0810AC86
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0810AC86:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810AB78
-
- thumb_func_start sub_810AC8C
-sub_810AC8C: @ 810AC8C
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _0810ACB4
- ldr r2, =gTasks
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x16]
- subs r1, 0x1
- strh r1, [r0, 0x16]
- adds r0, r4, 0
- bl DestroySprite
-_0810ACB4:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810AC8C
-
- thumb_func_start sub_810ACC0
-sub_810ACC0: @ 810ACC0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, =sub_810AC8C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810ACC0
-
- thumb_func_start sub_810ACD8
-sub_810ACD8: @ 810ACD8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0810ACF4
- ldr r4, =gBattleAnimAttacker
- b _0810ACF6
- .pool
-_0810ACF4:
- ldr r4, =gBattleAnimTarget
-_0810ACF6:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67BC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810ACD8
-
- thumb_func_start sub_810AD30
-sub_810AD30: @ 810AD30
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0810AD4C
- ldr r4, =gBattleAnimAttacker
- b _0810AD4E
- .pool
-_0810AD4C:
- ldr r4, =gBattleAnimTarget
-_0810AD4E:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x24]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x26]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67D8
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810AD30
-
- thumb_func_start sub_810AD98
-sub_810AD98: @ 810AD98
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x3A]
- movs r0, 0x10
- strh r0, [r5, 0x3C]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810ADE6
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- negs r0, r0
- strh r0, [r5, 0x3C]
-_0810ADE6:
- ldr r0, =sub_810ADF8
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810AD98
-
- thumb_func_start sub_810ADF8
-sub_810ADF8: @ 810ADF8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0810AE0A
- cmp r0, 0x1
- beq _0810AE20
- b _0810AE50
-_0810AE0A:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x28
- ble _0810AE50
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0810AE50
-_0810AE20:
- ldrh r2, [r4, 0x3C]
- ldrh r1, [r4, 0x20]
- adds r0, r2, r1
- strh r0, [r4, 0x20]
- ldr r3, =gSprites
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x24]
- adds r2, r1
- strh r2, [r0, 0x24]
- ldrh r0, [r4, 0x20]
- adds r0, 0x50
- lsls r0, 16
- movs r1, 0xC8
- lsls r1, 17
- cmp r0, r1
- bls _0810AE50
- adds r0, r4, 0
- bl move_anim_8074EE0
-_0810AE50:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810ADF8
-
- thumb_func_start sub_810AE5C
-sub_810AE5C: @ 810AE5C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _0810AEF0
- cmp r0, 0x1
- bgt _0810AE84
- cmp r0, 0
- beq _0810AE90
- b _0810AFC0
- .pool
-_0810AE84:
- cmp r0, 0x2
- beq _0810AF4C
- cmp r0, 0x3
- bne _0810AE8E
- b _0810AFA0
-_0810AE8E:
- b _0810AFC0
-_0810AE90:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- strh r0, [r5, 0x26]
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x24]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0810AECC
- ldr r0, =0x0000ffe0
- strh r0, [r5, 0x24]
- movs r0, 0x2
- b _0810AED2
- .pool
-_0810AECC:
- movs r0, 0x20
- strh r0, [r5, 0x24]
- ldr r0, =0x0000fffe
-_0810AED2:
- strh r0, [r5, 0x22]
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r5, 0x24]
- strh r1, [r0, 0x24]
- b _0810AF92
- .pool
-_0810AEF0:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0810AFC0
- movs r0, 0
- strh r0, [r5, 0xA]
- ldr r4, =gSprites
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- adds r2, 0x3E
- ldrb r3, [r2]
- lsls r0, r3, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldrh r1, [r5, 0x24]
- movs r2, 0x24
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _0810AF92
- ldrh r2, [r5, 0x22]
- adds r2, r1, r2
- strh r2, [r5, 0x24]
- movs r0, 0x26
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x24]
- b _0810AFC0
- .pool
-_0810AF4C:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0810AFC0
- movs r0, 0
- strh r0, [r5, 0xA]
- ldr r1, =gSprites
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- adds r2, 0x3E
- ldrb r3, [r2]
- lsls r0, r3, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bne _0810AFC0
-_0810AF92:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _0810AFC0
- .pool
-_0810AFA0:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r5, 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]
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_0810AFC0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810AE5C
-
- thumb_func_start sub_810AFCC
-sub_810AFCC: @ 810AFCC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _0810AFE6
- b _0810B10C
-_0810AFE6:
- cmp r0, 0x1
- bgt _0810AFF4
- cmp r0, 0
- beq _0810AFFC
- b _0810B14E
- .pool
-_0810AFF4:
- cmp r0, 0x2
- bne _0810AFFA
- b _0810B140
-_0810AFFA:
- b _0810B14E
-_0810AFFC:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _0810B012
- movs r1, 0x1
-_0810B012:
- movs r6, 0
- strh r1, [r5, 0xA]
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r2, [r0, r1]
- adds r3, r0, 0
- cmp r2, 0
- beq _0810B048
- cmp r2, 0x4
- beq _0810B070
- ldrh r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810B0A8
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0xE]
- ldr r0, =0x0000fff0
- b _0810B0B0
- .pool
-_0810B048:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xE]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x12]
- movs r2, 0xA
- ldrsh r0, [r5, r2]
- lsls r0, 7
- adds r0, 0x78
- strh r0, [r5, 0x10]
- b _0810B0E6
-_0810B070:
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r1, 7
- movs r0, 0x78
- subs r0, r1
- strh r0, [r5, 0xE]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x12]
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xA
- ldrsh r1, [r5, r2]
- lsls r1, 5
- subs r0, r1
- strh r0, [r5, 0x10]
- b _0810B0E6
- .pool
-_0810B0A8:
- ldr r0, =0x0000fff0
- strh r0, [r5, 0xE]
- movs r0, 0x80
- lsls r0, 1
-_0810B0B0:
- strh r0, [r5, 0x10]
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _0810B0D0
- movs r2, 0
- ldrsh r0, [r3, r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- movs r0, 0x50
- subs r0, r1
- strh r0, [r5, 0x12]
- b _0810B0E6
- .pool
-_0810B0D0:
- movs r0, 0
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- adds r0, 0x28
- strh r0, [r5, 0x12]
- ldrh r1, [r5, 0xE]
- ldrh r0, [r5, 0x10]
- strh r0, [r5, 0xE]
- strh r1, [r5, 0x10]
-_0810B0E6:
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bge _0810B0FC
- movs r1, 0
- movs r0, 0x1
- strh r0, [r5, 0xA]
- strh r1, [r5, 0x14]
- b _0810B138
-_0810B0FC:
- ldr r0, =0x0000ffff
- strh r0, [r5, 0xA]
- movs r0, 0x3
- strh r0, [r5, 0x14]
- b _0810B138
- .pool
-_0810B10C:
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- cmp r0, 0
- ble _0810B14E
- movs r0, 0
- strh r0, [r5, 0xC]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_810B154
- lsls r0, 24
- cmp r0, 0
- bne _0810B138
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_810B154
- lsls r0, 24
- cmp r0, 0
- beq _0810B14E
-_0810B138:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _0810B14E
-_0810B140:
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0810B14E
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_0810B14E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_810AFCC
-
- thumb_func_start sub_810B154
-sub_810B154: @ 810B154
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, =gUnknown_08595A00
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- movs r3, 0x12
- ldrsh r2, [r4, r3]
- movs r3, 0x23
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _0810B18A
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- strh r5, [r0, 0x3A]
- movs r1, 0x7
- strh r1, [r0, 0x3C]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
-_0810B18A:
- ldrh r1, [r4, 0xA]
- ldrh r5, [r4, 0x14]
- adds r0, r1, r5
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- bge _0810B19C
- movs r0, 0x3
- strh r0, [r4, 0x14]
-_0810B19C:
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- ble _0810B1A8
- movs r0, 0
- strh r0, [r4, 0x14]
-_0810B1A8:
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- lsls r0, 4
- ldrh r5, [r4, 0xE]
- adds r2, r0, r5
- strh r2, [r4, 0xE]
- lsls r0, r1, 16
- asrs r3, r0, 16
- cmp r3, 0x1
- bne _0810B1C8
- lsls r0, r2, 16
- asrs r0, 16
- movs r5, 0x10
- ldrsh r1, [r4, r5]
- cmp r0, r1
- bge _0810B1DC
-_0810B1C8:
- movs r0, 0x1
- negs r0, r0
- cmp r3, r0
- bne _0810B1E8
- lsls r0, r2, 16
- asrs r0, 16
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bgt _0810B1E8
-_0810B1DC:
- movs r0, 0x1
- b _0810B1EA
- .pool
-_0810B1E8:
- movs r0, 0
-_0810B1EA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_810B154
-
- thumb_func_start sub_810B1F0
-sub_810B1F0: @ 810B1F0
- 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, 0xC
- ble _0810B230
- ldr r3, =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_0810B230:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810B1F0
-
- thumb_func_start sub_810B23C
-sub_810B23C: @ 810B23C
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0810B24E
- cmp r0, 0x1
- beq _0810B280
- b _0810B294
-_0810B24E:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- adds r0, r5, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _0810B294
- .pool
-_0810B280:
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0810B294
- adds r0, r5, 0
- bl move_anim_8074EE0
-_0810B294:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810B23C
-
- thumb_func_start sub_810B29C
-sub_810B29C: @ 810B29C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _0810B2B6
- b _0810B428
-_0810B2B6:
- lsls r0, 2
- ldr r1, =_0810B2C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0810B2C8:
- .4byte _0810B2DC
- .4byte _0810B36C
- .4byte _0810B3A8
- .4byte _0810B404
- .4byte _0810B414
-_0810B2DC:
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x14]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x16]
- movs r0, 0x4
- strh r0, [r5, 0x18]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r5, r2]
- movs r2, 0x14
- ldrsh r1, [r5, r2]
- subs r0, r1
- movs r1, 0x5
- bl __divsi3
- strh r0, [r5, 0x1A]
- movs r0, 0x7
- strh r0, [r5, 0x10]
- ldr r0, =0x0000ffff
- strh r0, [r5, 0x12]
- movs r0, 0xC
- strh r0, [r5, 0x1E]
- subs r0, 0x4C
- bl BattleAnimAdjustPanning
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0x20]
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0x22]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x24]
- movs r1, 0x22
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- subs r0, r1
- movs r1, 0x3
- bl __divsi3
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- b _0810B426
- .pool
-_0810B36C:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- cmp r0, 0
- ble _0810B39C
- movs r0, 0
- strh r0, [r5, 0xA]
- adds r0, r5, 0
- adds r1, r2, 0
- bl sub_810B430
- lsls r0, 24
- cmp r0, 0
- beq _0810B39C
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0x5
- bne _0810B396
- movs r0, 0x3
- b _0810B39A
-_0810B396:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
-_0810B39A:
- strh r0, [r5, 0x8]
-_0810B39C:
- ldrh r1, [r5, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _0810B428
- b _0810B41E
-_0810B3A8:
- ldrh r1, [r5, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _0810B3B6
- subs r0, r1, 0x1
- strh r0, [r5, 0x1E]
-_0810B3B6:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _0810B428
- strh r3, [r5, 0xA]
- ldrh r1, [r5, 0xC]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0810B3E2
- movs r0, 0x4
- strh r0, [r5, 0x16]
- movs r0, 0x44
- strh r0, [r5, 0x18]
- strh r3, [r5, 0x10]
- strh r2, [r5, 0x12]
- b _0810B3F2
-_0810B3E2:
- movs r0, 0x44
- strh r0, [r5, 0x16]
- movs r0, 0x4
- strh r0, [r5, 0x18]
- movs r0, 0x7
- strh r0, [r5, 0x10]
- ldr r0, =0x0000ffff
- strh r0, [r5, 0x12]
-_0810B3F2:
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0810B424
- movs r0, 0x4
- b _0810B426
- .pool
-_0810B404:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0810B428
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _0810B428
-_0810B414:
- ldrh r1, [r5, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _0810B424
-_0810B41E:
- subs r0, r1, 0x1
- strh r0, [r5, 0x1E]
- b _0810B428
-_0810B424:
- movs r0, 0x1
-_0810B426:
- strh r0, [r5, 0x8]
-_0810B428:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810B29C
-
- thumb_func_start sub_810B430
-sub_810B430: @ 810B430
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, =gUnknown_08595A30
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- movs r3, 0x16
- ldrsh r2, [r4, r3]
- movs r3, 0x23
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _0810B49C
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r1
- ldrh r2, [r3, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- ldrh r6, [r4, 0x10]
- adds r1, r6
- ldr r6, =0x000003ff
- adds r0, r6, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0x10]
- adds r0, r1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bge _0810B484
- movs r0, 0x7
- strh r0, [r4, 0x10]
-_0810B484:
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0x7
- ble _0810B490
- movs r0, 0
- strh r0, [r4, 0x10]
-_0810B490:
- strh r5, [r3, 0x3A]
- movs r0, 0x3
- strh r0, [r3, 0x3C]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
-_0810B49C:
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _0810B4BE
- movs r5, 0x12
- ldrsh r0, [r4, r5]
- cmp r0, 0
- ble _0810B4BE
- ldrh r1, [r4, 0x26]
- ldrh r6, [r4, 0x24]
- adds r1, r6
- strh r1, [r4, 0x24]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x76
- bl PlaySE12WithPanning
-_0810B4BE:
- movs r0, 0x12
- ldrsh r3, [r4, r0]
- ldrh r2, [r4, 0x16]
- cmp r3, 0
- bge _0810B4D4
- lsls r0, r2, 16
- asrs r0, 16
- movs r5, 0x18
- ldrsh r1, [r4, r5]
- cmp r0, r1
- ble _0810B4E4
-_0810B4D4:
- cmp r3, 0
- ble _0810B508
- lsls r0, r2, 16
- asrs r0, 16
- movs r6, 0x18
- ldrsh r1, [r4, r6]
- cmp r0, r1
- blt _0810B508
-_0810B4E4:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x1A]
- ldrh r1, [r4, 0x14]
- adds r0, r1
- strh r0, [r4, 0x14]
- movs r0, 0x1
- b _0810B514
- .pool
-_0810B508:
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r0, r2, r0
- strh r0, [r4, 0x16]
- movs r0, 0
-_0810B514:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810B430
-
- thumb_func_start sub_810B51C
-sub_810B51C: @ 810B51C
- 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, 0xC
- ble _0810B552
- ldr r3, =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_0810B552:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810B51C
-
- thumb_func_start sub_810B55C
-sub_810B55C: @ 810B55C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _0810B5D8
- cmp r0, 0x1
- bgt _0810B584
- cmp r0, 0
- beq _0810B58A
- b _0810B60E
- .pool
-_0810B584:
- cmp r0, 0x2
- beq _0810B600
- b _0810B60E
-_0810B58A:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r5, 0x26]
- strh r0, [r5, 0x24]
- cmp r0, 0x10
- ble _0810B5B4
- adds r2, r0, 0
-_0810B5A4:
- adds r1, r2, 0
- subs r1, 0x20
- adds r2, r1, 0
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x10
- bgt _0810B5A4
- strh r1, [r5, 0x24]
-_0810B5B4:
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x2
- strh r0, [r5, 0x20]
- b _0810B5F8
- .pool
-_0810B5D8:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0810B60E
- movs r0, 0
- strh r0, [r5, 0xA]
- adds r0, r5, 0
- adds r1, r2, 0
- bl sub_810B614
- lsls r0, 24
- cmp r0, 0
- beq _0810B60E
-_0810B5F8:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _0810B60E
-_0810B600:
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0810B60E
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0810B60E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810B55C
-
- .align 2, 0
diff --git a/asm/field_screen.s b/asm/field_screen.s
deleted file mode 100644
index 8a97644ac..000000000
--- a/asm/field_screen.s
+++ /dev/null
@@ -1,10509 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80AAFA4
-@ void sub_80AAFA4()
-sub_80AAFA4: @ 80AAFA4
- push {r4-r6,lr}
- ldr r0, =sub_80AB1B0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _080AB060
- movs r0, 0x90
- lsls r0, 5
- bl AllocSpritePalette
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gUnknown_0854C270
- lsls r1, r5, 5
- ldr r2, =gPlttBufferUnfaded + 0x200
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- bl sub_80AB294
- ldr r4, =gUnknown_02038454
- ldr r1, =0x000006d5
- adds r0, r4, r1
- strb r5, [r0]
- ldr r0, =0x00001201
- bl AllocSpritePalette
- ldr r2, =0x000006d4
- adds r1, r4, r2
- strb r0, [r1]
- ldr r1, =0x000006da
- adds r0, r4, r1
- strb r6, [r0]
- adds r2, 0x4
- adds r0, r4, r2
- strb r6, [r0]
- adds r1, 0x4
- adds r0, r4, r1
- strb r6, [r0]
- adds r2, 0xC
- adds r0, r4, r2
- strb r6, [r0]
- adds r1, 0x22
- adds r0, r4, r1
- strb r6, [r0]
- adds r2, 0x17
- adds r0, r4, r2
- strb r6, [r0]
- adds r1, 0x24
- adds r0, r4, r1
- strb r6, [r0]
- adds r2, 0x1B
- adds r0, r4, r2
- strb r6, [r0]
- subs r1, 0xD
- adds r0, r4, r1
- strb r6, [r0]
- adds r2, 0x18
- adds r0, r4, r2
- strb r6, [r0]
- subs r1, 0x1D
- adds r0, r4, r1
- strb r6, [r0]
- movs r0, 0x10
- movs r1, 0
- bl sub_80AC124
- movs r2, 0xDA
- lsls r2, 3
- adds r0, r4, r2
- strb r6, [r0]
- ldr r0, =0x000006c6
- adds r1, r4, r0
- movs r0, 0x3
- strb r0, [r1]
- movs r1, 0xD9
- lsls r1, 3
- adds r0, r4, r1
- strb r6, [r0]
- adds r2, 0x3
- adds r1, r4, r2
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, =sub_80AB160
- movs r1, 0x50
- bl CreateTask
- ldr r1, =0x000006c9
- adds r4, r1
- strb r0, [r4]
-_080AB060:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AAFA4
-
- thumb_func_start weather_set
-weather_set: @ 80AB098
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- beq _080AB0AE
- cmp r4, 0x5
- beq _080AB0AE
- cmp r4, 0xD
- beq _080AB0AE
- bl play_some_sound
-_080AB0AE:
- ldr r1, =gUnknown_02038454
- ldr r2, =0x000006d1
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, r4
- beq _080AB0D2
- movs r3, 0xDA
- lsls r3, 3
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r4
- bne _080AB0D2
- ldr r0, =gUnknown_0854C150
- lsls r1, r4, 4
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
-_080AB0D2:
- ldr r1, =gUnknown_02038454
- ldr r2, =0x000006d3
- adds r0, r1, r2
- movs r2, 0
- strb r2, [r0]
- ldr r3, =0x000006d1
- adds r0, r1, r3
- strb r4, [r0]
- ldr r0, =0x000006ce
- adds r1, r0
- strh r2, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end weather_set
-
- thumb_func_start sub_80AB104
-sub_80AB104: @ 80AB104
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl play_some_sound
- ldr r0, =gUnknown_02038454
- movs r2, 0xDA
- lsls r2, 3
- adds r1, r0, r2
- strb r4, [r1]
- ldr r1, =0x000006d1
- adds r0, r1
- strb r4, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AB104
-
- thumb_func_start sub_80AB130
-sub_80AB130: @ 80AB130
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl play_some_sound
- ldr r1, =gUnknown_02038454
- movs r2, 0xDA
- lsls r2, 3
- adds r0, r1, r2
- strb r4, [r0]
- adds r2, 0x1
- adds r0, r1, r2
- strb r4, [r0]
- movs r0, 0xD9
- lsls r0, 3
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AB130
-
- thumb_func_start sub_80AB160
-sub_80AB160: @ 80AB160
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, =gUnknown_02038454
- movs r1, 0xD9
- lsls r1, 3
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080AB198
- ldr r1, =gUnknown_0854C150
- movs r3, 0xDA
- lsls r3, 3
- adds r0, r2, r3
- ldrb r0, [r0]
- lsls r0, 4
- adds r1, 0x8
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80AB1B0
- str r1, [r0]
-_080AB198:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AB160
-
- thumb_func_start sub_80AB1B0
-sub_80AB1B0: @ 80AB1B0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r5, =gUnknown_02038454
- movs r0, 0xDA
- lsls r0, 3
- adds r6, r5, r0
- ldr r1, =0x000006d1
- adds r7, r5, r1
- ldrb r0, [r6]
- ldrb r2, [r7]
- cmp r0, r2
- beq _080AB22C
- ldr r0, =gUnknown_0854C150
- mov r9, r0
- ldrb r0, [r6]
- lsls r0, 4
- mov r1, r9
- adds r1, 0xC
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080AB23C
- ldr r1, =0x000006c6
- adds r1, r5
- mov r8, r1
- ldrb r0, [r1]
- cmp r0, 0x2
- beq _080AB23C
- ldrb r0, [r7]
- lsls r0, 4
- add r0, r9
- ldr r0, [r0]
- bl _call_via_r0
- ldr r2, =0x000006c3
- adds r0, r5, r2
- strb r4, [r0]
- mov r0, r8
- strb r4, [r0]
- ldrb r0, [r7]
- strb r0, [r6]
- adds r2, 0x10
- adds r1, r5, r2
- movs r0, 0x1
- strb r0, [r1]
- b _080AB23C
- .pool
-_080AB22C:
- ldr r0, =gUnknown_0854C150
- ldrb r1, [r6]
- lsls r1, 4
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
-_080AB23C:
- ldr r1, =gUnknown_0854C240
- ldr r0, =gUnknown_02038454
- ldr r2, =0x000006c6
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AB1B0
-
- thumb_func_start sub_80AB26C
-sub_80AB26C: @ 80AB26C
- ldr r0, =gUnknown_02038454
- ldr r2, =0x000006c1
- adds r1, r0, r2
- movs r2, 0
- strb r2, [r1]
- ldr r1, =0x000006c2
- adds r0, r1
- strb r2, [r0]
- bx lr
- .pool
- thumb_func_end sub_80AB26C
-
- thumb_func_start nullsub_36
-nullsub_36: @ 80AB28C
- bx lr
- thumb_func_end nullsub_36
-
- thumb_func_start sub_80AB290
-sub_80AB290: @ 80AB290
- movs r0, 0
- bx lr
- thumb_func_end sub_80AB290
-
- thumb_func_start sub_80AB294
-sub_80AB294: @ 80AB294
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r1, =gUnknown_03000F50
- ldr r0, =gUnknown_0854C250
- str r0, [r1]
- movs r0, 0
- mov r12, r0
- ldr r1, =gUnknown_020388B4
- mov r10, r1
-_080AB2AC:
- mov r7, r10
- mov r0, r12
- cmp r0, 0
- bne _080AB2B8
- ldr r1, =0xfffffda0
- adds r7, r1
-_080AB2B8:
- movs r5, 0
- movs r0, 0x1
- add r0, r12
- mov r9, r0
-_080AB2C0:
- lsls r1, r5, 8
- lsls r0, r5, 24
- lsrs r2, r0, 16
- mov r0, r12
- cmp r0, 0
- bne _080AB2E4
- adds r0, r1, 0
- lsls r0, 12
- lsrs r4, r0, 16
- b _080AB2E6
- .pool
-_080AB2E4:
- movs r4, 0
-_080AB2E6:
- movs r3, 0
- adds r1, r5, 0x1
- mov r8, r1
-_080AB2EC:
- subs r1, r2, r4
- lsls r1, 16
- lsrs r2, r1, 16
- lsls r0, r3, 5
- adds r0, r7
- adds r0, r5
- lsrs r1, 24
- strb r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x2
- bls _080AB2EC
- adds r6, r2, 0
- movs r0, 0xF8
- lsls r0, 5
- subs r0, r2
- cmp r0, 0
- bge _080AB314
- adds r0, 0xF
-_080AB314:
- lsls r0, 12
- lsrs r4, r0, 16
- cmp r5, 0xB
- bhi _080AB35E
- cmp r3, 0x12
- bhi _080AB384
-_080AB320:
- adds r0, r2, r4
- lsls r0, 16
- lsrs r2, r0, 16
- subs r0, r2, r6
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0
- ble _080AB33C
- lsrs r0, 31
- adds r0, r1, r0
- asrs r0, 1
- subs r0, r2, r0
- lsls r0, 16
- lsrs r2, r0, 16
-_080AB33C:
- lsls r0, r3, 5
- adds r0, r7
- adds r1, r0, r5
- lsrs r0, r2, 8
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1F
- bls _080AB352
- movs r0, 0x1F
- strb r0, [r1]
-_080AB352:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x12
- bls _080AB320
- b _080AB384
-_080AB35E:
- cmp r3, 0x12
- bhi _080AB384
- movs r6, 0x1F
-_080AB364:
- adds r1, r2, r4
- lsls r1, 16
- lsrs r2, r1, 16
- lsls r0, r3, 5
- adds r0, r7
- adds r0, r5
- lsrs r1, 24
- strb r1, [r0]
- cmp r1, 0x1F
- bls _080AB37A
- strb r6, [r0]
-_080AB37A:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x12
- bls _080AB364
-_080AB384:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r5, r0, 16
- cmp r5, 0x1F
- bls _080AB2C0
- mov r1, r9
- lsls r0, r1, 16
- lsrs r0, 16
- mov r12, r0
- cmp r0, 0x1
- bls _080AB2AC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80AB294
-
- thumb_func_start sub_80AB3A8
-sub_80AB3A8: @ 80AB3A8
- push {r4-r7,lr}
- ldr r0, =gUnknown_02038454
- ldr r1, =0x000006c6
- adds r2, r0, r1
- ldrb r1, [r2]
- adds r3, r0, 0
- cmp r1, 0x2
- beq _080AB42C
- movs r7, 0xD8
- lsls r7, 3
- adds r4, r3, r7
- ldr r1, =0x000006c1
- adds r0, r3, r1
- ldrb r7, [r4]
- mov r12, r7
- movs r6, 0
- ldrsb r6, [r4, r6]
- movs r5, 0
- ldrsb r5, [r0, r5]
- cmp r6, r5
- bne _080AB3E4
- movs r0, 0x3
- strb r0, [r2]
- b _080AB42C
- .pool
-_080AB3E4:
- ldr r0, =0x000006c3
- adds r2, r3, r0
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- ldr r7, =0x000006c2
- adds r1, r3, r7
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _080AB42C
- movs r0, 0
- strb r0, [r2]
- mov r0, r12
- cmp r6, r5
- bge _080AB414
- adds r0, 0x1
- b _080AB418
- .pool
-_080AB414:
- mov r0, r12
- subs r0, 0x1
-_080AB418:
- strb r0, [r4]
- movs r1, 0xD8
- lsls r1, 3
- adds r0, r3, r1
- movs r2, 0
- ldrsb r2, [r0, r2]
- movs r0, 0
- movs r1, 0x20
- bl pal_fade_2
-_080AB42C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80AB3A8
-
- thumb_func_start sub_80AB434
-sub_80AB434: @ 80AB434
- push {lr}
- ldr r2, =gUnknown_02038454
- ldr r0, =0x000006cb
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080AB452
- ldr r3, =0x000006ca
- adds r1, r2, r3
- movs r0, 0
- strb r0, [r1]
-_080AB452:
- movs r1, 0xDA
- lsls r1, 3
- adds r0, r2, r1
- ldrb r0, [r0]
- subs r0, 0x3
- cmp r0, 0xA
- bhi _080AB51C
- lsls r0, 2
- ldr r1, =_080AB47C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080AB47C:
- .4byte _080AB4A8
- .4byte _080AB4A8
- .4byte _080AB4A8
- .4byte _080AB4F4
- .4byte _080AB51C
- .4byte _080AB51C
- .4byte _080AB51C
- .4byte _080AB51C
- .4byte _080AB4A8
- .4byte _080AB4D0
- .4byte _080AB4A8
-_080AB4A8:
- bl sub_80AB54C
- lsls r0, 24
- cmp r0, 0
- bne _080AB53C
- ldr r0, =gUnknown_02038454
- movs r2, 0xD8
- lsls r2, 3
- adds r1, r0, r2
- movs r2, 0x3
- strb r2, [r1]
- ldr r3, =0x000006c6
- adds r0, r3
- strb r2, [r0]
- b _080AB53C
- .pool
-_080AB4D0:
- bl sub_80AB5AC
- lsls r0, 24
- cmp r0, 0
- bne _080AB53C
- ldr r1, =gUnknown_02038454
- movs r0, 0xD8
- lsls r0, 3
- adds r2, r1, r0
- movs r0, 0xFA
- strb r0, [r2]
- ldr r2, =0x000006c6
- adds r1, r2
- b _080AB538
- .pool
-_080AB4F4:
- bl sub_80AB604
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080AB53C
- ldr r0, =gUnknown_02038454
- movs r3, 0xD8
- lsls r3, 3
- adds r1, r0, r3
- strb r2, [r1]
- ldr r1, =0x000006c6
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
- b _080AB53C
- .pool
-_080AB51C:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080AB53C
- ldr r3, =0x000006c1
- adds r0, r2, r3
- ldrb r1, [r0]
- subs r3, 0x1
- adds r0, r2, r3
- strb r1, [r0]
- ldr r0, =0x000006c6
- adds r1, r2, r0
-_080AB538:
- movs r0, 0x3
- strb r0, [r1]
-_080AB53C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AB434
-
- thumb_func_start sub_80AB54C
-sub_80AB54C: @ 80AB54C
- push {r4,lr}
- sub sp, 0x4
- ldr r2, =gUnknown_02038454
- ldr r0, =0x000006c7
- adds r4, r2, r0
- ldrb r0, [r4]
- cmp r0, 0x10
- beq _080AB5A2
- adds r1, r0, 0x1
- strb r1, [r4]
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, 0xF
- bhi _080AB594
- movs r3, 0x10
- subs r3, r1
- lsls r3, 24
- lsrs r3, 24
- ldr r1, =0x000006c4
- adds r0, r2, r1
- ldrh r0, [r0]
- str r0, [sp]
- movs r0, 0
- movs r1, 0x20
- movs r2, 0x3
- bl sub_80AB848
- movs r0, 0x1
- b _080AB5A4
- .pool
-_080AB594:
- movs r0, 0
- movs r1, 0x20
- movs r2, 0x3
- bl pal_fade_2
- movs r0, 0x10
- strb r0, [r4]
-_080AB5A2:
- movs r0, 0
-_080AB5A4:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80AB54C
-
- thumb_func_start sub_80AB5AC
-sub_80AB5AC: @ 80AB5AC
- push {r4,lr}
- ldr r2, =gUnknown_02038454
- ldr r0, =0x000006c7
- adds r4, r2, r0
- ldrb r0, [r4]
- cmp r0, 0x10
- beq _080AB5FC
- adds r3, r0, 0x1
- strb r3, [r4]
- lsls r0, r3, 24
- lsrs r0, 24
- cmp r0, 0xF
- bhi _080AB5EC
- movs r0, 0x6
- negs r0, r0
- movs r1, 0x10
- subs r1, r3
- lsls r1, 24
- lsrs r1, 24
- ldr r3, =0x000006c4
- adds r2, r3
- ldrh r2, [r2]
- bl sub_80AB990
- movs r0, 0x1
- b _080AB5FE
- .pool
-_080AB5EC:
- movs r2, 0x6
- negs r2, r2
- movs r0, 0
- movs r1, 0x20
- bl pal_fade_2
- movs r0, 0x10
- strb r0, [r4]
-_080AB5FC:
- movs r0, 0
-_080AB5FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80AB5AC
-
- thumb_func_start sub_80AB604
-sub_80AB604: @ 80AB604
- push {lr}
- ldr r2, =gUnknown_02038454
- ldr r1, =0x000006c7
- adds r0, r2, r1
- ldrb r1, [r0]
- cmp r1, 0x10
- beq _080AB638
- adds r1, 0x1
- strb r1, [r0]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =0x000006c4
- adds r1, r2, r3
- ldrh r1, [r1]
- bl sub_80ABAB0
- movs r0, 0x1
- b _080AB63A
- .pool
-_080AB638:
- movs r0, 0
-_080AB63A:
- pop {r1}
- bx r1
- thumb_func_end sub_80AB604
-
- thumb_func_start nullsub_94
-nullsub_94: @ 80AB640
- bx lr
- thumb_func_end nullsub_94
-
- thumb_func_start pal_fade_2
-pal_fade_2: @ 80AB644
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- asrs r0, r2, 24
- cmp r0, 0
- ble _080AB754
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r6, r3, 4
- adds r0, r1, r3
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r4, r9
- bcc _080AB67C
- b _080AB82E
-_080AB67C:
- ldr r1, [sp]
- lsls r0, r1, 24
- asrs r0, 19
- str r0, [sp, 0x4]
-_080AB684:
- ldr r0, =gUnknown_03000F50
- ldr r0, [r0]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AB6C0
- lsls r1, r6, 1
- ldr r0, =gPlttBufferUnfaded
- adds r0, r1, r0
- ldr r2, =gPlttBufferFaded
- adds r1, r2
- movs r2, 0x8
- bl CpuFastSet
- adds r0, r6, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- mov r2, r9
- lsls r2, 16
- mov r8, r2
- adds r4, 0x1
- mov r12, r4
- b _080AB73E
- .pool
-_080AB6C0:
- cmp r0, 0x2
- beq _080AB6D4
- adds r1, r4, 0
- subs r1, 0x10
- ldr r2, =gUnknown_02038454
- ldr r3, =0x000006d5
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r1, r0
- bne _080AB6E4
-_080AB6D4:
- ldr r0, =gUnknown_020388B4
- b _080AB6EA
- .pool
-_080AB6E4:
- movs r3, 0x80
- lsls r3, 2
- adds r0, r2, r3
-_080AB6EA:
- ldr r1, [sp, 0x4]
- adds r5, r1, r0
- movs r7, 0
- mov r2, r9
- lsls r2, 16
- mov r8, r2
- adds r4, 0x1
- mov r12, r4
- ldr r3, =gPlttBufferFaded
- mov r10, r3
-_080AB6FE:
- adds r2, r6, 0
- lsls r0, r2, 1
- ldr r1, =gPlttBufferUnfaded
- adds r0, r1
- ldr r1, [r0]
- lsls r0, r1, 27
- lsrs r0, 27
- adds r0, r5, r0
- ldrb r4, [r0]
- lsls r0, r1, 22
- lsrs r0, 27
- adds r0, r5, r0
- ldrb r3, [r0]
- lsls r1, 17
- lsrs r1, 27
- adds r1, r5, r1
- ldrb r1, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r2, 1
- add r2, r10
- lsls r1, 10
- lsls r3, 5
- orrs r1, r3
- orrs r1, r4
- strh r1, [r2]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0xF
- bls _080AB6FE
-_080AB73E:
- mov r2, r12
- lsls r0, r2, 16
- lsrs r4, r0, 16
- cmp r0, r8
- bcc _080AB684
- b _080AB82E
- .pool
-_080AB754:
- cmp r0, 0
- bge _080AB81C
- mvns r0, r0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r6, r3, 4
- adds r0, r1, r3
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- adds r4, r3, 0
- cmp r4, r9
- bcs _080AB82E
-_080AB770:
- ldr r0, =gUnknown_03000F50
- ldr r0, [r0]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AB7AC
- lsls r1, r6, 1
- ldr r0, =gPlttBufferUnfaded
- adds r0, r1, r0
- ldr r2, =gPlttBufferFaded
- adds r1, r2
- movs r2, 0x8
- bl CpuFastSet
- adds r0, r6, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- mov r3, r9
- lsls r3, 16
- mov r8, r3
- adds r4, 0x1
- mov r12, r4
- b _080AB804
- .pool
-_080AB7AC:
- movs r7, 0
- mov r0, r9
- lsls r0, 16
- mov r8, r0
- adds r4, 0x1
- mov r12, r4
- ldr r1, =gUnknown_0854014C
- mov r10, r1
- ldr r2, [sp]
- lsls r0, r2, 24
- asrs r5, r0, 11
-_080AB7C2:
- lsls r0, r6, 1
- ldr r3, =gPlttBufferFaded
- adds r4, r0, r3
- ldr r1, =gPlttBufferUnfaded
- adds r0, r1
- ldrh r3, [r0]
- lsls r3, 16
- lsrs r0, r3, 17
- movs r1, 0xF
- ands r0, r1
- lsrs r1, r3, 18
- movs r2, 0xF0
- ands r1, r2
- orrs r0, r1
- lsrs r3, 19
- movs r2, 0xF0
- lsls r2, 4
- adds r1, r2, 0
- ands r3, r1
- orrs r0, r3
- lsls r0, 1
- adds r0, r5
- add r0, r10
- ldrh r0, [r0]
- strh r0, [r4]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0xF
- bls _080AB7C2
-_080AB804:
- mov r3, r12
- lsls r0, r3, 16
- lsrs r4, r0, 16
- cmp r0, r8
- bcc _080AB770
- b _080AB82E
- .pool
-_080AB81C:
- lsls r1, r4, 5
- ldr r0, =gPlttBufferUnfaded
- adds r0, r1, r0
- ldr r2, =gPlttBufferFaded
- adds r1, r2
- mov r3, r9
- lsls r2, r3, 3
- bl CpuFastSet
-_080AB82E:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end pal_fade_2
-
- thumb_func_start sub_80AB848
-sub_80AB848: @ 80AB848
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- ldr r4, [sp, 0x34]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- mov r1, sp
- strh r4, [r1]
- ldr r1, [sp]
- lsls r3, r1, 27
- lsrs r3, 27
- str r3, [sp, 0x4]
- lsls r3, r1, 22
- lsrs r3, 27
- str r3, [sp, 0x8]
- lsls r1, 17
- lsrs r1, 27
- str r1, [sp, 0xC]
- lsls r6, r0, 4
- mov r3, r10
- adds r1, r3, r0
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r2, r1
- lsrs r2, 24
- adds r4, r0, 0
- cmp r4, r10
- bcs _080AB974
- lsls r0, r2, 24
- asrs r0, 19
- str r0, [sp, 0x10]
-_080AB8A0:
- ldr r0, =gUnknown_03000F50
- ldr r0, [r0]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AB8D4
- mov r0, sp
- ldrh r3, [r0]
- adds r0, r6, 0
- movs r1, 0x10
- mov r2, r8
- bl BlendPalette
- adds r0, r6, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- mov r3, r10
- lsls r3, 16
- mov r9, r3
- adds r4, 0x1
- mov r12, r4
- b _080AB96A
- .pool
-_080AB8D4:
- cmp r0, 0x1
- bne _080AB8E4
- ldr r0, =gUnknown_02038654
- ldr r1, [sp, 0x10]
- adds r5, r1, r0
- b _080AB8EA
- .pool
-_080AB8E4:
- ldr r0, =gUnknown_020388B4
- ldr r3, [sp, 0x10]
- adds r5, r3, r0
-_080AB8EA:
- movs r7, 0
- mov r0, r10
- lsls r0, 16
- mov r9, r0
- adds r4, 0x1
- mov r12, r4
-_080AB8F6:
- adds r4, r6, 0
- lsls r0, r4, 1
- ldr r1, =gPlttBufferUnfaded
- adds r0, r1
- ldr r1, [r0]
- lsls r0, r1, 27
- lsrs r0, 27
- adds r0, r5, r0
- ldrb r3, [r0]
- lsls r0, r1, 22
- lsrs r0, 27
- adds r0, r5, r0
- ldrb r2, [r0]
- lsls r1, 17
- lsrs r1, 27
- adds r1, r5, r1
- ldrb r1, [r1]
- ldr r6, [sp, 0x4]
- subs r0, r6, r3
- mov r6, r8
- muls r6, r0
- adds r0, r6, 0
- asrs r0, 4
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- ldr r6, [sp, 0x8]
- subs r0, r6, r2
- mov r6, r8
- muls r6, r0
- adds r0, r6, 0
- asrs r0, 4
- adds r2, r0
- lsls r2, 24
- ldr r6, [sp, 0xC]
- subs r0, r6, r1
- mov r6, r8
- muls r6, r0
- adds r0, r6, 0
- asrs r0, 4
- adds r1, r0
- lsls r1, 24
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r4, 1
- ldr r0, =gPlttBufferFaded
- adds r4, r0
- lsrs r1, 14
- lsrs r2, 19
- orrs r1, r2
- orrs r1, r3
- strh r1, [r4]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0xF
- bls _080AB8F6
-_080AB96A:
- mov r1, r12
- lsls r0, r1, 16
- lsrs r4, r0, 16
- cmp r0, r9
- bcc _080AB8A0
-_080AB974:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AB848
-
- thumb_func_start sub_80AB990
-sub_80AB990: @ 80AB990
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r1, 24
- lsrs r6, r1, 24
- mov r1, sp
- strh r2, [r1]
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- eors r0, r1
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldr r0, [sp]
- lsls r1, r0, 27
- lsrs r1, 27
- str r1, [sp, 0x8]
- lsls r1, r0, 22
- lsrs r1, 27
- str r1, [sp, 0xC]
- lsls r0, 17
- lsrs r0, 27
- mov r10, r0
- movs r5, 0
- movs r4, 0
-_080AB9C8:
- ldr r0, =gUnknown_03000F50
- ldr r0, [r0]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AB9F4
- mov r0, sp
- ldrh r3, [r0]
- adds r0, r5, 0
- movs r1, 0x10
- adds r2, r6, 0
- bl BlendPalette
- adds r0, r5, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, 0x1
- mov r8, r4
- b _080ABA8A
- .pool
-_080AB9F4:
- movs r0, 0
- mov r12, r0
- ldr r1, [sp, 0x4]
- lsls r0, r1, 24
- adds r4, 0x1
- mov r8, r4
- movs r7, 0x1E
- asrs r0, 11
- mov r9, r0
-_080ABA06:
- adds r4, r5, 0
- lsls r0, r4, 1
- ldr r5, =gPlttBufferUnfaded
- adds r0, r5
- ldr r0, [r0]
- lsls r2, r0, 27
- lsrs r2, 27
- lsls r1, r0, 22
- lsrs r1, 27
- lsls r0, 17
- lsrs r0, 27
- ands r0, r7
- lsls r0, 7
- ands r1, r7
- lsls r1, 3
- orrs r0, r1
- ands r2, r7
- lsls r0, 1
- orrs r0, r2
- add r0, r9
- ldr r1, =gUnknown_0854014C
- adds r0, r1
- ldr r1, [r0]
- lsls r3, r1, 27
- lsrs r3, 27
- lsls r2, r1, 22
- lsrs r2, 27
- lsls r1, 17
- lsrs r1, 27
- ldr r5, [sp, 0x8]
- subs r0, r5, r3
- muls r0, r6
- asrs r0, 4
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- ldr r5, [sp, 0xC]
- subs r0, r5, r2
- muls r0, r6
- asrs r0, 4
- adds r2, r0
- lsls r2, 24
- mov r5, r10
- subs r0, r5, r1
- muls r0, r6
- asrs r0, 4
- adds r1, r0
- lsls r1, 24
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r4, 1
- ldr r0, =gPlttBufferFaded
- adds r4, r0
- lsrs r1, 14
- lsrs r2, 19
- orrs r1, r2
- orrs r1, r3
- strh r1, [r4]
- mov r0, r12
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r12, r0
- cmp r0, 0xF
- bls _080ABA06
-_080ABA8A:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r4, r0, 16
- cmp r4, 0x1F
- bls _080AB9C8
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AB990
-
- thumb_func_start sub_80ABAB0
-sub_80ABAB0: @ 80ABAB0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r3, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r3, 16
- lsrs r3, 16
- mov r0, sp
- strh r3, [r0]
- movs r1, 0x80
- lsls r1, 1
- movs r0, 0
- adds r2, r7, 0
- bl BlendPalette
- ldr r0, [sp]
- lsls r1, r0, 27
- lsrs r1, 27
- str r1, [sp, 0x4]
- lsls r1, r0, 22
- lsrs r1, 27
- str r1, [sp, 0x8]
- lsls r0, 17
- lsrs r0, 27
- mov r10, r0
- movs r4, 0x10
-_080ABAEC:
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_80ABC00
- lsls r0, 24
- cmp r0, 0
- beq _080ABB9C
- adds r0, r4, 0x1
- lsls r1, r0, 20
- lsrs r1, 16
- mov r12, r1
- lsls r1, r4, 20
- lsrs r6, r1, 16
- mov r9, r0
- cmp r6, r12
- bcs _080ABBB0
- movs r0, 0x1C
- mov r8, r0
-_080ABB10:
- lsls r5, r6, 1
- ldr r0, =gPlttBufferUnfaded
- adds r0, r5, r0
- ldr r2, [r0]
- lsls r4, r2, 27
- lsrs r4, 27
- lsls r3, r2, 22
- lsrs r3, 27
- lsls r2, 17
- lsrs r2, 27
- mov r0, r8
- subs r1, r0, r4
- lsls r0, r1, 1
- adds r0, r1
- asrs r0, 2
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0x1F
- subs r1, r3
- lsls r0, r1, 1
- adds r0, r1
- asrs r0, 2
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- mov r0, r8
- subs r1, r0, r2
- lsls r0, r1, 1
- adds r0, r1
- asrs r0, 2
- adds r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldr r1, [sp, 0x4]
- subs r0, r1, r4
- muls r0, r7
- asrs r0, 4
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, [sp, 0x8]
- subs r0, r1, r3
- muls r0, r7
- asrs r0, 4
- adds r3, r0
- lsls r3, 24
- mov r1, r10
- subs r0, r1, r2
- muls r0, r7
- asrs r0, 4
- adds r2, r0
- lsls r2, 24
- ldr r0, =gPlttBufferFaded
- adds r5, r0
- lsrs r2, 14
- lsrs r3, 19
- orrs r2, r3
- orrs r2, r4
- strh r2, [r5]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r12
- bcc _080ABB10
- b _080ABBB0
- .pool
-_080ABB9C:
- lsls r0, r4, 20
- lsrs r0, 16
- mov r1, sp
- ldrh r3, [r1]
- movs r1, 0x10
- adds r2, r7, 0
- bl BlendPalette
- adds r4, 0x1
- mov r9, r4
-_080ABBB0:
- mov r1, r9
- lsls r0, r1, 16
- lsrs r4, r0, 16
- cmp r4, 0x1F
- bls _080ABAEC
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80ABAB0
-
- thumb_func_start sub_80ABBCC
-sub_80ABBCC: @ 80ABBCC
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r3, =gUnknown_02038454
- ldr r0, =0x000006fa
- adds r1, r3, r0
- ldrb r0, [r1]
- cmp r0, 0x5
- bhi _080ABBEE
- ldr r4, =0x000006f4
- adds r0, r3, r4
- ldrb r3, [r1]
- adds r0, r3
- strb r2, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080ABBEE:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ABBCC
-
- thumb_func_start sub_80ABC00
-sub_80ABC00: @ 80ABC00
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r1, 0
- ldr r2, =gUnknown_02038454
- ldr r4, =0x000006fa
- adds r0, r2, r4
- ldrb r0, [r0]
- cmp r1, r0
- bcs _080ABC3E
- ldr r5, =0x000006f4
- adds r4, r2, r5
- adds r2, r0, 0
-_080ABC1A:
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, r3
- bne _080ABC34
- movs r0, 0x1
- b _080ABC40
- .pool
-_080ABC34:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r2
- bcc _080ABC1A
-_080ABC3E:
- movs r0, 0
-_080ABC40:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80ABC00
-
- thumb_func_start sub_80ABC48
-sub_80ABC48: @ 80ABC48
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, =gUnknown_02038454
- ldr r1, =0x000006c6
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _080ABC6E
- lsls r2, r4, 24
- asrs r2, 24
- movs r0, 0
- movs r1, 0x20
- bl pal_fade_2
- movs r1, 0xD8
- lsls r1, 3
- adds r0, r5, r1
- strb r4, [r0]
-_080ABC6E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ABC48
-
- thumb_func_start sub_80ABC7C
-sub_80ABC7C: @ 80ABC7C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r3, =gUnknown_02038454
- ldr r0, =0x000006c6
- adds r2, r3, r0
- ldrb r0, [r2]
- cmp r0, 0x3
- bne _080ABCBC
- movs r1, 0
- strb r1, [r2]
- movs r2, 0xD8
- lsls r2, 3
- adds r0, r3, r2
- strb r4, [r0]
- adds r2, 0x1
- adds r0, r3, r2
- strb r5, [r0]
- adds r2, 0x2
- adds r0, r3, r2
- strb r1, [r0]
- ldr r1, =0x000006c2
- adds r0, r3, r1
- strb r6, [r0]
- lsls r0, r4, 24
- asrs r0, 24
- bl sub_80ABC48
-_080ABCBC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ABC7C
-
- thumb_func_start FadeScreen
-FadeScreen: @ 80ABCD0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- cmp r0, 0x1
- beq _080ABD08
- cmp r0, 0x1
- bgt _080ABCEC
- cmp r0, 0
- beq _080ABCF6
- b _080ABDE4
-_080ABCEC:
- cmp r2, 0x2
- beq _080ABCFC
- cmp r2, 0x3
- beq _080ABD0C
- b _080ABDE4
-_080ABCF6:
- movs r4, 0
- movs r1, 0
- b _080ABD10
-_080ABCFC:
- ldr r4, =0x0000ffff
- movs r1, 0
- b _080ABD10
- .pool
-_080ABD08:
- movs r4, 0
- b _080ABD0E
-_080ABD0C:
- ldr r4, =0x0000ffff
-_080ABD0E:
- movs r1, 0x1
-_080ABD10:
- ldr r0, =gUnknown_02038454
- movs r2, 0xDA
- lsls r2, 3
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x3
- blt _080ABD38
- cmp r0, 0x6
- ble _080ABD2A
- cmp r0, 0xD
- bgt _080ABD38
- cmp r0, 0xB
- blt _080ABD38
-_080ABD2A:
- movs r2, 0x1
- b _080ABD3A
- .pool
-_080ABD38:
- movs r2, 0
-_080ABD3A:
- cmp r1, 0
- beq _080ABD7C
- cmp r2, 0
- beq _080ABD4E
- ldr r0, =gPlttBufferFaded
- ldr r1, =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 1
- bl CpuFastSet
-_080ABD4E:
- movs r0, 0x1
- negs r0, r0
- lsls r1, r5, 24
- asrs r1, 24
- str r4, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =gUnknown_02038454
- ldr r3, =0x000006c6
- adds r0, r3
- movs r1, 0x2
- strb r1, [r0]
- b _080ABDE4
- .pool
-_080ABD7C:
- ldr r1, =gUnknown_02038454
- ldr r3, =0x000006c4
- adds r0, r1, r3
- strh r4, [r0]
- cmp r2, 0
- beq _080ABDA0
- ldr r0, =0x000006c7
- adds r1, r0
- movs r0, 0
- strb r0, [r1]
- b _080ABDB2
- .pool
-_080ABDA0:
- movs r0, 0x1
- negs r0, r0
- lsls r1, r5, 24
- asrs r1, 24
- str r4, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_080ABDB2:
- ldr r4, =gUnknown_02038454
- ldr r1, =0x000006c6
- adds r0, r4, r1
- movs r1, 0
- movs r5, 0x1
- strb r5, [r0]
- ldr r2, =0x000006ca
- adds r0, r4, r2
- strb r5, [r0]
- ldr r3, =0x000006cb
- adds r0, r4, r3
- strb r1, [r0]
- movs r1, 0xE6
- lsls r1, 3
- adds r0, r4, r1
- ldrb r0, [r0]
- adds r2, 0x68
- adds r1, r4, r2
- ldrb r1, [r1]
- bl sub_80AC124
- movs r3, 0xD9
- lsls r3, 3
- adds r4, r3
- strb r5, [r4]
-_080ABDE4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end FadeScreen
-
- thumb_func_start IsWeatherNotFadingIn
-IsWeatherNotFadingIn: @ 80ABDFC
- ldr r0, =gUnknown_02038454
- ldr r1, =0x000006c6
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- bx lr
- .pool
- thumb_func_end IsWeatherNotFadingIn
-
- thumb_func_start UpdateSpritePaletteWithWeather
-@ void UpdateSpritePaletteWithWeather(u8 a1)
-UpdateSpritePaletteWithWeather: @ 80ABE18
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0x80
- lsls r1, 13
- adds r0, r1
- lsrs r4, r0, 16
- ldr r5, =gUnknown_02038454
- ldr r2, =0x000006c6
- adds r0, r5, r2
- ldrb r0, [r0]
- adds r1, r5, 0
- cmp r0, 0x1
- beq _080ABE60
- cmp r0, 0x2
- beq _080ABEAC
- adds r2, 0xA
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _080ABEE4
- lsls r0, r4, 24
- lsrs r0, 24
- subs r2, 0x10
- adds r1, r2
- movs r2, 0
- ldrsb r2, [r1, r2]
- movs r1, 0x1
- bl pal_fade_2
- b _080ABEF4
- .pool
-_080ABE60:
- ldr r2, =0x000006ca
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080ABEF4
- adds r2, 0x6
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _080ABE7C
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_80ABBCC
-_080ABE7C:
- lsls r0, r4, 20
- lsrs r4, r0, 16
- movs r2, 0
- ldr r6, =gPlttBufferFaded
- ldr r0, =0x000006c4
- adds r3, r5, r0
-_080ABE88:
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r6
- ldrh r1, [r3]
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xF
- bls _080ABE88
- b _080ABEF4
- .pool
-_080ABEAC:
- lsls r0, r4, 20
- lsrs r4, r0, 16
- lsls r1, r4, 1
- ldr r0, =gPlttBufferFaded
- adds r0, r1, r0
- ldr r2, =gPlttBufferUnfaded
- adds r1, r2
- movs r2, 0x8
- bl CpuFastSet
- ldr r0, =gPaletteFade
- ldrh r2, [r0, 0x4]
- lsls r2, 21
- lsrs r2, 27
- ldrh r3, [r0, 0x6]
- lsls r3, 17
- lsrs r3, 17
- adds r0, r4, 0
- movs r1, 0x10
- bl BlendPalette
- b _080ABEF4
- .pool
-_080ABEE4:
- lsls r0, r4, 20
- lsrs r4, r0, 16
- ldr r3, =0x000073fc
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0xC
- bl BlendPalette
-_080ABEF4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end UpdateSpritePaletteWithWeather
-
- thumb_func_start ApplyWeatherGammaShiftToPal
-ApplyWeatherGammaShiftToPal: @ 80ABF00
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02038454
- movs r2, 0xD8
- lsls r2, 3
- adds r1, r2
- movs r2, 0
- ldrsb r2, [r1, r2]
- movs r1, 0x1
- bl pal_fade_2
- pop {r0}
- bx r0
- .pool
- thumb_func_end ApplyWeatherGammaShiftToPal
-
- thumb_func_start sub_80ABF20
-sub_80ABF20: @ 80ABF20
- push {lr}
- ldr r1, =gUnknown_02038454
- ldr r2, =0x000006c6
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080ABF3C
- movs r0, 0
- b _080ABF42
- .pool
-_080ABF3C:
- ldr r2, =0x000006ca
- adds r0, r1, r2
- ldrb r0, [r0]
-_080ABF42:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80ABF20
-
- thumb_func_start sub_80ABF4C
-sub_80ABF4C: @ 80ABF4C
- push {r4,lr}
- ldr r4, =gUnknown_02038454
- ldr r1, =0x000006d4
- adds r4, r1
- ldrb r1, [r4]
- lsls r1, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- ldrb r0, [r4]
- bl UpdateSpritePaletteWithWeather
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ABF4C
-
- thumb_func_start sub_80ABF7C
-sub_80ABF7C: @ 80ABF7C
- movs r2, 0x20
- strb r2, [r0]
- strb r2, [r1]
- bx lr
- thumb_func_end sub_80ABF7C
-
- thumb_func_start sub_80ABF84
-sub_80ABF84: @ 80ABF84
- ldr r0, =gUnknown_02038454
- ldr r2, =0x0000074d
- adds r1, r0, r2
- movs r2, 0x1
- strb r2, [r1]
- ldr r1, =0x0000074e
- adds r0, r1
- strb r2, [r0]
- bx lr
- .pool
- thumb_func_end sub_80ABF84
-
- thumb_func_start sub_80ABFA4
-sub_80ABFA4: @ 80ABFA4
- push {r4,lr}
- ldr r1, =gUnknown_02038454
- ldr r0, =0x0000074d
- adds r4, r1, r0
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x1F
- bgt _080ABFD8
- ldr r0, =0x0000074e
- adds r1, r0
- adds r0, r4, 0
- bl sub_80ABF7C
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x1F
- bgt _080ABFD8
- movs r0, 0x1
- b _080ABFDA
- .pool
-_080ABFD8:
- movs r0, 0
-_080ABFDA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80ABFA4
-
- thumb_func_start sub_80ABFE0
-sub_80ABFE0: @ 80ABFE0
- push {lr}
- lsls r0, 24
- asrs r0, 24
- mvns r0, r0
- bl sub_80ABC48
- pop {r0}
- bx r0
- thumb_func_end sub_80ABFE0
-
- thumb_func_start sub_80ABFF0
-sub_80ABFF0: @ 80ABFF0
- ldr r1, =gUnknown_02038454
- ldr r2, =0x0000073c
- adds r0, r1, r2
- movs r2, 0
- strh r2, [r0]
- movs r3, 0xE8
- lsls r3, 3
- adds r0, r1, r3
- strh r2, [r0]
- adds r3, 0x2
- adds r0, r1, r3
- strh r2, [r0]
- ldr r0, =0x0000073e
- adds r1, r0
- strh r2, [r1]
- bx lr
- .pool
- thumb_func_end sub_80ABFF0
-
- thumb_func_start sub_80AC01C
-sub_80AC01C: @ 80AC01C
- push {r4-r7,lr}
- ldr r5, =gUnknown_02038454
- ldr r0, =0x00000742
- adds r7, r5, r0
- movs r2, 0
- ldrsh r1, [r7, r2]
- cmp r1, 0x1
- beq _080AC090
- cmp r1, 0x1
- bgt _080AC040
- cmp r1, 0
- beq _080AC046
- b _080AC118
- .pool
-_080AC040:
- cmp r1, 0x2
- beq _080AC0E4
- b _080AC118
-_080AC046:
- movs r3, 0xE8
- lsls r3, 3
- adds r6, r5, r3
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080AC118
- strh r1, [r6]
- ldr r0, =0x0000073c
- adds r4, r5, r0
- ldrh r0, [r4]
- adds r1, r0, 0x1
- strh r1, [r4]
- lsls r0, 24
- asrs r0, 24
- bl sub_80ABFE0
- ldrh r1, [r4]
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- ble _080AC118
- ldr r3, =0x0000073e
- adds r0, r5, r3
- strh r1, [r0]
- movs r0, 0x1
- strh r0, [r7]
- movs r0, 0x3C
- strh r0, [r6]
- b _080AC118
- .pool
-_080AC090:
- movs r0, 0xE8
- lsls r0, 3
- adds r2, r5, r0
- ldrh r0, [r2]
- adds r0, 0x3
- movs r1, 0x7F
- ands r0, r1
- strh r0, [r2]
- ldr r1, =gSineTable
- movs r3, 0
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- subs r0, 0x1
- asrs r0, 6
- adds r0, 0x2
- ldr r2, =0x0000073c
- adds r6, r5, r2
- adds r2, r0, 0
- strh r0, [r6]
- ldr r3, =0x0000073e
- adds r4, r5, r3
- movs r3, 0
- ldrsh r1, [r4, r3]
- cmp r0, r1
- beq _080AC0D0
- lsls r0, r2, 24
- asrs r0, 24
- bl sub_80ABFE0
-_080AC0D0:
- ldrh r0, [r6]
- strh r0, [r4]
- b _080AC118
- .pool
-_080AC0E4:
- movs r0, 0xE8
- lsls r0, 3
- adds r1, r5, r0
- ldrh r0, [r1]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080AC118
- strh r6, [r1]
- ldr r1, =0x0000073c
- adds r4, r5, r1
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- lsls r0, 24
- asrs r0, 24
- bl sub_80ABFE0
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- bne _080AC118
- strh r6, [r7]
-_080AC118:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC01C
-
- thumb_func_start sub_80AC124
-sub_80AC124: @ 80AC124
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r3, =gUnknown_02038454
- movs r4, 0xE6
- lsls r4, 3
- adds r2, r3, r4
- strh r0, [r2]
- adds r4, 0x2
- adds r2, r3, r4
- strh r1, [r2]
- adds r4, 0x2
- adds r2, r3, r4
- strh r0, [r2]
- ldr r2, =0x00000736
- adds r3, r2
- strh r1, [r3]
- lsls r1, 8
- orrs r1, r0
- movs r0, 0x52
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC124
-
- thumb_func_start sub_80AC164
-sub_80AC164: @ 80AC164
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r3, =gUnknown_02038454
- ldr r5, =0x00000734
- adds r4, r3, r5
- movs r5, 0
- strh r0, [r4]
- ldr r4, =0x00000736
- adds r0, r3, r4
- strh r1, [r0]
- ldr r1, =0x0000073a
- adds r0, r3, r1
- strb r2, [r0]
- adds r4, 0x3
- adds r0, r3, r4
- strb r5, [r0]
- movs r0, 0xE7
- lsls r0, 3
- adds r3, r0
- strb r5, [r3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC164
-
- thumb_func_start sub_80AC1A8
-sub_80AC1A8: @ 80AC1A8
- push {r4-r6,lr}
- ldr r0, =gUnknown_02038454
- movs r1, 0xE6
- lsls r1, 3
- adds r3, r0, r1
- ldr r2, [r3]
- ldr r6, =0x00000734
- adds r4, r0, r6
- ldr r1, [r4]
- adds r5, r0, 0
- cmp r2, r1
- beq _080AC26C
- ldr r0, =0x00000739
- adds r2, r5, r0
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- ldr r6, =0x0000073a
- adds r1, r5, r6
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bls _080AC238
- movs r0, 0
- strb r0, [r2]
- movs r0, 0xE7
- lsls r0, 3
- adds r1, r5, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080AC210
- ldrh r1, [r3]
- adds r2, r1, 0
- ldrh r0, [r4]
- cmp r2, r0
- bcs _080AC230
- adds r0, r1, 0x1
- b _080AC236
- .pool
-_080AC210:
- ldr r1, =0x00000732
- adds r3, r5, r1
- ldr r2, =0x00000736
- adds r0, r5, r2
- ldrh r1, [r3]
- adds r2, r1, 0
- ldrh r0, [r0]
- cmp r2, r0
- bcs _080AC230
- adds r0, r1, 0x1
- b _080AC236
- .pool
-_080AC230:
- cmp r2, r0
- bls _080AC238
- subs r0, r1, 0x1
-_080AC236:
- strh r0, [r3]
-_080AC238:
- ldr r6, =0x00000732
- adds r0, r5, r6
- ldrh r1, [r0]
- lsls r1, 8
- movs r0, 0xE6
- lsls r0, 3
- adds r4, r5, r0
- ldrh r0, [r4]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, [r4]
- ldr r2, =0x00000734
- adds r0, r5, r2
- ldr r0, [r0]
- cmp r1, r0
- beq _080AC26C
- movs r0, 0
- b _080AC26E
- .pool
-_080AC26C:
- movs r0, 0x1
-_080AC26E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80AC1A8
-
- thumb_func_start sub_80AC274
-sub_80AC274: @ 80AC274
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x9
- bhi _080AC306
- lsls r0, 2
- ldr r1, =_080AC290
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080AC290:
- .4byte _080AC2B8
- .4byte _080AC2C0
- .4byte _080AC2C8
- .4byte _080AC2D0
- .4byte _080AC2D8
- .4byte _080AC2E0
- .4byte _080AC2E8
- .4byte _080AC2F0
- .4byte _080AC2F8
- .4byte _080AC300
-_080AC2B8:
- movs r0, 0x1
- bl SetWeather
- b _080AC306
-_080AC2C0:
- movs r0, 0x2
- bl SetWeather
- b _080AC306
-_080AC2C8:
- movs r0, 0x3
- bl SetWeather
- b _080AC306
-_080AC2D0:
- movs r0, 0x4
- bl SetWeather
- b _080AC306
-_080AC2D8:
- movs r0, 0x5
- bl SetWeather
- b _080AC306
-_080AC2E0:
- movs r0, 0x6
- bl SetWeather
- b _080AC306
-_080AC2E8:
- movs r0, 0x9
- bl SetWeather
- b _080AC306
-_080AC2F0:
- movs r0, 0x7
- bl SetWeather
- b _080AC306
-_080AC2F8:
- movs r0, 0x8
- bl SetWeather
- b _080AC306
-_080AC300:
- movs r0, 0xB
- bl SetWeather
-_080AC306:
- pop {r0}
- bx r0
- thumb_func_end sub_80AC274
-
- thumb_func_start weather_get_current
-weather_get_current: @ 80AC30C
- ldr r0, =gUnknown_02038454
- movs r1, 0xDA
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end weather_get_current
-
- thumb_func_start sub_80AC31C
-sub_80AC31C: @ 80AC31C
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r1, =gUnknown_02038454
- ldr r3, =0x000006c6
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080AC36E
- cmp r2, 0x53
- beq _080AC354
- cmp r2, 0x53
- bgt _080AC344
- cmp r2, 0x51
- beq _080AC360
- b _080AC36E
- .pool
-_080AC344:
- cmp r2, 0x55
- bne _080AC36E
- ldr r0, =0x000006dd
- adds r1, r0
- movs r0, 0
- b _080AC366
- .pool
-_080AC354:
- ldr r3, =0x000006dd
- adds r1, r3
- movs r0, 0x1
- b _080AC366
- .pool
-_080AC360:
- ldr r0, =0x000006dd
- adds r1, r0
- movs r0, 0x2
-_080AC366:
- strb r0, [r1]
- adds r0, r2, 0
- bl PlaySE
-_080AC36E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC31C
-
- thumb_func_start play_some_sound
-play_some_sound: @ 80AC378
- push {lr}
- bl IsSpecialSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _080AC3B6
- ldr r0, =gUnknown_02038454
- ldr r1, =0x000006dd
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080AC3A8
- cmp r0, 0x1
- bgt _080AC3B0
- cmp r0, 0
- bne _080AC3B0
- movs r0, 0x56
- bl PlaySE
- b _080AC3B6
- .pool
-_080AC3A8:
- movs r0, 0x54
- bl PlaySE
- b _080AC3B6
-_080AC3B0:
- movs r0, 0x52
- bl PlaySE
-_080AC3B6:
- pop {r0}
- bx r0
- thumb_func_end play_some_sound
-
- thumb_func_start IsWeatherChangeComplete
-IsWeatherChangeComplete: @ 80AC3BC
- ldr r0, =gUnknown_02038454
- ldr r1, =0x000006d3
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end IsWeatherChangeComplete
-
- thumb_func_start sub_80AC3D0
-sub_80AC3D0: @ 80AC3D0
- ldr r0, =gUnknown_02038454
- ldr r1, =0x000006c6
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_80AC3D0
-
- thumb_func_start sub_80AC3E4
-sub_80AC3E4: @ 80AC3E4
- ldr r0, =gUnknown_02038454
- ldr r1, =0x000006c6
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_80AC3E4
-
- thumb_func_start PreservePaletteInWeather
-PreservePaletteInWeather: @ 80AC3F8
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0854C250
- ldr r5, =gUnknown_02038BA4
- adds r1, r5, 0
- movs r2, 0x10
- bl CpuSet
- adds r4, r5
- movs r0, 0
- strb r0, [r4]
- ldr r0, =gUnknown_03000F50
- str r5, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PreservePaletteInWeather
-
- thumb_func_start ResetPreservedPalettesInWeather
-ResetPreservedPalettesInWeather: @ 80AC428
- ldr r1, =gUnknown_03000F50
- ldr r0, =gUnknown_0854C250
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end ResetPreservedPalettesInWeather
-
- thumb_func_start sub_80AC438
-sub_80AC438: @ 80AC438
- push {lr}
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r2, =0x000006c1
- adds r1, r0, r2
- movs r2, 0
- strb r2, [r1]
- ldr r1, =0x000006c2
- adds r3, r0, r1
- movs r1, 0x14
- strb r1, [r3]
- ldr r3, =0x000006d2
- adds r1, r0, r3
- strb r2, [r1]
- subs r3, 0x6
- adds r1, r0, r3
- strh r2, [r1]
- ldr r1, =0x000006de
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AC46C
- movs r0, 0
- movs r1, 0x10
- bl sub_80AC124
-_080AC46C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC438
-
- thumb_func_start sub_80AC484
-sub_80AC484: @ 80AC484
- push {r4,lr}
- bl sub_80AC438
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AC4A4
- adds r4, r1, r2
-_080AC49A:
- bl sub_80AC4B4
- ldrb r0, [r4]
- cmp r0, 0
- beq _080AC49A
-_080AC4A4:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC484
-
- thumb_func_start sub_80AC4B4
-sub_80AC4B4: @ 80AC4B4
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- ldr r0, =0x000006cc
- adds r4, r5, r0
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080AC4E4
- cmp r0, 0x1
- bgt _080AC4D8
- cmp r0, 0
- beq _080AC4DE
- b _080AC508
- .pool
-_080AC4D8:
- cmp r0, 0x2
- beq _080AC4F0
- b _080AC508
-_080AC4DE:
- bl sub_80AC594
- b _080AC502
-_080AC4E4:
- movs r0, 0xC
- movs r1, 0x8
- movs r2, 0x1
- bl sub_80AC164
- b _080AC502
-_080AC4F0:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080AC508
- ldr r0, =0x000006d2
- adds r1, r5, r0
- movs r0, 0x1
- strb r0, [r1]
-_080AC502:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080AC508:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC4B4
-
- thumb_func_start sub_80AC514
-sub_80AC514: @ 80AC514
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006ce
- adds r4, r0, r1
- ldrh r0, [r4]
- cmp r0, 0
- beq _080AC534
- cmp r0, 0x1
- beq _080AC540
- movs r0, 0
- b _080AC556
- .pool
-_080AC534:
- movs r0, 0
- movs r1, 0x10
- movs r2, 0x1
- bl sub_80AC164
- b _080AC54E
-_080AC540:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080AC554
- bl sub_80AC660
-_080AC54E:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080AC554:
- movs r0, 0x1
-_080AC556:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80AC514
-
- thumb_func_start sub_80AC55C
-sub_80AC55C: @ 80AC55C
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006c1
- adds r2, r1, r0
- movs r0, 0
- strb r0, [r2]
- ldr r0, =0x000006c2
- adds r1, r0
- movs r0, 0x14
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80AC55C
-
- thumb_func_start sub_80AC580
-sub_80AC580: @ 80AC580
- push {lr}
- bl sub_80AC55C
- pop {r0}
- bx r0
- thumb_func_end sub_80AC580
-
- thumb_func_start nullsub_95
-nullsub_95: @ 80AC58C
- bx lr
- thumb_func_end nullsub_95
-
- thumb_func_start sub_80AC590
-sub_80AC590: @ 80AC590
- movs r0, 0
- bx lr
- thumb_func_end sub_80AC590
-
- thumb_func_start sub_80AC594
-sub_80AC594: @ 80AC594
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006de
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080AC650
- ldr r0, =sCloudSpriteSheet
- bl LoadSpriteSheet
- ldr r0, =gUnknown_0854C290
- bl sub_80ABF4C
- movs r5, 0
-_080AC5B2:
- ldr r0, =sCloudSpriteTemplate
- movs r1, 0
- movs r2, 0
- movs r3, 0xFF
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _080AC628
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- lsls r2, r5, 2
- movs r0, 0xFA
- lsls r0, 1
- adds r1, r0
- adds r1, r2
- lsls r4, r3, 4
- adds r4, r3
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- str r4, [r1]
- ldr r0, =gUnknown_0854FB50
- adds r2, r0
- ldrh r0, [r2]
- adds r0, 0x7
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r2, 0x2]
- adds r1, 0x7
- lsls r1, 16
- asrs r1, 16
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- bl sub_8093038
- adds r4, 0x3E
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- b _080AC63A
- .pool
-_080AC628:
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- lsls r0, r5, 2
- movs r2, 0xFA
- lsls r2, 1
- adds r1, r2
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_080AC63A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x2
- bls _080AC5B2
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006de
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_080AC650:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC594
-
- thumb_func_start sub_80AC660
-sub_80AC660: @ 80AC660
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006de
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080AC6A4
- movs r4, 0
- movs r0, 0xFA
- lsls r0, 1
- adds r5, r1, r0
-_080AC678:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080AC686
- bl DestroySprite
-_080AC686:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x2
- bls _080AC678
- movs r0, 0x90
- lsls r0, 5
- bl FreeSpriteTilesByTag
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006de
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080AC6A4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC660
-
- thumb_func_start sub_80AC6B4
-sub_80AC6B4: @ 80AC6B4
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- movs r1, 0x1
- ands r0, r1
- strh r0, [r2, 0x2E]
- cmp r0, 0
- beq _080AC6CC
- ldrh r0, [r2, 0x20]
- subs r0, 0x1
- strh r0, [r2, 0x20]
-_080AC6CC:
- pop {r0}
- bx r0
- thumb_func_end sub_80AC6B4
-
- thumb_func_start sub_80AC6D0
-sub_80AC6D0: @ 80AC6D0
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006cc
- adds r3, r1, r0
- movs r2, 0
- movs r0, 0
- strh r0, [r3]
- ldr r3, =0x000006d2
- adds r0, r1, r3
- strb r2, [r0]
- subs r3, 0x11
- adds r0, r1, r3
- strb r2, [r0]
- ldr r0, =0x000006c2
- adds r1, r0
- strb r2, [r1]
- bx lr
- .pool
- thumb_func_end sub_80AC6D0
-
- thumb_func_start sub_80AC704
-sub_80AC704: @ 80AC704
- push {r4,lr}
- bl sub_80AC6D0
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AC724
- adds r4, r1, r2
-_080AC71A:
- bl sub_80AC734
- ldrb r0, [r4]
- cmp r0, 0
- beq _080AC71A
-_080AC724:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC704
-
- thumb_func_start sub_80AC734
-sub_80AC734: @ 80AC734
- push {lr}
- ldr r1, =gUnknown_0854C14C
- ldr r0, [r1]
- ldr r2, =0x000006cc
- adds r0, r2
- ldrh r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x4
- bhi _080AC810
- lsls r0, 2
- ldr r1, =_080AC75C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080AC75C:
- .4byte _080AC770
- .4byte _080AC78C
- .4byte _080AC7A4
- .4byte _080AC7C0
- .4byte _080AC7D8
-_080AC770:
- ldr r1, [r2]
- ldr r2, =0x000006c6
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080AC814
- ldr r0, =0x000006cc
- adds r1, r0
- b _080AC7F8
- .pool
-_080AC78C:
- bl sub_80ABF84
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006cc
- adds r1, r2
- b _080AC7F8
- .pool
-_080AC7A4:
- bl sub_80ABFA4
- lsls r0, 24
- cmp r0, 0
- bne _080AC814
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006cc
- adds r1, r0
- b _080AC7F8
- .pool
-_080AC7C0:
- bl sub_80ABFF0
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006cc
- adds r1, r2
- b _080AC7F8
- .pool
-_080AC7D8:
- bl sub_80AC01C
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r1, =0x0000073c
- adds r0, r2, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x6
- bne _080AC814
- ldr r0, =0x000006d2
- adds r1, r2, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, =0x000006cc
- adds r1, r2, r0
-_080AC7F8:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _080AC814
- .pool
-_080AC810:
- bl sub_80AC01C
-_080AC814:
- pop {r0}
- bx r0
- thumb_func_end sub_80AC734
-
- thumb_func_start sub_80AC818
-sub_80AC818: @ 80AC818
- movs r0, 0
- bx lr
- thumb_func_end sub_80AC818
-
- thumb_func_start sub_80AC81C
-sub_80AC81C: @ 80AC81C
- push {lr}
- ldr r0, =task50_0807B6D4
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC81C
-
- thumb_func_start task50_0807B6D4
-task50_0807B6D4: @ 80AC830
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bhi _080AC922
- lsls r0, 2
- ldr r1, =_080AC85C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080AC85C:
- .4byte _080AC870
- .4byte _080AC89A
- .4byte _080AC8C8
- .4byte _080AC8F8
- .4byte _080AC918
-_080AC870:
- movs r0, 0
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- ldr r0, =0x04000048
- ldrh r0, [r0]
- strh r0, [r4, 0xE]
- ldr r1, =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0x9E
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080AC89A:
- ldrh r0, [r4, 0xA]
- adds r0, 0x3
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080AC8AC
- movs r0, 0x10
- strh r0, [r4, 0xA]
-_080AC8AC:
- ldrh r1, [r4, 0xA]
- movs r0, 0x54
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- ble _080AC922
- b _080AC910
- .pool
-_080AC8C8:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _080AC922
- strh r1, [r4, 0xC]
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bgt _080AC8EE
- strh r1, [r4, 0xA]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080AC8EE:
- ldrh r1, [r4, 0xA]
- movs r0, 0x54
- bl SetGpuReg
- b _080AC922
-_080AC8F8:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4, 0xE]
- movs r0, 0x48
- bl SetGpuReg
-_080AC910:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AC922
-_080AC918:
- bl EnableBothScriptContexts
- adds r0, r5, 0
- bl DestroyTask
-_080AC922:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end task50_0807B6D4
-
- thumb_func_start sub_80AC928
-sub_80AC928: @ 80AC928
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006cc
- adds r0, r1, r2
- movs r3, 0
- movs r2, 0
- strh r2, [r0]
- ldr r4, =0x000006d2
- adds r0, r1, r4
- strb r3, [r0]
- adds r4, 0x4
- adds r0, r1, r4
- strh r2, [r0]
- ldr r0, =0x000006db
- adds r2, r1, r0
- movs r0, 0x8
- strb r0, [r2]
- ldr r2, =0x000006dc
- adds r0, r1, r2
- strb r3, [r0]
- adds r4, 0x3
- adds r2, r1, r4
- movs r0, 0xA
- strb r0, [r2]
- ldr r0, =0x000006c1
- adds r2, r1, r0
- movs r0, 0x3
- strb r0, [r2]
- ldr r2, =0x000006c2
- adds r1, r2
- movs r0, 0x14
- strb r0, [r1]
- movs r0, 0x55
- bl sub_80AC31C
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC928
-
- thumb_func_start sub_80AC994
-sub_80AC994: @ 80AC994
- push {r4,lr}
- bl sub_80AC928
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AC9B4
- adds r4, r1, r2
-_080AC9AA:
- bl sub_80AC9C4
- ldrb r0, [r4]
- cmp r0, 0
- beq _080AC9AA
-_080AC9B4:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC994
-
- thumb_func_start sub_80AC9C4
-sub_80AC9C4: @ 80AC9C4
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- ldr r0, =0x000006cc
- adds r4, r5, r0
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080AC9F4
- cmp r0, 0x1
- bgt _080AC9E8
- cmp r0, 0
- beq _080AC9EE
- b _080ACA18
- .pool
-_080AC9E8:
- cmp r0, 0x2
- beq _080ACA00
- b _080ACA18
-_080AC9EE:
- bl sub_80ACD68
- b _080ACA12
-_080AC9F4:
- bl sub_80ACD78
- lsls r0, 24
- cmp r0, 0
- bne _080ACA18
- b _080ACA12
-_080ACA00:
- bl sub_80ACEAC
- lsls r0, 24
- cmp r0, 0
- bne _080ACA18
- ldr r0, =0x000006d2
- adds r1, r5, r0
- movs r0, 0x1
- strb r0, [r1]
-_080ACA12:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080ACA18:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AC9C4
-
- thumb_func_start sub_80ACA24
-sub_80ACA24: @ 80ACA24
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r1, =0x000006ce
- adds r3, r2, r1
- ldrh r1, [r3]
- adds r4, r0, 0
- cmp r1, 0
- beq _080ACA48
- cmp r1, 0x1
- beq _080ACA7C
- movs r0, 0
- b _080ACAAA
- .pool
-_080ACA48:
- ldr r5, =0x000006d1
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _080ACA5A
- cmp r0, 0x5
- beq _080ACA5A
- cmp r0, 0xD
- bne _080ACA70
-_080ACA5A:
- ldr r0, [r4]
- ldr r1, =0x000006ce
- adds r0, r1
- movs r1, 0xFF
- strh r1, [r0]
- movs r0, 0
- b _080ACAAA
- .pool
-_080ACA70:
- ldr r4, =0x000006d9
- adds r0, r2, r4
- strb r1, [r0]
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
-_080ACA7C:
- bl sub_80ACEAC
- lsls r0, 24
- cmp r0, 0
- bne _080ACAA8
- bl sub_80ACF38
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r5, =0x000006ce
- adds r1, r5
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0
- b _080ACAAA
- .pool
-_080ACAA8:
- movs r0, 0x1
-_080ACAAA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80ACA24
-
- thumb_func_start sub_80ACAB0
-sub_80ACAB0: @ 80ACAB0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- movs r1, 0x30
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bne _080ACAC4
- ldr r0, =0x00000169
- strh r0, [r7, 0x30]
-_080ACAC4:
- movs r2, 0x30
- ldrsh r1, [r7, r2]
- ldr r0, =0x41c64e6d
- muls r0, r1
- ldr r3, =0x00003039
- adds r0, r3
- lsls r0, 1
- lsrs r0, 17
- movs r1, 0x96
- lsls r1, 2
- bl __umodsi3
- movs r1, 0
- mov r8, r1
- strh r0, [r7, 0x30]
- ldr r1, =gUnknown_0854FC4C
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- ldr r2, =0x000006dc
- adds r5, r2
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldrh r6, [r0]
- movs r3, 0x30
- ldrsh r0, [r7, r3]
- movs r1, 0x1E
- bl __modsi3
- adds r4, r0, 0
- lsls r4, 16
- asrs r4, 16
- lsls r0, r4, 3
- strh r0, [r7, 0x32]
- movs r1, 0x30
- ldrsh r0, [r7, r1]
- movs r1, 0x1E
- bl __divsi3
- lsls r0, 16
- lsls r4, 7
- strh r4, [r7, 0x32]
- asrs r0, 9
- strh r0, [r7, 0x34]
- ldr r2, =gUnknown_0854FC44
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r2
- movs r3, 0
- ldrsh r1, [r1, r3]
- muls r1, r6
- subs r4, r1
- strh r4, [r7, 0x32]
- ldrb r1, [r5]
- lsls r1, 2
- adds r2, 0x2
- adds r1, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- muls r1, r6
- subs r0, r1
- strh r0, [r7, 0x34]
- adds r0, r7, 0
- movs r1, 0
- bl StartSpriteAnim
- mov r3, r8
- strh r3, [r7, 0x36]
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- strh r6, [r7, 0x2E]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ACAB0
-
- thumb_func_start sub_80ACB84
-sub_80ACB84: @ 80ACB84
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x36
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080ACC60
- ldr r3, =gUnknown_0854FC44
- ldr r4, =gUnknown_0854C14C
- ldr r2, [r4]
- ldr r0, =0x000006dc
- adds r2, r0
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0]
- ldrh r0, [r5, 0x32]
- adds r1, r0
- strh r1, [r5, 0x32]
- ldrb r0, [r2]
- lsls r0, 2
- adds r3, 0x2
- adds r0, r3
- ldrh r0, [r0]
- ldrh r2, [r5, 0x34]
- adds r0, r2
- strh r0, [r5, 0x34]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r5, 0x20]
- lsls r0, 16
- asrs r2, r0, 20
- strh r2, [r5, 0x22]
- movs r3, 0x38
- ldrsh r0, [r5, r3]
- adds r3, r4, 0
- cmp r0, 0
- beq _080ACC04
- adds r0, r1, 0
- adds r0, 0x8
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 17
- cmp r0, r1
- bhi _080ACC04
- adds r1, r2, 0
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- blt _080ACC04
- cmp r1, 0xB0
- bgt _080ACC04
- adds r0, r5, 0
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- b _080ACC0E
- .pool
-_080ACC04:
- adds r0, r5, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
-_080ACC0E:
- strb r1, [r0]
- adds r4, r0, 0
- ldrh r0, [r5, 0x2E]
- subs r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080ACC80
- ldr r0, [r3]
- ldr r1, =0x000006dc
- adds r0, r1
- ldrb r1, [r0]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
- movs r0, 0x1
- strh r0, [r5, 0x36]
- ldr r1, =gSpriteCoordOffsetX
- ldrh r0, [r5, 0x20]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldr r1, =gSpriteCoordOffsetY
- ldrh r0, [r5, 0x22]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- b _080ACC80
- .pool
-_080ACC60:
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080ACC80
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- adds r0, r5, 0
- bl sub_80ACAB0
-_080ACC80:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80ACB84
-
- thumb_func_start sub_80ACC88
-sub_80ACC88: @ 80ACC88
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080ACCA8
- adds r0, r4, 0
- bl sub_80ACAB0
- ldr r0, =sub_80ACB84
- str r0, [r4, 0x1C]
- b _080ACCAC
- .pool
-_080ACCA8:
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
-_080ACCAC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ACC88
-
- thumb_func_start sub_80ACCB4
-sub_80ACCB4: @ 80ACCB4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- lsls r5, r1, 16
- lsrs r5, 16
- ldr r2, =gUnknown_0854FC4C
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006dc
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r1, r0, r2
- ldrh r1, [r1]
- mov r8, r1
- adds r2, 0x2
- adds r0, r2
- ldrh r4, [r0]
- add r4, r8
- adds r0, r5, 0
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl __modsi3
- lsls r0, 16
- lsrs r4, r0, 16
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, =0x0000ffff
- cmp r6, r0
- beq _080ACD12
- adds r5, r0, 0
-_080ACD02:
- adds r0, r7, 0
- bl sub_80ACAB0
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r5
- bne _080ACD02
-_080ACD12:
- cmp r4, r8
- bcs _080ACD48
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =0x0000ffff
- cmp r4, r0
- beq _080ACD34
- adds r5, r0, 0
-_080ACD24:
- adds r0, r7, 0
- bl sub_80ACB84
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r5
- bne _080ACD24
-_080ACD34:
- movs r0, 0
- b _080ACD5C
- .pool
-_080ACD48:
- mov r1, r8
- subs r0, r4, r1
- strh r0, [r7, 0x2E]
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
-_080ACD5C:
- strh r0, [r7, 0x3A]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80ACCB4
-
- thumb_func_start sub_80ACD68
-sub_80ACD68: @ 80ACD68
- push {lr}
- ldr r0, =gUnknown_0854FC54
- bl LoadSpriteSheet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ACD68
-
- thumb_func_start sub_80ACD78
-sub_80ACD78: @ 80ACD78
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gUnknown_0854C14C
- ldr r4, [r0]
- ldr r0, =0x000006da
- adds r2, r4, r0
- ldrb r0, [r2]
- cmp r0, 0x18
- bne _080ACD92
- b _080ACE98
-_080ACD92:
- ldrb r7, [r2]
- ldr r0, =gSpriteTemplate_854FC2C
- ldr r2, =gUnknown_0854FB90
- lsls r6, r7, 2
- adds r2, r6, r2
- movs r3, 0
- ldrsh r1, [r2, r3]
- movs r3, 0x2
- ldrsh r2, [r2, r3]
- movs r3, 0x4E
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _080ACE40
- ldr r3, =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r3
- movs r0, 0
- strh r0, [r1, 0x38]
- lsls r2, r7, 3
- adds r0, r2, r7
- lsls r0, 4
- adds r0, r7
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- ldr r1, =0x00000257
- mov r10, r6
- mov r9, r3
- mov r12, r4
- mov r8, r2
- cmp r0, r1
- ble _080ACDF6
- adds r2, r1, 0
-_080ACDDE:
- adds r0, r4, r5
- lsls r0, 2
- ldr r6, =gSprites
- adds r0, r6
- ldr r3, =0xfffffda8
- ldrh r6, [r0, 0x30]
- adds r1, r3, r6
- strh r1, [r0, 0x30]
- lsls r1, 16
- asrs r1, 16
- cmp r1, r2
- bgt _080ACDDE
-_080ACDF6:
- mov r0, r12
- adds r4, r0, r5
- lsls r4, 2
- add r4, r9
- adds r0, r4, 0
- bl sub_80ACAB0
- mov r3, r8
- adds r1, r3, r7
- adds r0, r4, 0
- bl sub_80ACCB4
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- add r0, r10
- str r4, [r0]
- b _080ACE46
- .pool
-_080ACE40:
- adds r1, r4, r6
- movs r0, 0
- str r0, [r1]
-_080ACE46:
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r6, =0x000006da
- adds r1, r2, r6
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x18
- bne _080ACE9C
- movs r3, 0
- adds r1, r2, 0
- ldr r5, =sub_80ACB84
- ldr r4, =sub_80ACC88
-_080ACE64:
- lsls r0, r3, 2
- adds r0, r1, r0
- ldr r2, [r0]
- cmp r2, 0
- beq _080ACE8E
- movs r6, 0x3A
- ldrsh r0, [r2, r6]
- cmp r0, 0
- bne _080ACE8C
- str r5, [r2, 0x1C]
- b _080ACE8E
- .pool
-_080ACE8C:
- str r4, [r2, 0x1C]
-_080ACE8E:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x17
- bls _080ACE64
-_080ACE98:
- movs r0, 0
- b _080ACE9E
-_080ACE9C:
- movs r0, 0x1
-_080ACE9E:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80ACD78
-
- thumb_func_start sub_80ACEAC
-sub_80ACEAC: @ 80ACEAC
- push {r4-r7,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r3, [r0]
- movs r0, 0xDB
- lsls r0, 3
- adds r4, r3, r0
- ldr r1, =0x000006d9
- adds r5, r3, r1
- ldrb r0, [r4]
- ldrb r7, [r5]
- cmp r0, r7
- bne _080ACED0
- movs r0, 0
- b _080ACF32
- .pool
-_080ACED0:
- ldr r0, =0x000006d6
- adds r2, r3, r0
- ldrh r0, [r2]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r2]
- ldr r7, =0x000006db
- adds r1, r3, r7
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1]
- cmp r0, r1
- bls _080ACF30
- strh r6, [r2]
- ldrb r0, [r4]
- adds r1, r0, 0
- ldrb r5, [r5]
- cmp r1, r5
- bcs _080ACF10
- adds r0, 0x1
- strb r0, [r4]
- lsls r0, r1, 2
- adds r0, r3, r0
- ldr r1, [r0]
- movs r0, 0x1
- strh r0, [r1, 0x38]
- b _080ACF30
- .pool
-_080ACF10:
- subs r0, 0x1
- strb r0, [r4]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r3, r0
- ldr r0, [r0]
- strh r6, [r0, 0x38]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r3, r0
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
-_080ACF30:
- movs r0, 0x1
-_080ACF32:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80ACEAC
-
- thumb_func_start sub_80ACF38
-sub_80ACF38: @ 80ACF38
- push {r4-r7,lr}
- movs r4, 0
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r3, =0x000006da
- adds r1, r2, r3
- adds r7, r0, 0
- ldrb r1, [r1]
- cmp r4, r1
- bcs _080ACF6A
- adds r5, r2, 0
- adds r6, r5, r3
-_080ACF50:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080ACF5E
- bl DestroySprite
-_080ACF5E:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldrb r0, [r6]
- cmp r4, r0
- bcc _080ACF50
-_080ACF6A:
- ldr r0, [r7]
- ldr r1, =0x000006da
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, =0x00001206
- bl FreeSpriteTilesByTag
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ACF38
-
- thumb_func_start sub_80ACF8C
-sub_80ACF8C: @ 80ACF8C
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006cc
- adds r0, r1, r2
- movs r2, 0
- movs r3, 0
- strh r3, [r0]
- ldr r4, =0x000006d2
- adds r0, r1, r4
- strb r2, [r0]
- ldr r0, =0x000006c1
- adds r2, r1, r0
- movs r0, 0x3
- strb r0, [r2]
- subs r4, 0x10
- adds r2, r1, r4
- movs r0, 0x14
- strb r0, [r2]
- ldr r0, =0x000006e5
- adds r2, r1, r0
- movs r0, 0x10
- strb r0, [r2]
- movs r2, 0xDC
- lsls r2, 3
- adds r1, r2
- strh r3, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ACF8C
-
- thumb_func_start sub_80ACFDC
-sub_80ACFDC: @ 80ACFDC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- bl sub_80ACF8C
- ldr r2, =gUnknown_0854C14C
- ldr r1, [r2]
- ldr r3, =0x000006d2
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AD032
- mov r8, r2
- adds r7, r1, r3
-_080ACFF8:
- bl snowflakes_progress2
- movs r4, 0
- mov r1, r8
- ldr r0, [r1]
- ldr r3, =0x000006e4
- adds r0, r3
- ldrb r0, [r0]
- cmp r4, r0
- bcs _080AD02C
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- adds r6, r5, r3
-_080AD012:
- lsls r1, r4, 2
- adds r0, r5, 0
- adds r0, 0x60
- adds r0, r1
- ldr r0, [r0]
- bl sub_80AD30C
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldrb r0, [r6]
- cmp r4, r0
- bcc _080AD012
-_080AD02C:
- ldrb r0, [r7]
- cmp r0, 0
- beq _080ACFF8
-_080AD032:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ACFDC
-
- thumb_func_start snowflakes_progress2
-snowflakes_progress2: @ 80AD048
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- ldr r0, =0x000006cc
- adds r4, r5, r0
- ldrh r0, [r4]
- cmp r0, 0
- bne _080AD070
- bl snowflakes_progress
- lsls r0, 24
- cmp r0, 0
- bne _080AD070
- ldr r0, =0x000006d2
- adds r1, r5, r0
- movs r0, 0x1
- strb r0, [r1]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080AD070:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end snowflakes_progress2
-
- thumb_func_start sub_80AD084
-sub_80AD084: @ 80AD084
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r0, =0x000006ce
- adds r3, r2, r0
- ldrh r1, [r3]
- cmp r1, 0
- beq _080AD0A4
- cmp r1, 0x1
- beq _080AD0B6
- movs r0, 0
- b _080AD0E2
- .pool
-_080AD0A4:
- ldr r4, =0x000006e5
- adds r0, r2, r4
- strb r1, [r0]
- subs r4, 0x5
- adds r0, r2, r4
- strh r1, [r0]
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
-_080AD0B6:
- bl snowflakes_progress
- lsls r0, 24
- cmp r0, 0
- bne _080AD0E0
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006ce
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0
- b _080AD0E2
- .pool
-_080AD0E0:
- movs r0, 0x1
-_080AD0E2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80AD084
-
- thumb_func_start snowflakes_progress
-snowflakes_progress: @ 80AD0E8
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006e4
- adds r3, r1, r0
- ldr r4, =0x000006e5
- adds r2, r1, r4
- ldrb r0, [r3]
- ldrb r4, [r2]
- cmp r0, r4
- bne _080AD110
- movs r0, 0
- b _080AD152
- .pool
-_080AD110:
- movs r0, 0xDC
- lsls r0, 3
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x24
- bls _080AD13A
- movs r0, 0
- strh r0, [r1]
- ldrb r0, [r3]
- ldrb r2, [r2]
- cmp r0, r2
- bcs _080AD136
- bl snowflake_add
- b _080AD13A
-_080AD136:
- bl snowflake_remove
-_080AD13A:
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r2, =0x000006e4
- adds r1, r0, r2
- ldr r4, =0x000006e5
- adds r0, r4
- ldrb r1, [r1]
- ldrb r0, [r0]
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
-_080AD152:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end snowflakes_progress
-
- thumb_func_start snowflake_add
-snowflake_add: @ 80AD164
- push {r4-r6,lr}
- ldr r0, =gUnknown_0854FC8C
- movs r1, 0
- movs r2, 0
- movs r3, 0x4E
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080AD1C8
- ldr r0, =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r0
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- ldr r0, =0x000006e4
- adds r6, r5, r0
- ldrb r0, [r6]
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_80AD204
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- adds r1, r0, 0x1
- strb r1, [r6]
- lsls r0, 24
- lsrs r0, 22
- adds r5, 0x60
- adds r5, r0
- str r4, [r5]
- movs r0, 0x1
- b _080AD1CA
- .pool
-_080AD1C8:
- movs r0, 0
-_080AD1CA:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end snowflake_add
-
- thumb_func_start snowflake_remove
-snowflake_remove: @ 80AD1D0
- push {lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006e4
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0
- bne _080AD1EC
- movs r0, 0
- b _080AD200
- .pool
-_080AD1EC:
- subs r0, 0x1
- strb r0, [r2]
- lsls r0, 24
- lsrs r0, 22
- adds r1, 0x60
- adds r1, r0
- ldr r0, [r1]
- bl DestroySprite
- movs r0, 0x1
-_080AD200:
- pop {r1}
- bx r1
- thumb_func_end snowflake_remove
-
- thumb_func_start sub_80AD204
-sub_80AD204: @ 80AD204
- push {r4-r7,lr}
- adds r5, r0, 0
- bl Random
- movs r1, 0x36
- ldrsh r2, [r5, r1]
- lsls r1, r2, 2
- adds r1, r2
- movs r2, 0x7
- ands r1, r2
- lsls r4, r1, 4
- subs r4, r1
- lsls r4, 1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1E
- bl __umodsi3
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- ldr r1, =gSpriteCoordOffsetY
- adds r0, r5, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r1]
- adds r0, r1
- movs r2, 0x3
- negs r2, r2
- adds r1, r2, 0
- subs r1, r0
- movs r7, 0
- strh r1, [r5, 0x22]
- ldr r1, =gSpriteCoordOffsetX
- adds r0, r5, 0
- adds r0, 0x28
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r1]
- adds r0, r1
- subs r4, r0
- strh r4, [r5, 0x20]
- movs r1, 0x22
- ldrsh r0, [r5, r1]
- lsls r0, 7
- strh r0, [r5, 0x2E]
- strh r7, [r5, 0x24]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r6, r0, 0
- movs r4, 0x3
- ands r4, r6
- lsls r0, r4, 2
- adds r0, r4
- adds r0, 0x40
- strh r0, [r5, 0x30]
- strh r0, [r5, 0x3C]
- movs r1, 0x1
- bics r1, r6
- adds r0, r5, 0
- bl StartSpriteAnim
- strh r7, [r5, 0x34]
- movs r0, 0x1
- cmp r4, 0
- bne _080AD294
- movs r0, 0x2
-_080AD294:
- strh r0, [r5, 0x32]
- movs r0, 0x1F
- ands r0, r6
- adds r0, 0xD2
- strh r0, [r5, 0x3A]
- strh r7, [r5, 0x38]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AD204
-
- thumb_func_start sub_80AD2B0
-sub_80AD2B0: @ 80AD2B0
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006e2
- adds r4, r0, r1
- ldrh r0, [r4]
- cmp r0, 0x12
- bls _080AD2F6
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, =sub_80AD30C
- str r0, [r3, 0x1C]
- ldr r1, =gSpriteCoordOffsetY
- adds r0, r3, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r1]
- adds r0, r1
- movs r1, 0xFA
- subs r1, r0
- movs r2, 0
- strh r1, [r3, 0x22]
- movs r1, 0x22
- ldrsh r0, [r3, r1]
- lsls r0, 7
- strh r0, [r3, 0x2E]
- strh r2, [r4]
-_080AD2F6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AD2B0
-
- thumb_func_start sub_80AD30C
-sub_80AD30C: @ 80AD30C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 23
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x34]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
- ldr r1, =gSineTable
- movs r3, 0x34
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _080AD33E
- adds r0, 0x3F
-_080AD33E:
- asrs r0, 6
- strh r0, [r4, 0x24]
- adds r0, r4, 0
- adds r0, 0x28
- movs r5, 0
- ldrsb r5, [r0, r5]
- ldrh r0, [r4, 0x20]
- adds r0, r5
- ldr r1, =gSpriteCoordOffsetX
- ldrh r1, [r1]
- adds r3, r1, r0
- ldr r2, =0x000001ff
- adds r0, r2, 0
- ands r3, r0
- adds r2, r3, 0
- movs r0, 0x80
- lsls r0, 1
- ands r0, r2
- cmp r0, 0
- beq _080AD370
- ldr r3, =0xffffff00
- adds r0, r3, 0
- orrs r2, r0
- lsls r0, r2, 16
- lsrs r3, r0, 16
-_080AD370:
- lsls r0, r3, 16
- asrs r0, 16
- movs r2, 0x3
- negs r2, r2
- cmp r0, r2
- bge _080AD394
- adds r1, r5
- movs r0, 0xF2
- subs r0, r1
- b _080AD39C
- .pool
-_080AD394:
- cmp r0, 0xF2
- ble _080AD39E
- adds r0, r1, r5
- subs r0, r2, r0
-_080AD39C:
- strh r0, [r4, 0x20]
-_080AD39E:
- adds r0, r4, 0
- adds r0, 0x29
- movs r3, 0
- ldrsb r3, [r0, r3]
- ldrh r0, [r4, 0x22]
- adds r0, r3
- ldr r1, =gSpriteCoordOffsetY
- ldrh r1, [r1]
- adds r2, r1, r0
- movs r0, 0xFF
- ands r2, r0
- adds r0, r2, 0
- subs r0, 0xA4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x6
- bhi _080AD3E0
- adds r1, r3
- movs r0, 0xFA
- subs r0, r1
- movs r1, 0
- strh r0, [r4, 0x22]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- lsls r0, 7
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x38]
- movs r0, 0xDC
- strh r0, [r4, 0x3A]
- b _080AD40C
- .pool
-_080AD3E0:
- adds r0, r2, 0
- subs r0, 0xF3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x6
- bhi _080AD40C
- movs r1, 0
- movs r0, 0xA3
- strh r0, [r4, 0x22]
- lsls r0, 7
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x38]
- movs r0, 0xDC
- strh r0, [r4, 0x3A]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_80AD2B0
- str r0, [r4, 0x1C]
-_080AD40C:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x3A
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _080AD438
- adds r0, r4, 0
- bl sub_80AD204
- movs r0, 0xFA
- strh r0, [r4, 0x22]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_80AD2B0
- str r0, [r4, 0x1C]
-_080AD438:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AD30C
-
- thumb_func_start sub_80AD444
-sub_80AD444: @ 80AD444
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006cc
- adds r0, r1, r2
- movs r3, 0
- movs r2, 0
- strh r2, [r0]
- ldr r5, =0x000006d2
- adds r4, r1, r5
- strb r3, [r4]
- adds r5, 0x4
- adds r0, r1, r5
- strh r2, [r0]
- ldr r0, =0x000006db
- adds r2, r1, r0
- movs r0, 0x4
- strb r0, [r2]
- ldr r2, =0x000006dc
- adds r0, r1, r2
- strb r3, [r0]
- adds r5, 0x3
- adds r2, r1, r5
- movs r0, 0x10
- strb r0, [r2]
- ldr r0, =0x000006c1
- adds r2, r1, r0
- movs r0, 0x3
- strb r0, [r2]
- subs r5, 0x17
- adds r2, r1, r5
- movs r0, 0x14
- strb r0, [r2]
- strb r3, [r4]
- ldr r0, =0x000006ed
- adds r1, r0
- strb r3, [r1]
- movs r0, 0x51
- bl sub_80AC31C
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AD444
-
- thumb_func_start sub_80AD4B8
-sub_80AD4B8: @ 80AD4B8
- push {r4,lr}
- bl sub_80AD444
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AD4D8
- adds r4, r1, r2
-_080AD4CE:
- bl sub_80AD584
- ldrb r0, [r4]
- cmp r0, 0
- beq _080AD4CE
-_080AD4D8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AD4B8
-
- thumb_func_start sub_80AD4E8
-sub_80AD4E8: @ 80AD4E8
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006cc
- adds r0, r1, r2
- movs r4, 0
- movs r2, 0
- strh r2, [r0]
- ldr r5, =0x000006d2
- adds r3, r1, r5
- strb r4, [r3]
- adds r5, 0x4
- adds r0, r1, r5
- strh r2, [r0]
- ldr r0, =0x000006db
- adds r2, r1, r0
- movs r0, 0x4
- strb r0, [r2]
- adds r5, 0x6
- adds r2, r1, r5
- movs r0, 0x1
- strb r0, [r2]
- ldr r0, =0x000006d9
- adds r2, r1, r0
- movs r0, 0x18
- strb r0, [r2]
- subs r5, 0x1B
- adds r2, r1, r5
- movs r0, 0x3
- strb r0, [r2]
- ldr r0, =0x000006c2
- adds r1, r0
- movs r0, 0x14
- strb r0, [r1]
- strb r4, [r3]
- movs r0, 0x53
- bl sub_80AC31C
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AD4E8
-
- thumb_func_start sub_80AD554
-sub_80AD554: @ 80AD554
- push {r4,lr}
- bl sub_80AD4E8
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AD574
- adds r4, r1, r2
-_080AD56A:
- bl sub_80AD584
- ldrb r0, [r4]
- cmp r0, 0
- beq _080AD56A
-_080AD574:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AD554
-
- thumb_func_start sub_80AD584
-sub_80AD584: @ 80AD584
- push {r4,r5,lr}
- bl sub_80AD9F8
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006cc
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xE
- bls _080AD59A
- b _080AD8FA
-_080AD59A:
- lsls r0, 2
- ldr r1, =_080AD5B0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080AD5B0:
- .4byte _080AD5EC
- .4byte _080AD608
- .4byte _080AD62C
- .4byte _080AD65C
- .4byte _080AD680
- .4byte _080AD6B0
- .4byte _080AD6E0
- .4byte _080AD70C
- .4byte _080AD72A
- .4byte _080AD788
- .4byte _080AD80C
- .4byte _080AD834
- .4byte _080AD864
- .4byte _080AD8A8
- .4byte _080AD8DC
-_080AD5EC:
- bl sub_80ACD68
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006cc
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- b _080AD8F8
- .pool
-_080AD608:
- bl sub_80ACD78
- lsls r0, 24
- cmp r0, 0
- beq _080AD614
- b _080AD8FA
-_080AD614:
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r3, =0x000006cc
- adds r1, r3
- ldrh r0, [r1]
- adds r0, 0x1
- b _080AD8F8
- .pool
-_080AD62C:
- bl sub_80ACEAC
- lsls r0, 24
- cmp r0, 0
- beq _080AD638
- b _080AD8FA
-_080AD638:
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006d2
- adds r2, r1, r0
- movs r0, 0x1
- strb r0, [r2]
- ldr r2, =0x000006cc
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- b _080AD8F8
- .pool
-_080AD65C:
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r3, =0x000006c6
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AD66C
- b _080AD8FA
-_080AD66C:
- ldr r0, =0x000006cc
- adds r1, r0
- movs r0, 0x6
- b _080AD8F8
- .pool
-_080AD680:
- ldr r0, =gUnknown_0854C14C
- ldr r4, [r0]
- ldr r2, =0x000006ea
- adds r1, r4, r2
- movs r0, 0x1
- strb r0, [r1]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r5, 0xB4
- lsls r5, 1
- adds r1, r5, 0
- bl __umodsi3
- adds r0, r5
- ldr r3, =0x000006e6
- adds r1, r4, r3
- strh r0, [r1]
- ldr r0, =0x000006cc
- adds r4, r0
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080AD6B0:
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r3, =0x000006e6
- adds r1, r2, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _080AD6C6
- b _080AD8FA
-_080AD6C6:
- ldr r0, =0x000006cc
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x1
- b _080AD8F8
- .pool
-_080AD6E0:
- ldr r0, =gUnknown_0854C14C
- ldr r4, [r0]
- ldr r1, =0x000006ea
- adds r0, r4, r1
- movs r5, 0x1
- strb r5, [r0]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ands r0, r5
- ldr r2, =0x000006eb
- adds r1, r4, r2
- strb r0, [r1]
- b _080AD768
- .pool
-_080AD70C:
- bl Random
- ldr r1, =gUnknown_0854C14C
- ldr r2, [r1]
- movs r1, 0x1
- ands r1, r0
- adds r1, 0x1
- ldr r3, =0x000006ec
- adds r0, r2, r3
- strb r1, [r0]
- ldr r0, =0x000006cc
- adds r2, r0
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
-_080AD72A:
- movs r0, 0x13
- bl sub_80ABC48
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006eb
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AD74E
- ldr r3, =0x000006ec
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080AD74E
- movs r0, 0x14
- bl sub_80AD9BC
-_080AD74E:
- bl Random
- ldr r1, =gUnknown_0854C14C
- ldr r4, [r1]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, 0x6
- ldr r2, =0x000006e6
- adds r1, r4, r2
- strh r0, [r1]
-_080AD768:
- ldr r3, =0x000006cc
- adds r4, r3
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080AD8FA
- .pool
-_080AD788:
- ldr r0, =gUnknown_0854C14C
- ldr r4, [r0]
- ldr r0, =0x000006e6
- adds r5, r4, r0
- ldrh r0, [r5]
- subs r0, 0x1
- strh r0, [r5]
- lsls r0, 16
- cmp r0, 0
- beq _080AD79E
- b _080AD8FA
-_080AD79E:
- movs r0, 0x3
- bl sub_80ABC48
- ldr r2, =0x000006ea
- adds r1, r4, r2
- movs r0, 0x1
- strb r0, [r1]
- ldr r3, =0x000006ec
- adds r1, r4, r3
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- beq _080AD7E8
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- adds r0, 0x3C
- strh r0, [r5]
- ldr r0, =0x000006cc
- adds r1, r4, r0
- movs r0, 0xA
- b _080AD8F8
- .pool
-_080AD7E8:
- ldr r1, =0x000006eb
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AD800
- ldr r2, =0x000006cc
- adds r1, r4, r2
- b _080AD8F6
- .pool
-_080AD800:
- ldr r3, =0x000006cc
- adds r1, r4, r3
- movs r0, 0xB
- b _080AD8F8
- .pool
-_080AD80C:
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r0, =0x000006e6
- adds r1, r2, r0
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bne _080AD8FA
- ldr r3, =0x000006cc
- adds r1, r2, r3
- movs r0, 0x8
- b _080AD8F8
- .pool
-_080AD834:
- bl Random
- ldr r1, =gUnknown_0854C14C
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- adds r0, 0x3C
- ldr r3, =0x000006e6
- adds r1, r2, r3
- strh r0, [r1]
- ldr r0, =0x000006cc
- adds r2, r0
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- b _080AD8FA
- .pool
-_080AD864:
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- ldr r1, =0x000006e6
- adds r4, r5, r1
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- lsls r0, 16
- cmp r0, 0
- bne _080AD8FA
- movs r0, 0x64
- bl sub_80AD9BC
- movs r0, 0x13
- bl sub_80ABC48
- bl Random
- movs r1, 0xF
- ands r1, r0
- adds r1, 0x1E
- strh r1, [r4]
- ldr r2, =0x000006cc
- adds r1, r5, r2
- ldrh r0, [r1]
- adds r0, 0x1
- b _080AD8F8
- .pool
-_080AD8A8:
- ldr r0, =gUnknown_0854C14C
- ldr r4, [r0]
- ldr r3, =0x000006e6
- adds r1, r4, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bne _080AD8FA
- movs r0, 0x13
- movs r1, 0x3
- movs r2, 0x5
- bl sub_80ABC7C
- ldr r0, =0x000006cc
- adds r1, r4, r0
- ldrh r0, [r1]
- adds r0, 0x1
- b _080AD8F8
- .pool
-_080AD8DC:
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r1, =0x000006c6
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _080AD8FA
- ldr r3, =0x000006ea
- adds r1, r2, r3
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, =0x000006cc
- adds r1, r2, r0
-_080AD8F6:
- movs r0, 0x4
-_080AD8F8:
- strh r0, [r1]
-_080AD8FA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AD584
-
- thumb_func_start sub_80AD910
-sub_80AD910: @ 80AD910
- push {r4-r6,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r6, [r0]
- ldr r0, =0x000006ce
- adds r5, r6, r0
- ldrh r1, [r5]
- cmp r1, 0x1
- beq _080AD946
- cmp r1, 0x1
- bgt _080AD934
- cmp r1, 0
- beq _080AD93A
- b _080AD9AC
- .pool
-_080AD934:
- cmp r1, 0x2
- beq _080AD990
- b _080AD9AC
-_080AD93A:
- ldr r2, =0x000006ea
- adds r0, r6, r2
- strb r1, [r0]
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_080AD946:
- bl sub_80AD584
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r1, =0x000006ea
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080AD9B4
- subs r1, 0x19
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _080AD9AC
- cmp r0, 0x5
- beq _080AD9AC
- cmp r0, 0xD
- beq _080AD9AC
- ldr r0, =0x000006d9
- adds r1, r2, r0
- movs r0, 0
- strb r0, [r1]
- ldr r0, =0x000006ce
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _080AD9B4
- .pool
-_080AD990:
- bl sub_80ACEAC
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080AD9B4
- bl sub_80ACF38
- ldr r1, =0x000006ed
- adds r0, r6, r1
- strb r4, [r0]
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_080AD9AC:
- movs r0, 0
- b _080AD9B6
- .pool
-_080AD9B4:
- movs r0, 0x1
-_080AD9B6:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80AD910
-
- thumb_func_start sub_80AD9BC
-sub_80AD9BC: @ 80AD9BC
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, =gUnknown_0854C14C
- ldr r4, [r0]
- ldr r0, =0x000006ed
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0
- bne _080AD9EA
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __umodsi3
- movs r2, 0xDD
- lsls r2, 3
- adds r1, r4, r2
- strh r0, [r1]
- movs r0, 0x1
- strb r0, [r5]
-_080AD9EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AD9BC
-
- thumb_func_start sub_80AD9F8
-sub_80AD9F8: @ 80AD9F8
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006ed
- adds r0, r1, r2
- ldrb r4, [r0]
- cmp r4, 0x1
- bne _080ADA58
- movs r0, 0xDD
- lsls r0, 3
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _080ADA54
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080ADA58
- bl Random
- ands r4, r0
- cmp r4, 0
- beq _080ADA38
- movs r0, 0x57
- bl PlaySE
- b _080ADA3E
- .pool
-_080ADA38:
- movs r0, 0x58
- bl PlaySE
-_080ADA3E:
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006ed
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- b _080ADA58
- .pool
-_080ADA54:
- subs r0, 0x1
- strh r0, [r1]
-_080ADA58:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AD9F8
-
- thumb_func_start sub_80ADA60
-sub_80ADA60: @ 80ADA60
- push {lr}
- ldr r0, =gUnknown_0854C14C
- ldr r3, [r0]
- ldr r0, =0x000006cc
- adds r1, r3, r0
- movs r2, 0
- movs r0, 0
- strh r0, [r1]
- ldr r1, =0x000006d2
- adds r0, r3, r1
- strb r2, [r0]
- subs r1, 0x11
- adds r0, r3, r1
- strb r2, [r0]
- ldr r2, =0x000006c2
- adds r1, r3, r2
- movs r0, 0x14
- strb r0, [r1]
- ldr r1, =0x000006fb
- adds r0, r3, r1
- ldrb r1, [r0]
- cmp r1, 0
- bne _080ADAA8
- adds r2, 0x2E
- adds r0, r3, r2
- strh r1, [r0]
- adds r2, 0x2
- adds r0, r3, r2
- strh r1, [r0]
- subs r2, 0x4
- adds r0, r3, r2
- strh r1, [r0]
- movs r0, 0
- movs r1, 0x10
- bl sub_80AC124
-_080ADAA8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADA60
-
- thumb_func_start sub_80ADAC0
-sub_80ADAC0: @ 80ADAC0
- push {r4,lr}
- bl sub_80ADA60
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080ADAE0
- adds r4, r1, r2
-_080ADAD6:
- bl sub_80ADAF0
- ldrb r0, [r4]
- cmp r0, 0
- beq _080ADAD6
-_080ADAE0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADAC0
-
- thumb_func_start sub_80ADAF0
-sub_80ADAF0: @ 80ADAF0
- push {r4-r6,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r6, [r0]
- ldr r0, =gSpriteCoordOffsetX
- ldr r1, =0x000006f2
- adds r2, r6, r1
- ldrh r0, [r0]
- ldrh r1, [r2]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- ldr r3, =0x000006ee
- adds r1, r6, r3
- strh r0, [r1]
- movs r0, 0xDE
- lsls r0, 3
- adds r1, r6, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3
- bls _080ADB2A
- movs r0, 0
- strh r0, [r1]
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
-_080ADB2A:
- ldr r1, =0x000006cc
- adds r5, r6, r1
- ldrh r4, [r5]
- cmp r4, 0
- beq _080ADB50
- cmp r4, 0x1
- beq _080ADB90
- b _080ADBA6
- .pool
-_080ADB50:
- bl sub_80ADCAC
- movs r3, 0xDA
- lsls r3, 3
- adds r0, r6, r3
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _080ADB6C
- movs r0, 0xC
- movs r1, 0x8
- movs r2, 0x3
- bl sub_80AC164
- b _080ADB76
-_080ADB6C:
- movs r0, 0x4
- movs r1, 0x10
- movs r2, 0
- bl sub_80AC164
-_080ADB76:
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006cc
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _080ADBA6
- .pool
-_080ADB90:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080ADBA6
- ldr r1, =0x000006d2
- adds r0, r6, r1
- strb r4, [r0]
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_080ADBA6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADAF0
-
- thumb_func_start sub_80ADBB0
-sub_80ADBB0: @ 80ADBB0
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r0, =gSpriteCoordOffsetX
- ldr r1, =0x000006f2
- adds r3, r2, r1
- ldrh r0, [r0]
- ldrh r1, [r3]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- ldr r4, =0x000006ee
- adds r1, r2, r4
- strh r0, [r1]
- movs r0, 0xDE
- lsls r0, 3
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3
- bls _080ADBEA
- movs r0, 0
- strh r0, [r1]
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
-_080ADBEA:
- ldr r1, =0x000006ce
- adds r4, r2, r1
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080ADC26
- cmp r0, 0x1
- bgt _080ADC14
- cmp r0, 0
- beq _080ADC1A
- b _080ADC3E
- .pool
-_080ADC14:
- cmp r0, 0x2
- beq _080ADC32
- b _080ADC3E
-_080ADC1A:
- movs r0, 0
- movs r1, 0x10
- movs r2, 0x3
- bl sub_80AC164
- b _080ADC36
-_080ADC26:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080ADC42
- b _080ADC36
-_080ADC32:
- bl sub_80ADD68
-_080ADC36:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080ADC42
-_080ADC3E:
- movs r0, 0
- b _080ADC44
-_080ADC42:
- movs r0, 0x1
-_080ADC44:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80ADBB0
-
- thumb_func_start sub_80ADC4C
-sub_80ADC4C: @ 80ADC4C
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, =gSpriteCoordOffsetY
- ldrb r0, [r0]
- strh r0, [r3, 0x26]
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006ee
- adds r2, r0, r1
- ldrh r1, [r2]
- adds r1, 0x20
- movs r4, 0x2E
- ldrsh r0, [r3, r4]
- lsls r0, 6
- adds r1, r0
- strh r1, [r3, 0x20]
- lsls r1, 16
- ldr r0, =0x010f0000
- cmp r1, r0
- ble _080ADC90
- movs r0, 0xF0
- lsls r0, 1
- adds r1, r0, 0
- ldrh r2, [r2]
- adds r1, r2
- movs r4, 0x2E
- ldrsh r2, [r3, r4]
- movs r0, 0x4
- subs r0, r2
- lsls r0, 6
- subs r1, r0
- ldr r0, =0x000001ff
- ands r1, r0
- strh r1, [r3, 0x20]
-_080ADC90:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADC4C
-
- thumb_func_start sub_80ADCAC
-sub_80ADCAC: @ 80ADCAC
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006fb
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080ADD56
- ldr r0, =gUnknown_0854FD30
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- movs r5, 0
-_080ADCD0:
- ldr r0, =gSpriteTemplate_854FD18
- movs r1, 0
- movs r2, 0
- movs r3, 0xFF
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080ADD34
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- adds r0, r5, 0
- movs r1, 0x5
- bl __umodsi3
- strh r0, [r4, 0x2E]
- lsls r0, 16
- lsrs r0, 10
- adds r0, 0x20
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x5
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 10
- adds r0, 0x20
- strh r0, [r4, 0x22]
- ldr r2, =gUnknown_0854C14C
- ldr r0, [r2]
- lsls r1, r5, 2
- adds r0, 0xA0
- adds r0, r1
- str r4, [r0]
- b _080ADD42
- .pool
-_080ADD34:
- ldr r2, =gUnknown_0854C14C
- ldr r1, [r2]
- lsls r0, r5, 2
- adds r1, 0xA0
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_080ADD42:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x13
- bls _080ADCD0
- ldr r0, [r2]
- ldr r1, =0x000006fb
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_080ADD56:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADCAC
-
- thumb_func_start sub_80ADD68
-sub_80ADD68: @ 80ADD68
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006fb
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080ADDA8
- movs r4, 0
- adds r5, r1, 0
- adds r5, 0xA0
-_080ADD7E:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080ADD8C
- bl DestroySprite
-_080ADD8C:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x13
- bls _080ADD7E
- ldr r0, =0x00001201
- bl FreeSpriteTilesByTag
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006fb
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080ADDA8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADD68
-
- thumb_func_start sub_80ADDBC
-sub_80ADDBC: @ 80ADDBC
- push {lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006cc
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0
- strh r0, [r2]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- strb r3, [r0]
- subs r2, 0x11
- adds r0, r1, r2
- strb r3, [r0]
- ldr r3, =0x000006c2
- adds r0, r1, r3
- movs r2, 0x14
- strb r2, [r0]
- adds r3, 0x3C
- adds r0, r1, r3
- strh r2, [r0]
- movs r0, 0xE0
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _080ADE04
- movs r0, 0
- movs r1, 0x10
- bl sub_80AC124
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x52
- bl SetGpuReg
-_080ADE04:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADDBC
-
- thumb_func_start sub_80ADE18
-sub_80ADE18: @ 80ADE18
- push {r4,lr}
- bl sub_80ADDBC
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080ADE38
- adds r4, r1, r2
-_080ADE2E:
- bl sub_80ADE48
- ldrb r0, [r4]
- cmp r0, 0
- beq _080ADE2E
-_080ADE38:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADE18
-
- thumb_func_start sub_80ADE48
-sub_80ADE48: @ 80ADE48
- push {r4,r5,lr}
- ldr r2, =gUnknown_0854C14C
- ldr r1, [r2]
- ldr r0, =gSpriteCoordOffsetX
- ldrh r0, [r0]
- ldr r3, =0x000001ff
- ands r3, r0
- ldr r0, =0x000006fc
- adds r1, r0
- strh r3, [r1]
- cmp r3, 0xEF
- bls _080ADE74
- adds r4, r1, 0
- adds r1, r3, 0
-_080ADE64:
- adds r3, r1, 0
- subs r3, 0xF0
- adds r1, r3, 0
- lsls r0, r3, 16
- lsrs r0, 16
- cmp r0, 0xEF
- bhi _080ADE64
- strh r3, [r4]
-_080ADE74:
- ldr r5, [r2]
- ldr r1, =0x000006cc
- adds r4, r5, r1
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080ADEAC
- cmp r0, 0x1
- bgt _080ADEA0
- cmp r0, 0
- beq _080ADEA6
- b _080ADEE8
- .pool
-_080ADEA0:
- cmp r0, 0x2
- beq _080ADEC8
- b _080ADEE8
-_080ADEA6:
- bl sub_80ADF5C
- b _080ADEDA
-_080ADEAC:
- movs r1, 0xE0
- lsls r1, 3
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080ADEBC
- bl sub_80ADF6C
-_080ADEBC:
- movs r0, 0x10
- movs r1, 0
- movs r2, 0x1
- bl sub_80AC164
- b _080ADEDA
-_080ADEC8:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080ADEEC
- ldr r0, =0x000006d2
- adds r1, r5, r0
- movs r0, 0x1
- strb r0, [r1]
-_080ADEDA:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080ADEEC
- .pool
-_080ADEE8:
- bl sub_80AC1A8
-_080ADEEC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80ADE48
-
- thumb_func_start sub_80ADEF4
-sub_80ADEF4: @ 80ADEF4
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006ce
- adds r4, r0, r1
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080ADF2A
- cmp r0, 0x1
- bgt _080ADF18
- cmp r0, 0
- beq _080ADF1E
- b _080ADF4E
- .pool
-_080ADF18:
- cmp r0, 0x2
- beq _080ADF40
- b _080ADF4E
-_080ADF1E:
- movs r0, 0
- movs r1, 0x10
- movs r2, 0x1
- bl sub_80AC164
- b _080ADF38
-_080ADF2A:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080ADF52
- bl sub_80AE014
-_080ADF38:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080ADF52
-_080ADF40:
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080ADF4E:
- movs r0, 0
- b _080ADF54
-_080ADF52:
- movs r0, 0x1
-_080ADF54:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80ADEF4
-
- thumb_func_start sub_80ADF5C
-sub_80ADF5C: @ 80ADF5C
- push {lr}
- ldr r0, =gUnknown_0854FD38
- bl LoadSpriteSheet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADF5C
-
- thumb_func_start sub_80ADF6C
-sub_80ADF6C: @ 80ADF6C
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- movs r1, 0xE0
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AE008
- movs r5, 0
-_080ADF80:
- ldr r0, =gSpriteTemplate_854FD58
- movs r1, 0
- movs r2, 0
- movs r3, 0x4E
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080ADFE4
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r0, r5, 0
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- adds r0, r5, 0
- movs r1, 0x5
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x34]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 6
- adds r0, 0x20
- strh r0, [r4, 0x2E]
- ldr r2, =gUnknown_0854C14C
- ldr r0, [r2]
- lsls r1, r5, 2
- adds r0, 0xF0
- adds r0, r1
- str r4, [r0]
- b _080ADFF2
- .pool
-_080ADFE4:
- ldr r2, =gUnknown_0854C14C
- ldr r1, [r2]
- lsls r0, r5, 2
- adds r1, 0xF0
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_080ADFF2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x13
- bls _080ADF80
- ldr r0, [r2]
- movs r1, 0xE0
- lsls r1, 3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_080AE008:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ADF6C
-
- thumb_func_start sub_80AE014
-sub_80AE014: @ 80AE014
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- movs r2, 0xE0
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080AE058
- movs r4, 0
- adds r5, r1, 0
- adds r5, 0xF0
-_080AE02C:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080AE03A
- bl DestroySprite
-_080AE03A:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x13
- bls _080AE02C
- ldr r0, =0x00001202
- bl FreeSpriteTilesByTag
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- movs r1, 0xE0
- lsls r1, 3
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080AE058:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE014
-
- thumb_func_start sub_80AE068
-sub_80AE068: @ 80AE068
- push {r4,lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080AE084
- movs r0, 0
- strh r0, [r3, 0x30]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
-_080AE084:
- ldr r1, =gSpriteCoordOffsetY
- ldrh r0, [r3, 0x2E]
- ldrh r1, [r1]
- adds r0, r1
- strh r0, [r3, 0x22]
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006fc
- adds r2, r0, r1
- ldrh r1, [r2]
- adds r1, 0x20
- movs r4, 0x32
- ldrsh r0, [r3, r4]
- lsls r0, 6
- adds r1, r0
- strh r1, [r3, 0x20]
- lsls r1, 16
- ldr r0, =0x010f0000
- cmp r1, r0
- ble _080AE0C8
- movs r0, 0xF0
- lsls r0, 1
- adds r1, r0, 0
- ldrh r2, [r2]
- adds r1, r2
- movs r4, 0x32
- ldrsh r2, [r3, r4]
- movs r0, 0x4
- subs r0, r2
- lsls r0, 6
- subs r1, r0
- ldr r0, =0x000001ff
- ands r1, r0
- strh r1, [r3, 0x20]
-_080AE0C8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE068
-
- thumb_func_start sub_80AE0E4
-sub_80AE0E4: @ 80AE0E4
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r3, [r0]
- ldr r1, =0x000006cc
- adds r0, r3, r1
- movs r1, 0
- movs r2, 0
- strh r2, [r0]
- ldr r4, =0x000006d2
- adds r0, r3, r4
- strb r1, [r0]
- subs r4, 0x11
- adds r0, r3, r4
- strb r1, [r0]
- ldr r0, =0x000006c2
- adds r1, r3, r0
- movs r0, 0x14
- strb r0, [r1]
- movs r1, 0xDE
- lsls r1, 3
- adds r0, r3, r1
- strh r2, [r0]
- adds r4, 0x31
- adds r1, r3, r4
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, =0x00000724
- adds r0, r3, r1
- ldrb r2, [r0]
- cmp r2, 0
- bne _080AE14E
- adds r4, 0x2A
- adds r0, r3, r4
- strh r2, [r0]
- subs r1, 0x6
- adds r0, r3, r1
- strh r2, [r0]
- adds r4, 0x4
- adds r0, r3, r4
- strh r2, [r0]
- adds r1, 0x4
- adds r0, r3, r1
- strh r2, [r0]
- subs r4, 0x8
- adds r0, r3, r4
- strh r2, [r0]
- subs r1, 0x8
- adds r0, r3, r1
- strh r2, [r0]
- movs r0, 0
- movs r1, 0x10
- bl sub_80AC124
-_080AE14E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE0E4
-
- thumb_func_start sub_80AE168
-sub_80AE168: @ 80AE168
- push {r4,lr}
- bl sub_80AE0E4
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AE188
- adds r4, r1, r2
-_080AE17E:
- bl sub_80AE198
- ldrb r0, [r4]
- cmp r0, 0
- beq _080AE17E
-_080AE188:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE168
-
- thumb_func_start sub_80AE198
-sub_80AE198: @ 80AE198
- push {r4,r5,lr}
- bl sub_80AE25C
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- ldr r0, =0x000006cc
- adds r4, r5, r0
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080AE1CC
- cmp r0, 0x1
- bgt _080AE1C0
- cmp r0, 0
- beq _080AE1C6
- b _080AE1F0
- .pool
-_080AE1C0:
- cmp r0, 0x2
- beq _080AE1D8
- b _080AE1F0
-_080AE1C6:
- bl sub_80AE2F0
- b _080AE1EA
-_080AE1CC:
- movs r0, 0xC
- movs r1, 0x8
- movs r2, 0x8
- bl sub_80AC164
- b _080AE1EA
-_080AE1D8:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080AE1F0
- ldr r0, =0x000006d2
- adds r1, r5, r0
- movs r0, 0x1
- strb r0, [r1]
-_080AE1EA:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080AE1F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE198
-
- thumb_func_start sub_80AE1FC
-sub_80AE1FC: @ 80AE1FC
- push {r4,lr}
- bl sub_80AE25C
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006ce
- adds r4, r0, r1
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080AE236
- cmp r0, 0x1
- bgt _080AE224
- cmp r0, 0
- beq _080AE22A
- b _080AE24E
- .pool
-_080AE224:
- cmp r0, 0x2
- beq _080AE242
- b _080AE24E
-_080AE22A:
- movs r0, 0
- movs r1, 0x10
- movs r2, 0x1
- bl sub_80AC164
- b _080AE246
-_080AE236:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080AE252
- b _080AE246
-_080AE242:
- bl sub_80AE3A8
-_080AE246:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080AE252
-_080AE24E:
- movs r0, 0
- b _080AE254
-_080AE252:
- movs r0, 0x1
-_080AE254:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80AE1FC
-
- thumb_func_start sub_80AE25C
-sub_80AE25C: @ 80AE25C
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r3, [r0]
- ldr r0, =0x0000071c
- adds r2, r3, r0
- ldrh r0, [r2]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r2]
- ldr r1, =0x0000ffff
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bls _080AE288
- movs r0, 0xE4
- lsls r0, 3
- adds r1, r3, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- strh r5, [r2]
-_080AE288:
- ldr r1, =0x0000071e
- adds r2, r3, r1
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- ands r0, r4
- cmp r0, 0x4
- bls _080AE2A4
- ldr r0, =0x00000722
- adds r1, r3, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- strh r5, [r2]
-_080AE2A4:
- ldr r0, =gSpriteCoordOffsetX
- movs r2, 0xE4
- lsls r2, 3
- adds r1, r3, r2
- ldrh r0, [r0]
- ldrh r1, [r1]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- subs r2, 0x8
- adds r1, r3, r2
- strh r0, [r1]
- ldr r1, =gSpriteCoordOffsetY
- adds r2, 0xA
- adds r0, r3, r2
- ldrh r0, [r0]
- ldrh r1, [r1]
- adds r0, r1
- subs r2, 0x8
- adds r1, r3, r2
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE25C
-
- thumb_func_start sub_80AE2F0
-sub_80AE2F0: @ 80AE2F0
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x00000724
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AE396
- ldr r0, =gUnknown_0854FD70
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- movs r6, 0
-_080AE314:
- adds r0, r6, 0
- movs r1, 0x5
- bl __udivsi3
- adds r5, r0, 0
- lsls r2, r5, 22
- asrs r2, 16
- ldr r0, =gSpriteTemplate_854FD8C
- movs r1, 0
- movs r3, 0xFF
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080AE370
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- adds r0, r6, 0
- movs r1, 0x5
- bl __umodsi3
- strh r0, [r4, 0x2E]
- strh r5, [r4, 0x30]
- ldr r2, =gUnknown_0854C14C
- ldr r0, [r2]
- lsls r1, r6, 2
- movs r3, 0xA0
- lsls r3, 1
- adds r0, r3
- adds r0, r1
- str r4, [r0]
- b _080AE382
- .pool
-_080AE370:
- ldr r2, =gUnknown_0854C14C
- ldr r1, [r2]
- lsls r0, r6, 2
- movs r3, 0xA0
- lsls r3, 1
- adds r1, r3
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_080AE382:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x13
- bls _080AE314
- ldr r0, [r2]
- ldr r1, =0x00000724
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_080AE396:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE2F0
-
- thumb_func_start sub_80AE3A8
-sub_80AE3A8: @ 80AE3A8
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x00000724
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080AE3EA
- movs r4, 0
- movs r0, 0xA0
- lsls r0, 1
- adds r5, r1, r0
-_080AE3C0:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080AE3CE
- bl DestroySprite
-_080AE3CE:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x13
- bls _080AE3C0
- ldr r0, =0x00001203
- bl FreeSpriteTilesByTag
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x00000724
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080AE3EA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE3A8
-
- thumb_func_start sub_80AE3FC
-sub_80AE3FC: @ 80AE3FC
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x0000071a
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r3, 0x26]
- movs r4, 0xE3
- lsls r4, 3
- adds r2, r1, r4
- ldrh r1, [r2]
- adds r1, 0x20
- movs r4, 0x2E
- ldrsh r0, [r3, r4]
- lsls r0, 6
- adds r1, r0
- strh r1, [r3, 0x20]
- lsls r1, 16
- ldr r0, =0x010f0000
- cmp r1, r0
- ble _080AE444
- movs r0, 0xF0
- lsls r0, 1
- adds r1, r0, 0
- ldrh r2, [r2]
- adds r1, r2
- movs r4, 0x2E
- ldrsh r2, [r3, r4]
- movs r0, 0x4
- subs r0, r2
- lsls r0, 6
- subs r1, r0
- ldr r0, =0x000001ff
- ands r1, r0
- strh r1, [r3, 0x20]
-_080AE444:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE3FC
-
- thumb_func_start sub_80AE45C
-sub_80AE45C: @ 80AE45C
- push {r4,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r3, [r0]
- ldr r0, =0x000006cc
- adds r1, r3, r0
- movs r2, 0
- movs r0, 0
- strh r0, [r1]
- ldr r1, =0x000006d2
- adds r0, r3, r1
- strb r2, [r0]
- ldr r4, =0x000006c1
- adds r0, r3, r4
- strb r2, [r0]
- ldr r0, =0x000006c2
- adds r1, r3, r0
- movs r0, 0x14
- strb r0, [r1]
- ldr r1, =0x00000716
- adds r0, r3, r1
- ldrb r2, [r0]
- cmp r2, 0
- bne _080AE4B8
- adds r4, 0x43
- adds r1, r3, r4
- adds r4, 0x4
- adds r0, r3, r4
- str r2, [r0]
- str r2, [r1]
- ldr r0, =0x00000712
- adds r1, r3, r0
- movs r0, 0x8
- strh r0, [r1]
- adds r4, 0xC
- adds r0, r3, r4
- strh r2, [r0]
- ldrh r2, [r1]
- cmp r2, 0x5F
- bls _080AE4B0
- movs r0, 0x80
- subs r0, r2
- strh r0, [r1]
-_080AE4B0:
- movs r0, 0
- movs r1, 0x10
- bl sub_80AC124
-_080AE4B8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE45C
-
- thumb_func_start sub_80AE4DC
-sub_80AE4DC: @ 80AE4DC
- push {r4,lr}
- bl sub_80AE45C
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AE4FC
- adds r4, r1, r2
-_080AE4F2:
- bl sub_80AE50C
- ldrb r0, [r4]
- cmp r0, 0
- beq _080AE4F2
-_080AE4FC:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE4DC
-
- thumb_func_start sub_80AE50C
-sub_80AE50C: @ 80AE50C
- push {r4,r5,lr}
- bl sub_80AE624
- bl sub_80AE5EC
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- ldr r0, =0x00000712
- adds r1, r5, r0
- ldrh r0, [r1]
- cmp r0, 0x5F
- bls _080AE528
- movs r0, 0x20
- strh r0, [r1]
-_080AE528:
- ldr r0, =0x000006cc
- adds r4, r5, r0
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080AE558
- cmp r0, 0x1
- bgt _080AE548
- cmp r0, 0
- beq _080AE54E
- b _080AE57C
- .pool
-_080AE548:
- cmp r0, 0x2
- beq _080AE564
- b _080AE57C
-_080AE54E:
- bl sub_80AE738
- bl sub_80AE7F8
- b _080AE576
-_080AE558:
- movs r0, 0x10
- movs r1, 0
- movs r2, 0
- bl sub_80AC164
- b _080AE576
-_080AE564:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080AE57C
- ldr r0, =0x000006d2
- adds r1, r5, r0
- movs r0, 0x1
- strb r0, [r1]
-_080AE576:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080AE57C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE50C
-
- thumb_func_start sub_80AE588
-sub_80AE588: @ 80AE588
- push {r4,lr}
- bl sub_80AE624
- bl sub_80AE5EC
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x000006ce
- adds r4, r0, r1
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080AE5C6
- cmp r0, 0x1
- bgt _080AE5B4
- cmp r0, 0
- beq _080AE5BA
- b _080AE5DE
- .pool
-_080AE5B4:
- cmp r0, 0x2
- beq _080AE5D2
- b _080AE5DE
-_080AE5BA:
- movs r0, 0
- movs r1, 0x10
- movs r2, 0
- bl sub_80AC164
- b _080AE5D6
-_080AE5C6:
- bl sub_80AC1A8
- lsls r0, 24
- cmp r0, 0
- beq _080AE5E2
- b _080AE5D6
-_080AE5D2:
- bl sub_80AE6A4
-_080AE5D6:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080AE5E2
-_080AE5DE:
- movs r0, 0
- b _080AE5E4
-_080AE5E2:
- movs r0, 0x1
-_080AE5E4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80AE588
-
- thumb_func_start sub_80AE5EC
-sub_80AE5EC: @ 80AE5EC
- push {lr}
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r0, =0x00000714
- adds r3, r2, r0
- ldrh r0, [r3]
- adds r1, r0, 0x1
- strh r1, [r3]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x4
- bls _080AE612
- ldr r1, =0x00000712
- adds r0, r2, r1
- ldrh r1, [r0]
- adds r1, 0x1
- movs r2, 0
- strh r1, [r0]
- strh r2, [r3]
-_080AE612:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE5EC
-
- thumb_func_start sub_80AE624
-sub_80AE624: @ 80AE624
- push {r4-r6,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r2, [r0]
- ldr r0, =0x00000704
- adds r4, r2, r0
- ldr r6, =gSineTable
- ldr r1, =0x00000712
- adds r5, r2, r1
- ldrh r0, [r5]
- lsls r0, 1
- adds r0, r6
- movs r3, 0
- ldrsh r1, [r0, r3]
- lsls r1, 2
- ldr r0, [r4]
- subs r0, r1
- str r0, [r4]
- movs r0, 0xE1
- lsls r0, 3
- adds r3, r2, r0
- ldrh r0, [r5]
- lsls r0, 1
- adds r0, r6
- movs r5, 0
- ldrsh r1, [r0, r5]
- ldr r0, [r3]
- subs r0, r1
- str r0, [r3]
- ldr r1, =gSpriteCoordOffsetX
- ldr r0, [r4]
- lsrs r0, 8
- ldrh r1, [r1]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- ldr r4, =0x0000070e
- adds r1, r2, r4
- strh r0, [r1]
- ldr r1, =gSpriteCoordOffsetY
- ldr r0, [r3]
- lsrs r0, 8
- ldrh r1, [r1]
- adds r0, r1
- movs r5, 0xE2
- lsls r5, 3
- adds r2, r5
- strh r0, [r2]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE624
-
- thumb_func_start sub_80AE6A4
-sub_80AE6A4: @ 80AE6A4
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x00000716
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080AE6E6
- movs r4, 0
- movs r0, 0xC8
- lsls r0, 1
- adds r5, r1, r0
-_080AE6BC:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080AE6CA
- bl DestroySprite
-_080AE6CA:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x13
- bls _080AE6BC
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x00000716
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, =0x00001204
- bl FreeSpriteTilesByTag
-_080AE6E6:
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x00000717
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080AE720
- movs r4, 0
- movs r0, 0xF0
- lsls r0, 1
- adds r5, r1, r0
-_080AE6FC:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080AE70A
- bl DestroySprite
-_080AE70A:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _080AE6FC
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x00000717
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080AE720:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE6A4
-
- thumb_func_start sub_80AE738
-sub_80AE738: @ 80AE738
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x00000716
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AE7E6
- ldr r0, =gUnknown_0854FDDC
- bl LoadSpriteSheet
- ldr r0, =gUnknown_0854C2B0
- bl sub_80ABF4C
- movs r7, 0
-_080AE758:
- adds r0, r7, 0
- movs r1, 0x5
- bl __udivsi3
- adds r6, r0, 0
- lsls r2, r6, 22
- asrs r2, 16
- ldr r0, =gSpriteTemplate_854FDC4
- movs r1, 0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080AE7C0
- ldr r2, =gUnknown_0854C14C
- ldr r5, [r2]
- lsls r0, r7, 2
- movs r3, 0xC8
- lsls r3, 1
- adds r5, r3
- adds r5, r0
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- str r4, [r5]
- adds r0, r7, 0
- movs r1, 0x5
- str r2, [sp]
- bl __umodsi3
- strh r0, [r4, 0x2E]
- ldr r0, [r5]
- strh r6, [r0, 0x30]
- ldr r2, [sp]
- b _080AE7D2
- .pool
-_080AE7C0:
- ldr r2, =gUnknown_0854C14C
- ldr r1, [r2]
- lsls r0, r7, 2
- movs r3, 0xC8
- lsls r3, 1
- adds r1, r3
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_080AE7D2:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x13
- bls _080AE758
- ldr r0, [r2]
- ldr r1, =0x00000716
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_080AE7E6:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE738
-
- thumb_func_start sub_80AE7F8
-sub_80AE7F8: @ 80AE7F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, =gUnknown_0854C14C
- ldr r0, [r4]
- ldr r1, =0x00000717
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AE8E4
- movs r7, 0
- mov r9, r4
- movs r2, 0
- mov r10, r2
-_080AE818:
- lsls r0, r7, 1
- mov r8, r0
- adds r6, r0, r7
- lsls r5, r6, 4
- adds r1, r5, 0
- adds r1, 0x18
- lsls r1, 16
- asrs r1, 16
- ldr r0, =gSpriteTemplate_854FDC4
- movs r2, 0xD0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080AE8BC
- mov r2, r9
- ldr r4, [r2]
- lsls r0, r7, 2
- movs r2, 0xF0
- lsls r2, 1
- adds r4, r2
- adds r4, r0
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- ldr r0, =gSprites
- adds r2, r0
- str r2, [r4]
- ldrb r1, [r2, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x3]
- ldr r1, [r4]
- adds r0, r6, r5
- strh r0, [r1, 0x30]
- ldr r1, [r4]
- movs r0, 0x8
- strh r0, [r1, 0x2E]
- ldr r0, [r4]
- mov r1, r10
- strh r1, [r0, 0x32]
- ldr r1, [r4]
- ldr r0, =0x00006730
- strh r0, [r1, 0x36]
- ldr r1, [r4]
- ldr r0, =gUnknown_0854FDE4
- add r0, r8
- ldrh r0, [r0]
- strh r0, [r1, 0x34]
- ldr r0, [r4]
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, [r4]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0
- bl CalcCenterToCornerVec
- ldr r1, [r4]
- ldr r0, =sub_80AE958
- str r0, [r1, 0x1C]
- b _080AE8CE
- .pool
-_080AE8BC:
- mov r2, r9
- ldr r0, [r2]
- lsls r1, r7, 2
- movs r2, 0xF0
- lsls r2, 1
- adds r0, r2
- adds r0, r1
- mov r1, r10
- str r1, [r0]
-_080AE8CE:
- mov r2, r9
- ldr r0, [r2]
- ldr r1, =0x00000717
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x4
- bls _080AE818
-_080AE8E4:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE7F8
-
- thumb_func_start sub_80AE8F8
-sub_80AE8F8: @ 80AE8F8
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- movs r2, 0xE2
- lsls r2, 3
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r3, 0x26]
- ldr r4, =0x0000070e
- adds r2, r1, r4
- ldrh r1, [r2]
- adds r1, 0x20
- movs r4, 0x2E
- ldrsh r0, [r3, r4]
- lsls r0, 6
- adds r1, r0
- strh r1, [r3, 0x20]
- lsls r1, 16
- ldr r0, =0x010f0000
- cmp r1, r0
- ble _080AE940
- movs r0, 0xF0
- lsls r0, 1
- adds r1, r0, 0
- ldrh r2, [r2]
- adds r1, r2
- movs r4, 0x2E
- ldrsh r2, [r3, r4]
- movs r0, 0x4
- subs r0, r2
- lsls r0, 6
- subs r1, r0
- ldr r0, =0x000001ff
- ands r1, r0
- strh r1, [r3, 0x20]
-_080AE940:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE8F8
-
- thumb_func_start sub_80AE958
-sub_80AE958: @ 80AE958
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x34]
- subs r0, 0x1
- strh r0, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080AE972
- ldr r0, =sub_80AE97C
- str r0, [r2, 0x1C]
-_080AE972:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE958
-
- thumb_func_start sub_80AE97C
-sub_80AE97C: @ 80AE97C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x22]
- subs r0, 0x1
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x30
- negs r1, r1
- cmp r0, r1
- bge _080AE99A
- movs r0, 0xD0
- strh r0, [r5, 0x22]
- movs r0, 0x4
- strh r0, [r5, 0x2E]
-_080AE99A:
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- ldr r3, =gSineTable
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- lsls r0, r1, 1
- adds r0, r3
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r2, r4, 0
- muls r2, r0
- adds r1, 0x40
- lsls r1, 1
- adds r1, r3
- movs r3, 0
- ldrsh r0, [r1, r3]
- muls r0, r4
- lsrs r2, 8
- strh r2, [r5, 0x24]
- lsrs r0, 8
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x30]
- adds r0, 0xA
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080AE9E6
- movs r0, 0
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_080AE9E6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AE97C
-
- thumb_func_start sub_80AE9F0
-sub_80AE9F0: @ 80AE9F0
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x000006cc
- adds r2, r1, r0
- movs r0, 0
- strh r0, [r2]
- ldr r0, =0x000006c1
- adds r2, r1, r0
- movs r0, 0x3
- strb r0, [r2]
- ldr r0, =0x000006c2
- adds r1, r0
- movs r0, 0x14
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80AE9F0
-
- thumb_func_start sub_80AEA20
-sub_80AEA20: @ 80AEA20
- push {lr}
- bl sub_80AE9F0
- pop {r0}
- bx r0
- thumb_func_end sub_80AEA20
-
- thumb_func_start nullsub_96
-nullsub_96: @ 80AEA2C
- bx lr
- thumb_func_end nullsub_96
-
- thumb_func_start sub_80AEA30
-sub_80AEA30: @ 80AEA30
- movs r0, 0
- bx lr
- thumb_func_end sub_80AEA30
-
- thumb_func_start sub_80AEA34
-sub_80AEA34: @ 80AEA34
- push {r4,r5,lr}
- bl sub_80ADA60
- ldr r0, =gUnknown_0854C14C
- ldr r4, [r0]
- ldr r1, =0x0000072e
- adds r0, r4, r1
- ldrb r5, [r0]
- cmp r5, 0
- bne _080AEA6C
- ldr r0, =gUnknown_0854FDF8
- bl LoadSpriteSheet
- movs r2, 0xE5
- lsls r2, 3
- adds r0, r4, r2
- strh r5, [r0]
- ldr r0, =gUnknown_0854FDF0
- ldrb r1, [r0]
- subs r2, 0x2
- adds r0, r4, r2
- strh r1, [r0]
- ldr r1, =0x0000072a
- adds r0, r4, r1
- strh r5, [r0]
- adds r2, 0x6
- adds r0, r4, r2
- strh r5, [r0]
-_080AEA6C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AEA34
-
- thumb_func_start sub_80AEA88
-sub_80AEA88: @ 80AEA88
- push {r4,lr}
- bl sub_80AEA34
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r2, =0x000006d2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AEAA8
- adds r4, r1, r2
-_080AEA9E:
- bl sub_80AEAB8
- ldrb r0, [r4]
- cmp r0, 0
- beq _080AEA9E
-_080AEAA8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AEA88
-
- thumb_func_start sub_80AEAB8
-sub_80AEAB8: @ 80AEAB8
- push {r4-r7,lr}
- bl sub_80ADAF0
- ldr r0, =gUnknown_0854C14C
- ldr r5, [r0]
- ldr r0, =0x00000726
- adds r4, r5, r0
- ldrh r0, [r4]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r4]
- ldr r1, =0x0000ffff
- adds r7, r1, 0
- ldr r2, =gUnknown_0854FDF0
- movs r1, 0xE5
- lsls r1, 3
- adds r3, r5, r1
- ldrh r1, [r3]
- adds r1, r2
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1]
- cmp r0, r1
- bls _080AEB10
- strh r6, [r4]
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- ands r0, r7
- cmp r0, 0x7
- bls _080AEAF8
- strh r6, [r3]
-_080AEAF8:
- ldr r0, =0x0000072a
- adds r4, r5, r0
- ldrh r0, [r4]
- bl sub_80AEB48
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ands r0, r7
- cmp r0, 0xC
- bls _080AEB10
- strh r6, [r4]
-_080AEB10:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AEAB8
-
- thumb_func_start sub_80AEB2C
-sub_80AEB2C: @ 80AEB2C
- push {lr}
- bl sub_80ADBB0
- lsls r0, 24
- cmp r0, 0
- beq _080AEB3C
- movs r0, 0x1
- b _080AEB42
-_080AEB3C:
- bl sub_80AEBD0
- movs r0, 0
-_080AEB42:
- pop {r1}
- bx r1
- thumb_func_end sub_80AEB2C
-
- thumb_func_start sub_80AEB48
-sub_80AEB48: @ 80AEB48
- push {r4,lr}
- lsls r0, 16
- ldr r1, =gUnknown_0854FE00
- lsrs r0, 14
- adds r3, r0, r1
- adds r1, 0x2
- adds r0, r1
- ldr r1, =gSpriteCoordOffsetY
- ldrh r2, [r0]
- ldrh r0, [r1]
- subs r2, r0
- ldr r0, =gSpriteTemplate_854FE44
- movs r4, 0
- ldrsh r1, [r3, r4]
- lsls r2, 16
- asrs r2, 16
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080AEBB0
- ldr r0, =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x5]
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r3]
- movs r0, 0
- strh r0, [r1, 0x2E]
- strh r0, [r1, 0x30]
- strh r0, [r1, 0x32]
- ldr r0, =gUnknown_0854C14C
- ldr r1, [r0]
- ldr r0, =0x0000072c
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080AEBB0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AEB48
-
- thumb_func_start sub_80AEBD0
-sub_80AEBD0: @ 80AEBD0
- push {r4,r5,lr}
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x0000072c
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _080AEC1A
- movs r4, 0
- ldr r5, =gSprites
-_080AEBE4:
- lsls r0, r4, 4
- adds r0, r4
- lsls r2, r0, 2
- adds r0, r5, 0
- adds r0, 0x14
- adds r0, r2, r0
- ldr r1, [r0]
- ldr r0, =gSpriteTemplate_854FE44
- cmp r1, r0
- bne _080AEBFE
- adds r0, r2, r5
- bl DestroySprite
-_080AEBFE:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3F
- bls _080AEBE4
- ldr r0, =0x00001205
- bl FreeSpriteTilesByTag
- ldr r0, =gUnknown_0854C14C
- ldr r0, [r0]
- ldr r1, =0x0000072c
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
-_080AEC1A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AEBD0
-
- thumb_func_start sub_80AEC34
-sub_80AEC34: @ 80AEC34
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x2E]
- movs r2, 0
- adds r0, 0x2
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080AEC74
- strh r2, [r1, 0x2E]
- movs r3, 0x30
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _080AEC66
- ldrh r0, [r1, 0x24]
- adds r0, 0x1
- strh r0, [r1, 0x24]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080AEC74
- movs r0, 0x1
- strh r0, [r1, 0x30]
- b _080AEC74
-_080AEC66:
- ldrh r0, [r1, 0x24]
- subs r0, 0x1
- strh r0, [r1, 0x24]
- lsls r0, 16
- cmp r0, 0
- bgt _080AEC74
- strh r2, [r1, 0x30]
-_080AEC74:
- ldrh r0, [r1, 0x22]
- subs r0, 0x3
- strh r0, [r1, 0x22]
- ldrh r0, [r1, 0x32]
- adds r0, 0x1
- strh r0, [r1, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x77
- ble _080AEC8E
- adds r0, r1, 0
- bl DestroySprite
-_080AEC8E:
- pop {r0}
- bx r0
- thumb_func_end sub_80AEC34
-
- thumb_func_start sub_80AEC94
-sub_80AEC94: @ 80AEC94
- ldr r2, =gUnknown_02038BC4
- strb r0, [r2]
- ldr r0, =gUnknown_02038BC6
- strh r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_80AEC94
-
- thumb_func_start sub_80AECA8
-sub_80AECA8: @ 80AECA8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r4, r1, r0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080AECCC
- cmp r0, 0x1
- beq _080AECF8
- b _080AED1C
- .pool
-_080AECCC:
- ldrh r0, [r4, 0x1E]
- subs r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- cmp r0, 0
- bgt _080AED1C
- ldrb r0, [r4, 0x2]
- bl weather_set
- ldr r1, =gUnknown_02038BC4
- ldrh r0, [r4, 0x2]
- strb r0, [r1]
- movs r1, 0x96
- lsls r1, 2
- adds r0, r1, 0
- strh r0, [r4, 0x1E]
- ldrh r0, [r4]
- adds r0, 0x1
- b _080AED1A
- .pool
-_080AECF8:
- ldrh r0, [r4, 0x1E]
- subs r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- cmp r0, 0
- bgt _080AED1C
- ldrb r0, [r4, 0x4]
- bl weather_set
- ldr r1, =gUnknown_02038BC4
- ldrh r0, [r4, 0x4]
- strb r0, [r1]
- movs r1, 0x96
- lsls r1, 2
- adds r0, r1, 0
- strh r0, [r4, 0x1E]
- movs r0, 0
-_080AED1A:
- strh r0, [r4]
-_080AED1C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AECA8
-
- thumb_func_start bag_add_task0_by_acit
-bag_add_task0_by_acit: @ 80AED28
- push {lr}
- ldr r0, =sub_80AECA8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r1, r0
- movs r2, 0x96
- lsls r2, 2
- adds r0, r2, 0
- strh r0, [r1, 0x1E]
- ldr r3, =gUnknown_02038BC4
- ldrb r2, [r3]
- cmp r2, 0xD
- bne _080AED60
- movs r0, 0xC
- b _080AED66
- .pool
-_080AED60:
- cmp r2, 0xC
- bne _080AED6C
- movs r0, 0xD
-_080AED66:
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- b _080AED78
-_080AED6C:
- movs r0, 0xD
- strb r0, [r3]
- movs r0, 0xC
- strh r0, [r1, 0x2]
- movs r0, 0xD
- strh r0, [r1, 0x4]
-_080AED78:
- pop {r0}
- bx r0
- thumb_func_end bag_add_task0_by_acit
-
- thumb_func_start SetSav1Weather
-SetSav1Weather: @ 80AED7C
- push {r4,r5,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- adds r1, 0x2E
- ldrb r5, [r1]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AEEE8
- ldr r1, [r4]
- adds r1, 0x2E
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x2E
- ldrb r0, [r0]
- adds r1, r5, 0
- bl sub_80AEFDC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetSav1Weather
-
- thumb_func_start GetSav1Weather
-GetSav1Weather: @ 80AEDAC
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r0, 0x2E
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end GetSav1Weather
-
- thumb_func_start SetSav1WeatherFromCurrMapHeader
-SetSav1WeatherFromCurrMapHeader: @ 80AEDBC
- push {r4,r5,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- adds r0, 0x2E
- ldrb r5, [r0]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x16]
- bl sub_80AEEE8
- ldr r1, [r4]
- adds r1, 0x2E
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x2E
- ldrb r0, [r0]
- adds r1, r5, 0
- bl sub_80AEFDC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetSav1WeatherFromCurrMapHeader
-
- thumb_func_start SetWeather
-SetWeather: @ 80AEDF0
- push {lr}
- bl SetSav1Weather
- bl GetSav1Weather
- lsls r0, 24
- lsrs r0, 24
- bl weather_set
- pop {r0}
- bx r0
- thumb_func_end SetWeather
-
- thumb_func_start sub_80AEE08
-sub_80AEE08: @ 80AEE08
- push {lr}
- bl SetSav1Weather
- bl GetSav1Weather
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AB104
- pop {r0}
- bx r0
- thumb_func_end sub_80AEE08
-
- thumb_func_start DoCurrentWeather
-DoCurrentWeather: @ 80AEE20
- push {r4,r5,lr}
- bl GetSav1Weather
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bne _080AEE4C
- ldr r0, =sub_80AECA8
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080AEE3E
- bl bag_add_task0_by_acit
-_080AEE3E:
- ldr r0, =gUnknown_02038BC4
- ldrb r4, [r0]
- b _080AEE6E
- .pool
-_080AEE4C:
- ldr r5, =sub_80AECA8
- adds r0, r5, 0
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _080AEE68
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_080AEE68:
- ldr r1, =gUnknown_02038BC4
- movs r0, 0xD
- strb r0, [r1]
-_080AEE6E:
- adds r0, r4, 0
- bl weather_set
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoCurrentWeather
-
- thumb_func_start sub_80AEE84
-sub_80AEE84: @ 80AEE84
- push {r4,r5,lr}
- bl GetSav1Weather
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bne _080AEEB0
- ldr r0, =sub_80AECA8
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080AEEA2
- bl bag_add_task0_by_acit
-_080AEEA2:
- ldr r0, =gUnknown_02038BC4
- ldrb r4, [r0]
- b _080AEED2
- .pool
-_080AEEB0:
- ldr r5, =sub_80AECA8
- adds r0, r5, 0
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _080AEECC
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_080AEECC:
- ldr r1, =gUnknown_02038BC4
- movs r0, 0xD
- strb r0, [r1]
-_080AEED2:
- adds r0, r4, 0
- bl sub_80AB104
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AEE84
-
- thumb_func_start sub_80AEEE8
-sub_80AEEE8: @ 80AEEE8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x15
- bhi _080AEFB4
- lsls r0, 2
- ldr r1, =_080AEF00
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080AEF00:
- .4byte _080AEFB4
- .4byte _080AEF58
- .4byte _080AEF5C
- .4byte _080AEF60
- .4byte _080AEF64
- .4byte _080AEF68
- .4byte _080AEF6C
- .4byte _080AEF70
- .4byte _080AEF74
- .4byte _080AEF78
- .4byte _080AEF7C
- .4byte _080AEF80
- .4byte _080AEF84
- .4byte _080AEF88
- .4byte _080AEF8C
- .4byte _080AEF90
- .4byte _080AEFB4
- .4byte _080AEFB4
- .4byte _080AEFB4
- .4byte _080AEFB4
- .4byte _080AEF94
- .4byte _080AEF9C
-_080AEF58:
- movs r0, 0x1
- b _080AEFB6
-_080AEF5C:
- movs r0, 0x2
- b _080AEFB6
-_080AEF60:
- movs r0, 0x3
- b _080AEFB6
-_080AEF64:
- movs r0, 0x4
- b _080AEFB6
-_080AEF68:
- movs r0, 0x5
- b _080AEFB6
-_080AEF6C:
- movs r0, 0x6
- b _080AEFB6
-_080AEF70:
- movs r0, 0x7
- b _080AEFB6
-_080AEF74:
- movs r0, 0x8
- b _080AEFB6
-_080AEF78:
- movs r0, 0x9
- b _080AEFB6
-_080AEF7C:
- movs r0, 0xA
- b _080AEFB6
-_080AEF80:
- movs r0, 0xB
- b _080AEFB6
-_080AEF84:
- movs r0, 0xC
- b _080AEFB6
-_080AEF88:
- movs r0, 0xD
- b _080AEFB6
-_080AEF8C:
- movs r0, 0xE
- b _080AEFB6
-_080AEF90:
- movs r0, 0xF
- b _080AEFB6
-_080AEF94:
- ldr r1, =gUnknown_0854FE5C
- b _080AEF9E
- .pool
-_080AEF9C:
- ldr r1, =gUnknown_0854FE60
-_080AEF9E:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r0, 0x2F
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- b _080AEFB6
- .pool
-_080AEFB4:
- movs r0, 0
-_080AEFB6:
- pop {r1}
- bx r1
- thumb_func_end sub_80AEEE8
-
- thumb_func_start UpdateWeatherPerDay
-UpdateWeatherPerDay: @ 80AEFBC
- lsls r0, 16
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- adds r2, 0x2F
- lsrs r0, 16
- ldrb r1, [r2]
- adds r0, r1
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsrs r1, 16
- strb r1, [r2]
- bx lr
- .pool
- thumb_func_end UpdateWeatherPerDay
-
- thumb_func_start sub_80AEFDC
-sub_80AEFDC: @ 80AEFDC
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r2, r0, 24
- cmp r0, r1
- beq _080AEFF6
- cmp r2, 0x3
- beq _080AEFF0
- cmp r2, 0x5
- bne _080AEFF6
-_080AEFF0:
- movs r0, 0x28
- bl IncrementGameStat
-_080AEFF6:
- pop {r0}
- bx r0
- thumb_func_end sub_80AEFDC
-
- thumb_func_start palette_bg_faded_fill_white
-palette_bg_faded_fill_white: @ 80AEFFC
- push {lr}
- sub sp, 0x4
- ldr r0, =0x7fff7fff
- str r0, [sp]
- ldr r1, =gPlttBufferFaded
- ldr r2, =0x01000100
- mov r0, sp
- bl CpuFastSet
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end palette_bg_faded_fill_white
-
- thumb_func_start palette_bg_faded_fill_black
-palette_bg_faded_fill_black: @ 80AF020
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r1, =gPlttBufferFaded
- ldr r2, =0x01000100
- mov r0, sp
- bl CpuFastSet
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end palette_bg_faded_fill_black
-
- thumb_func_start pal_fill_for_maplights
-pal_fill_for_maplights: @ 80AF040
- push {r4,lr}
- bl GetLastUsedWarpMapType
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Overworld_GetMapTypeOfSaveblockLocation
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl fade_type_for_given_maplight_pair
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080AF06A
- cmp r0, 0x1
- beq _080AF078
- b _080AF084
-_080AF06A:
- bl palette_bg_faded_fill_black
- movs r0, 0
- movs r1, 0
- bl FadeScreen
- b _080AF084
-_080AF078:
- bl palette_bg_faded_fill_white
- movs r0, 0x2
- movs r1, 0
- bl FadeScreen
-_080AF084:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end pal_fill_for_maplights
-
- thumb_func_start sub_80AF08C
-sub_80AF08C: @ 80AF08C
- push {lr}
- bl palette_bg_faded_fill_white
- movs r0, 0x2
- movs r1, 0x8
- bl FadeScreen
- pop {r0}
- bx r0
- thumb_func_end sub_80AF08C
-
- thumb_func_start pal_fill_black
-pal_fill_black: @ 80AF0A0
- push {lr}
- bl palette_bg_faded_fill_black
- movs r0, 0
- movs r1, 0
- bl FadeScreen
- pop {r0}
- bx r0
- thumb_func_end pal_fill_black
-
- thumb_func_start sub_80AF0B4
-sub_80AF0B4: @ 80AF0B4
- push {r4,lr}
- bl Overworld_GetMapTypeOfSaveblockLocation
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl GetDestinationWarpMapHeader
- ldrb r1, [r0, 0x17]
- adds r0, r4, 0
- bl sub_8137360
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080AF0DA
- cmp r0, 0x1
- beq _080AF0E4
- b _080AF0EC
-_080AF0DA:
- movs r0, 0x1
- movs r1, 0
- bl FadeScreen
- b _080AF0EC
-_080AF0E4:
- movs r0, 0x3
- movs r1, 0
- bl FadeScreen
-_080AF0EC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF0B4
-
- thumb_func_start sub_80AF0F4
-sub_80AF0F4: @ 80AF0F4
- push {lr}
- lsls r0, 24
- movs r1, 0
- cmp r0, 0
- bne _080AF100
- movs r1, 0x1
-_080AF100:
- adds r0, r1, 0
- bl sub_808C0A8
- pop {r0}
- bx r0
- thumb_func_end sub_80AF0F4
-
- thumb_func_start task0A_nop_for_a_while
-task0A_nop_for_a_while: @ 80AF10C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80AF71C
- cmp r0, 0x1
- bne _080AF120
- adds r0, r4, 0
- bl DestroyTask
-_080AF120:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task0A_nop_for_a_while
-
- thumb_func_start sub_80AF128
-sub_80AF128: @ 80AF128
- push {lr}
- bl ScriptContext2_Enable
- bl Overworld_PlaySpecialMapMusic
- bl pal_fill_black
- ldr r0, =task0A_nop_for_a_while
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF128
-
- thumb_func_start task0A_asap_script_env_2_enable_and_set_ctx_running
-task0A_asap_script_env_2_enable_and_set_ctx_running: @ 80AF148
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80AF71C
- cmp r0, 0x1
- bne _080AF160
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_080AF160:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task0A_asap_script_env_2_enable_and_set_ctx_running
-
- thumb_func_start sub_80AF168
-sub_80AF168: @ 80AF168
- push {lr}
- bl ScriptContext2_Enable
- bl Overworld_PlaySpecialMapMusic
- bl pal_fill_black
- ldr r0, =task0A_asap_script_env_2_enable_and_set_ctx_running
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF168
-
- thumb_func_start sub_80AF188
-sub_80AF188: @ 80AF188
- push {lr}
- bl ScriptContext2_Enable
- bl pal_fill_black
- ldr r0, =task0A_asap_script_env_2_enable_and_set_ctx_running
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF188
-
- thumb_func_start task_mpl_807DD60
-task_mpl_807DD60: @ 80AF1A4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r2, =gTasks
- adds r4, r0, r2
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080AF1DE
- cmp r0, 0x1
- bgt _080AF1CC
- cmp r0, 0
- beq _080AF1D2
- b _080AF20E
- .pool
-_080AF1CC:
- cmp r0, 0x2
- beq _080AF1FC
- b _080AF20E
-_080AF1D2:
- bl sub_80B3050
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- b _080AF1F4
-_080AF1DE:
- 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 _080AF20E
- bl pal_fill_for_maplights
-_080AF1F4:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AF20E
-_080AF1FC:
- bl sub_80AF71C
- cmp r0, 0x1
- bne _080AF20E
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_080AF20E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end task_mpl_807DD60
-
- thumb_func_start sub_80AF214
-sub_80AF214: @ 80AF214
- push {lr}
- bl ScriptContext2_Enable
- bl Overworld_PlaySpecialMapMusic
- bl palette_bg_faded_fill_black
- ldr r0, =task_mpl_807DD60
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF214
-
- thumb_func_start sub_80AF234
-sub_80AF234: @ 80AF234
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080AF268
- cmp r0, 0x1
- bgt _080AF25C
- cmp r0, 0
- beq _080AF262
- b _080AF2AE
- .pool
-_080AF25C:
- cmp r0, 0x2
- beq _080AF298
- b _080AF2AE
-_080AF262:
- bl sub_800ADF8
- b _080AF290
-_080AF268:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _080AF28C
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- movs r1, 0xE1
- lsls r1, 19
- cmp r0, r1
- ble _080AF2AE
- movs r0, 0xC0
- lsls r0, 7
- bl sub_8011170
- b _080AF2AE
-_080AF28C:
- bl pal_fill_for_maplights
-_080AF290:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AF2AE
-_080AF298:
- bl sub_80AF71C
- cmp r0, 0x1
- bne _080AF2AE
- bl sub_8009F18
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_080AF2AE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF234
-
- thumb_func_start sub_80AF2B4
-sub_80AF2B4: @ 80AF2B4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080AF2E8
- cmp r0, 0x1
- bgt _080AF2DC
- cmp r0, 0
- beq _080AF2E2
- b _080AF30C
- .pool
-_080AF2DC:
- cmp r0, 0x2
- beq _080AF2FA
- b _080AF30C
-_080AF2E2:
- bl sub_800ADF8
- b _080AF2F2
-_080AF2E8:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _080AF30C
-_080AF2F2:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AF30C
-_080AF2FA:
- bl sub_8009F18
- bl sub_8086C2C
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_080AF30C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF2B4
-
- thumb_func_start sub_80AF314
-sub_80AF314: @ 80AF314
- push {lr}
- bl ScriptContext2_Enable
- bl Overworld_PlaySpecialMapMusic
- bl palette_bg_faded_fill_black
- ldr r0, =sub_80AF234
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF314
-
- thumb_func_start sub_80AF334
-sub_80AF334: @ 80AF334
- 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 _080AF36C
- ldr r1, =sub_80AF438
- b _080AF37E
- .pool
-_080AF36C:
- adds r0, r4, 0
- bl MetatileBehavior_IsNonAnimDoor
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =task_map_chg_seq_0807E2CC
- cmp r0, 0x1
- bne _080AF37E
- ldr r1, =task_map_chg_seq_0807E20C
-_080AF37E:
- adds r0, r1, 0
- movs r1, 0xA
- bl CreateTask
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF334
-
- thumb_func_start mapldr_default
-mapldr_default: @ 80AF398
- push {lr}
- bl Overworld_PlaySpecialMapMusic
- bl pal_fill_for_maplights
- bl sub_80AF334
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- thumb_func_end mapldr_default
-
- thumb_func_start sub_80AF3B0
-sub_80AF3B0: @ 80AF3B0
- push {lr}
- bl Overworld_PlaySpecialMapMusic
- bl sub_80AF08C
- bl sub_80AF334
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- thumb_func_end sub_80AF3B0
-
- thumb_func_start sub_80AF3C8
-sub_80AF3C8: @ 80AF3C8
- push {lr}
- bl sub_81D6534
- cmp r0, 0
- bne _080AF3D6
- bl Overworld_PlaySpecialMapMusic
-_080AF3D6:
- bl pal_fill_black
- bl sub_80AF334
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- thumb_func_end sub_80AF3C8
-
- thumb_func_start sub_80AF3E8
-sub_80AF3E8: @ 80AF3E8
- push {lr}
- bl Overworld_PlaySpecialMapMusic
- bl pal_fill_for_maplights
- movs r0, 0x2E
- bl PlaySE
- ldr r0, =task0A_mpl_807E31C
- movs r1, 0xA
- bl CreateTask
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF3E8
-
- thumb_func_start sub_80AF40C
-sub_80AF40C: @ 80AF40C
- push {lr}
- bl Overworld_PlaySpecialMapMusic
- bl pal_fill_for_maplights
- movs r0, 0x2E
- bl PlaySE
- ldr r0, =task_map_chg_seq_0807E2CC
- movs r1, 0xA
- bl CreateTask
- bl ScriptContext2_Enable
- movs r0, 0xE
- bl sub_8085540
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF40C
-
- thumb_func_start sub_80AF438
-sub_80AF438: @ 80AF438
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =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 _080AF54A
- lsls r0, 2
- ldr r1, =_080AF46C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080AF46C:
- .4byte _080AF480
- .4byte _080AF4A4
- .4byte _080AF4DC
- .4byte _080AF520
- .4byte _080AF540
-_080AF480:
- movs r0, 0
- bl sub_80AF0F4
- bl FreezeEventObjects
- 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 _080AF54A
-_080AF4A4:
- bl sub_80AF71C
- cmp r0, 0
- beq _080AF54A
- movs r0, 0x1
- bl sub_80AF0F4
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetEventObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gEventObjects
- adds r0, r1
- movs r1, 0x8
- bl EventObjectSetHeldMovement
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _080AF54A
- .pool
-_080AF4DC:
- bl walkrun_is_standing_still
- lsls r0, 24
- cmp r0, 0
- beq _080AF54A
- 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 GetEventObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gEventObjects
- adds r0, r1
- bl EventObjectClearHeldMovementIfFinished
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _080AF54A
- .pool
-_080AF520:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- blt _080AF536
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _080AF54A
-_080AF536:
- bl UnfreezeEventObjects
- movs r0, 0x4
- strh r0, [r5, 0x8]
- b _080AF54A
-_080AF540:
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
-_080AF54A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF438
-
- thumb_func_start task_map_chg_seq_0807E20C
-task_map_chg_seq_0807E20C: @ 80AF550
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =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 _080AF5A2
- cmp r0, 0x1
- bgt _080AF580
- cmp r0, 0
- beq _080AF58A
- b _080AF60A
- .pool
-_080AF580:
- cmp r0, 0x2
- beq _080AF5EC
- cmp r0, 0x3
- beq _080AF600
- b _080AF60A
-_080AF58A:
- movs r0, 0
- bl sub_80AF0F4
- bl FreezeEventObjects
- adds r0, r6, 0
- adds r1, r7, 0
- bl PlayerGetDestCoords
- movs r0, 0x1
- strh r0, [r5, 0x8]
- b _080AF60A
-_080AF5A2:
- bl sub_80AF71C
- cmp r0, 0
- beq _080AF60A
- movs r0, 0x1
- bl sub_80AF0F4
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetEventObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, =gEventObjects
- adds r4, r0
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- bl GetWalkNormalMovementAction
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl EventObjectSetHeldMovement
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _080AF60A
- .pool
-_080AF5EC:
- bl walkrun_is_standing_still
- lsls r0, 24
- cmp r0, 0
- beq _080AF60A
- bl UnfreezeEventObjects
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _080AF60A
-_080AF600:
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
-_080AF60A:
- 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: @ 80AF610
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =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 _080AF634
- cmp r0, 0x1
- beq _080AF644
- b _080AF65A
- .pool
-_080AF634:
- bl FreezeEventObjects
- bl ScriptContext2_Enable
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AF65A
-_080AF644:
- bl sub_80AF71C
- cmp r0, 0
- beq _080AF65A
- bl UnfreezeEventObjects
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_080AF65A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end task_map_chg_seq_0807E2CC
-
- thumb_func_start sub_80AF660
-sub_80AF660: @ 80AF660
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80AF71C
- cmp r0, 0x1
- bne _080AF67C
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, =sub_809FA34
- movs r1, 0x50
- bl CreateTask
-_080AF67C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF660
-
- thumb_func_start sub_80AF688
-sub_80AF688: @ 80AF688
- push {lr}
- bl pal_fill_black
- ldr r0, =sub_80AF660
- movs r1, 0x50
- bl CreateTask
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF688
-
- thumb_func_start sub_80AF6A4
-sub_80AF6A4: @ 80AF6A4
- push {lr}
- bl sub_809FA18
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_80AF6A4
-
- thumb_func_start task_mpl_807E3C8
-task_mpl_807E3C8: @ 80AF6B0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80AF71C
- cmp r0, 0x1
- bne _080AF6CC
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
- bl ScriptUnfreezeEventObjects
-_080AF6CC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task_mpl_807E3C8
-
- thumb_func_start sub_80AF6D4
-sub_80AF6D4: @ 80AF6D4
- push {lr}
- bl ScriptContext2_Enable
- bl pal_fill_black
- ldr r0, =task_mpl_807E3C8
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF6D4
-
- thumb_func_start sub_80AF6F0
-sub_80AF6F0: @ 80AF6F0
- push {lr}
- bl ScriptContext2_Enable
- bl Overworld_PlaySpecialMapMusic
- bl pal_fill_black
- ldr r0, =task_mpl_807E3C8
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF6F0
-
- thumb_func_start sub_80AF710
-sub_80AF710: @ 80AF710
- ldr r0, =gPaletteFade
- ldrb r0, [r0, 0x7]
- lsrs r0, 7
- bx lr
- .pool
- thumb_func_end sub_80AF710
-
- thumb_func_start sub_80AF71C
-sub_80AF71C: @ 80AF71C
- push {lr}
- bl IsWeatherNotFadingIn
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080AF72E
- movs r0, 0
- b _080AF730
-_080AF72E:
- movs r0, 0x1
-_080AF730:
- pop {r1}
- bx r1
- thumb_func_end sub_80AF71C
-
- thumb_func_start sub_80AF734
-sub_80AF734: @ 80AF734
- push {lr}
- bl ScriptContext2_Enable
- bl music_something
- bl sub_80AF0B4
- bl play_some_sound
- movs r0, 0x9
- bl PlaySE
- ldr r0, =gFieldCallback
- ldr r1, =mapldr_default
- str r1, [r0]
- ldr r0, =sub_80AFA0C
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF734
-
- thumb_func_start sp13E_warp_to_last_warp
-sp13E_warp_to_last_warp: @ 80AF76C
- push {lr}
- bl ScriptContext2_Enable
- bl music_something
- bl sub_80AF0B4
- bl play_some_sound
- ldr r0, =gFieldCallback
- ldr r1, =mapldr_default
- str r1, [r0]
- ldr r0, =sub_80AFA0C
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sp13E_warp_to_last_warp
-
- thumb_func_start sub_80AF79C
-sub_80AF79C: @ 80AF79C
- push {lr}
- bl ScriptContext2_Enable
- bl music_something
- movs r0, 0x3
- movs r1, 0x8
- bl FadeScreen
- bl play_some_sound
- ldr r0, =gFieldCallback
- ldr r1, =sub_80AF3B0
- str r1, [r0]
- ldr r0, =sub_80AFA0C
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF79C
-
- thumb_func_start sub_80AF7D0
-sub_80AF7D0: @ 80AF7D0
- push {lr}
- bl ScriptContext2_Enable
- ldr r0, =gFieldCallback
- ldr r1, =mapldr_default
- str r1, [r0]
- ldr r0, =sub_80AFA88
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF7D0
-
- thumb_func_start sp13F_fall_to_last_warp
-sp13F_fall_to_last_warp: @ 80AF7F4
- push {lr}
- bl sp13E_warp_to_last_warp
- ldr r1, =gFieldCallback
- ldr r0, =sub_80B6B68
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sp13F_fall_to_last_warp
-
- thumb_func_start sub_80AF80C
-sub_80AF80C: @ 80AF80C
- 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_80B6E4C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF80C
-
- thumb_func_start sub_80AF828
-sub_80AF828: @ 80AF828
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0xA
- bl sub_80B75D8
- pop {r0}
- bx r0
- thumb_func_end sub_80AF828
-
- thumb_func_start sub_80AF838
-sub_80AF838: @ 80AF838
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0xA
- bl sub_80B7A74
- pop {r0}
- bx r0
- thumb_func_end sub_80AF838
-
- thumb_func_start sub_80AF848
-sub_80AF848: @ 80AF848
- push {lr}
- bl ScriptContext2_Enable
- bl music_something
- bl sub_80AF0B4
- movs r0, 0x2D
- bl PlaySE
- ldr r0, =sub_80AFA0C
- movs r1, 0xA
- bl CreateTask
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF3E8
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF848
-
- thumb_func_start sub_80AF87C
-sub_80AF87C: @ 80AF87C
- push {lr}
- movs r0, 0x1
- bl sub_8085540
- bl ScriptContext2_Enable
- bl SaveEventObjects
- bl music_something
- bl sub_80AF0B4
- movs r0, 0x2D
- bl PlaySE
- ldr r0, =sub_80AFA0C
- movs r1, 0xA
- bl CreateTask
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF40C
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF87C
-
- thumb_func_start sub_80AF8B8
-sub_80AF8B8: @ 80AF8B8
- push {lr}
- bl ScriptContext2_Enable
- bl sub_80AF0B4
- ldr r0, =sub_80AFA0C
- movs r1, 0xA
- bl CreateTask
- ldr r1, =gFieldCallback
- ldr r0, =sub_80FB768
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF8B8
-
- thumb_func_start sub_80AF8E0
-sub_80AF8E0: @ 80AF8E0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080AF914
- cmp r0, 0x1
- bgt _080AF908
- cmp r0, 0
- beq _080AF90E
- b _080AF93E
- .pool
-_080AF908:
- cmp r0, 0x2
- beq _080AF92E
- b _080AF93E
-_080AF90E:
- bl ScriptContext2_Enable
- b _080AF926
-_080AF914:
- bl sub_80AF710
- cmp r0, 0
- bne _080AF93E
- bl BGMusicStopped
- lsls r0, 24
- cmp r0, 0
- beq _080AF93E
-_080AF926:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AF93E
-_080AF92E:
- bl WarpIntoMap
- ldr r0, =sub_8086074
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_080AF93E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF8E0
-
- thumb_func_start sub_80AF948
-sub_80AF948: @ 80AF948
- push {lr}
- bl ScriptContext2_Enable
- bl music_something
- bl sub_80AF0B4
- movs r0, 0x9
- bl PlaySE
- ldr r0, =sub_80AF8E0
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF948
-
- thumb_func_start sub_80AF96C
-sub_80AF96C: @ 80AF96C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080AF9B2
- cmp r0, 0x1
- bgt _080AF994
- cmp r0, 0
- beq _080AF99A
- b _080AF9E8
- .pool
-_080AF994:
- cmp r0, 0x2
- beq _080AF9D0
- b _080AF9E8
-_080AF99A:
- bl ClearLinkCallback_2
- movs r0, 0x1
- movs r1, 0
- bl FadeScreen
- bl music_something
- movs r0, 0x9
- bl PlaySE
- b _080AF9C8
-_080AF9B2:
- bl sub_80AF710
- cmp r0, 0
- bne _080AF9E8
- bl BGMusicStopped
- lsls r0, 24
- cmp r0, 0
- beq _080AF9E8
- bl sub_800AC34
-_080AF9C8:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080AF9E8
-_080AF9D0:
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080AF9E8
- bl WarpIntoMap
- ldr r0, =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_080AF9E8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF96C
-
- thumb_func_start sub_80AF9F8
-sub_80AF9F8: @ 80AF9F8
- push {lr}
- ldr r0, =sub_80AF96C
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AF9F8
-
- thumb_func_start sub_80AFA0C
-sub_80AFA0C: @ 80AFA0C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080AFA44
- cmp r5, 0x1
- bgt _080AFA34
- cmp r5, 0
- beq _080AFA3A
- b _080AFA7C
- .pool
-_080AFA34:
- cmp r5, 0x2
- beq _080AFA6C
- b _080AFA7C
-_080AFA3A:
- bl FreezeEventObjects
- bl ScriptContext2_Enable
- b _080AFA64
-_080AFA44:
- bl sub_80AF710
- cmp r0, 0
- bne _080AFA7C
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AFA5A
- bl sub_81BE72C
- strh r5, [r4, 0xA]
-_080AFA5A:
- bl BGMusicStopped
- lsls r0, 24
- cmp r0, 0
- beq _080AFA7C
-_080AFA64:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AFA7C
-_080AFA6C:
- bl WarpIntoMap
- ldr r0, =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r6, 0
- bl DestroyTask
-_080AFA7C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AFA0C
-
- thumb_func_start sub_80AFA88
-sub_80AFA88: @ 80AFA88
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =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 _080AFAAC
- b _080AFBE8
-_080AFAAC:
- lsls r0, r1, 2
- ldr r1, =_080AFAC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080AFAC0:
- .4byte _080AFAD4
- .4byte _080AFB10
- .4byte _080AFB6C
- .4byte _080AFBB8
- .4byte _080AFBD4
-_080AFAD4:
- bl FreezeEventObjects
- 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 GetDoorSoundEffect
- 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 _080AFBE8
-_080AFB10:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- blt _080AFB26
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _080AFBE8
-_080AFB26:
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetEventObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r4, =gEventObjects
- adds r0, r4
- bl EventObjectClearHeldMovementIfActive
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetEventObjectIdByLocalIdAndMap
- 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 EventObjectSetHeldMovement
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _080AFBE8
- .pool
-_080AFB6C:
- bl walkrun_is_standing_still
- lsls r0, 24
- cmp r0, 0
- beq _080AFBE8
- 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 GetEventObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gEventObjects
- adds r0, r1
- bl EventObjectClearHeldMovementIfFinished
- movs r0, 0
- bl sub_80AF0F4
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _080AFBE8
- .pool
-_080AFBB8:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- blt _080AFBCE
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _080AFBE8
-_080AFBCE:
- movs r0, 0x4
- strh r0, [r5, 0x8]
- b _080AFBE8
-_080AFBD4:
- bl music_something
- bl sub_80AF0B4
- bl play_some_sound
- movs r0, 0
- strh r0, [r5, 0x8]
- ldr r0, =sub_80AFA0C
- str r0, [r5]
-_080AFBE8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AFA88
-
- thumb_func_start task0A_fade_n_map_maybe
-task0A_fade_n_map_maybe: @ 80AFBF4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080AFC2C
- cmp r0, 0x1
- bgt _080AFC1C
- cmp r0, 0
- beq _080AFC22
- b _080AFC56
- .pool
-_080AFC1C:
- cmp r0, 0x2
- beq _080AFC46
- b _080AFC56
-_080AFC22:
- bl FreezeEventObjects
- bl ScriptContext2_Enable
- b _080AFC3E
-_080AFC2C:
- bl sub_80AF710
- cmp r0, 0
- bne _080AFC56
- bl BGMusicStopped
- lsls r0, 24
- cmp r0, 0
- beq _080AFC56
-_080AFC3E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AFC56
-_080AFC46:
- bl WarpIntoMap
- ldr r0, =sub_8086024
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_080AFC56:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task0A_fade_n_map_maybe
-
- thumb_func_start sub_80AFC60
-sub_80AFC60: @ 80AFC60
- push {lr}
- bl ScriptContext2_Enable
- bl music_something
- bl sub_80AF0B4
- bl play_some_sound
- movs r0, 0x9
- bl PlaySE
- ldr r0, =gFieldCallback
- ldr r1, =sub_80AF3C8
- str r1, [r0]
- ldr r0, =task0A_fade_n_map_maybe
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AFC60
-
- thumb_func_start sub_80AFC98
-sub_80AFC98: @ 80AFC98
- push {lr}
- cmp r1, 0xA0
- bhi _080AFCC0
- cmp r2, 0
- bge _080AFCA4
- movs r2, 0
-_080AFCA4:
- cmp r2, 0xFF
- ble _080AFCAA
- movs r2, 0xFF
-_080AFCAA:
- cmp r3, 0
- bge _080AFCB0
- movs r3, 0
-_080AFCB0:
- cmp r3, 0xFF
- ble _080AFCB6
- movs r3, 0xFF
-_080AFCB6:
- lsls r1, 1
- adds r1, r0
- lsls r0, r2, 8
- orrs r0, r3
- strh r0, [r1]
-_080AFCC0:
- pop {r0}
- bx r0
- thumb_func_end sub_80AFC98
-
- thumb_func_start sub_80AFCC4
-sub_80AFCC4: @ 80AFCC4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- str r0, [sp]
- mov r10, r1
- mov r9, r2
- adds r6, r3, 0
- mov r8, r6
- movs r7, 0
- cmp r6, 0
- blt _080AFD40
-_080AFCE0:
- mov r0, r9
- subs r1, r0, r7
- mov r0, r10
- subs r4, r0, r6
- adds r5, r0, r6
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_80AFC98
- mov r0, r9
- adds r1, r0, r7
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_80AFC98
- mov r0, r9
- subs r1, r0, r6
- mov r0, r10
- subs r4, r0, r7
- adds r5, r0, r7
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_80AFC98
- mov r0, r9
- adds r1, r0, r6
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_80AFC98
- mov r1, r8
- adds r1, 0x1
- lsls r0, r7, 1
- subs r1, r0
- mov r8, r1
- adds r7, 0x1
- cmp r1, 0
- bge _080AFD3C
- subs r1, r6, 0x1
- lsls r0, r1, 1
- add r8, r0
- adds r6, r1, 0
-_080AFD3C:
- cmp r6, r7
- bge _080AFCE0
-_080AFD40:
- 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_80AFCC4
-
- thumb_func_start sub_80AFD50
-sub_80AFD50: @ 80AFD50
- push {lr}
- cmp r1, 0xA0
- bhi _080AFD78
- cmp r2, 0
- bge _080AFD5C
- movs r2, 0
-_080AFD5C:
- cmp r2, 0xF0
- ble _080AFD62
- movs r2, 0xF0
-_080AFD62:
- cmp r3, 0
- bge _080AFD68
- movs r3, 0
-_080AFD68:
- cmp r3, 0xF0
- ble _080AFD6E
- movs r3, 0xF0
-_080AFD6E:
- lsls r1, 1
- adds r1, r0
- lsls r0, r2, 8
- orrs r0, r3
- strh r0, [r1]
-_080AFD78:
- pop {r0}
- bx r0
- thumb_func_end sub_80AFD50
-
- thumb_func_start sub_80AFD7C
-sub_80AFD7C: @ 80AFD7C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- str r0, [sp]
- mov r10, r1
- mov r9, r2
- adds r6, r3, 0
- mov r8, r6
- movs r7, 0
- cmp r6, 0
- blt _080AFDF8
-_080AFD98:
- mov r0, r9
- subs r1, r0, r7
- mov r0, r10
- subs r4, r0, r6
- adds r5, r0, r6
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_80AFD50
- mov r0, r9
- adds r1, r0, r7
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_80AFD50
- mov r0, r9
- subs r1, r0, r6
- mov r0, r10
- subs r4, r0, r7
- adds r5, r0, r7
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_80AFD50
- mov r0, r9
- adds r1, r0, r6
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_80AFD50
- mov r1, r8
- adds r1, 0x1
- lsls r0, r7, 1
- subs r1, r0
- mov r8, r1
- adds r7, 0x1
- cmp r1, 0
- bge _080AFDF4
- subs r1, r6, 0x1
- lsls r0, r1, 1
- add r8, r0
- adds r6, r1, 0
-_080AFDF4:
- cmp r6, r7
- bge _080AFD98
-_080AFDF8:
- 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_80AFD7C
-
- thumb_func_start sub_80AFE08
-sub_80AFE08: @ 80AFE08
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080AFE64
- cmp r0, 0x1
- bgt _080AFE30
- cmp r0, 0
- beq _080AFE36
- b _080AFEC6
- .pool
-_080AFE30:
- cmp r0, 0x2
- beq _080AFEBC
- b _080AFEC6
-_080AFE36:
- ldr r0, =gScanlineEffect
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, =gScanlineEffectRegBuffers
- adds r0, r1
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r5, 0x6
- ldrsh r3, [r4, r5]
- bl sub_80AFCC4
- movs r0, 0x1
- strh r0, [r4]
- b _080AFEC6
- .pool
-_080AFE64:
- ldr r0, =gScanlineEffect
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, =gScanlineEffectRegBuffers
- adds r0, r1
- movs r6, 0x2
- ldrsh r1, [r4, r6]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r6, 0x6
- ldrsh r3, [r4, r6]
- bl sub_80AFCC4
- movs r0, 0
- strh r0, [r4]
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r4, 0x6]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _080AFEC6
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _080AFEB4
- bl ScanlineEffect_Stop
- movs r0, 0x2
- strh r0, [r4]
- b _080AFEC6
- .pool
-_080AFEB4:
- adds r0, r5, 0
- bl DestroyTask
- b _080AFEC6
-_080AFEBC:
- bl ScanlineEffect_Clear
- adds r0, r5, 0
- bl DestroyTask
-_080AFEC6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80AFE08
-
- thumb_func_start sub_80AFECC
-sub_80AFECC: @ 80AFECC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080AFF28
- cmp r0, 0x1
- bgt _080AFEF4
- cmp r0, 0
- beq _080AFEFA
- b _080AFF8A
- .pool
-_080AFEF4:
- cmp r0, 0x2
- beq _080AFF80
- b _080AFF8A
-_080AFEFA:
- ldr r0, =gScanlineEffect
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, =gScanlineEffectRegBuffers
- adds r0, r1
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r5, 0x6
- ldrsh r3, [r4, r5]
- bl sub_80AFD7C
- movs r0, 0x1
- strh r0, [r4]
- b _080AFF8A
- .pool
-_080AFF28:
- ldr r0, =gScanlineEffect
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, =gScanlineEffectRegBuffers
- adds r0, r1
- movs r6, 0x2
- ldrsh r1, [r4, r6]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r6, 0x6
- ldrsh r3, [r4, r6]
- bl sub_80AFD7C
- movs r0, 0
- strh r0, [r4]
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r4, 0x6]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _080AFF8A
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _080AFF78
- bl ScanlineEffect_Stop
- movs r0, 0x2
- strh r0, [r4]
- b _080AFF8A
- .pool
-_080AFF78:
- adds r0, r5, 0
- bl DestroyTask
- b _080AFF8A
-_080AFF80:
- bl ScanlineEffect_Clear
- adds r0, r5, 0
- bl DestroyTask
-_080AFF8A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80AFECC
-
- thumb_func_start sub_80AFF90
-sub_80AFF90: @ 80AFF90
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =sub_80AFE08
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080AFFAC
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_080AFFAC:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AFF90
-
- thumb_func_start sub_80AFFB8
-sub_80AFFB8: @ 80AFFB8
- push {r4,lr}
- ldr r4, =sub_80AFF90
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080AFFD0
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
-_080AFFD0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AFFB8
-
- thumb_func_start sub_80AFFDC
-sub_80AFFDC: @ 80AFFDC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- mov r9, r1
- adds r5, r2, 0
- adds r4, r3, 0
- ldr r6, [sp, 0x1C]
- ldr r0, [sp, 0x20]
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =sub_80AFE08
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r1, r0, r1
- strh r5, [r1, 0x6]
- strh r4, [r1, 0x8]
- mov r0, r8
- strh r0, [r1, 0x2]
- mov r0, r9
- strh r0, [r1, 0x4]
- strh r6, [r1, 0xC]
- cmp r5, r4
- bge _080B0028
- strh r7, [r1, 0xA]
- b _080B002C
- .pool
-_080B0028:
- negs r0, r7
- strh r0, [r1, 0xA]
-_080B002C:
- adds r0, r2, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80AFFDC
-
- thumb_func_start sub_80B003C
-sub_80B003C: @ 80B003C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- mov r9, r1
- adds r5, r2, 0
- adds r4, r3, 0
- ldr r6, [sp, 0x1C]
- ldr r0, [sp, 0x20]
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =sub_80AFECC
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r1, r0, r1
- strh r5, [r1, 0x6]
- strh r4, [r1, 0x8]
- mov r0, r8
- strh r0, [r1, 0x2]
- mov r0, r9
- strh r0, [r1, 0x4]
- strh r6, [r1, 0xC]
- cmp r5, r4
- bge _080B0088
- strh r7, [r1, 0xA]
- b _080B008C
- .pool
-_080B0088:
- negs r0, r7
- strh r0, [r1, 0xA]
-_080B008C:
- adds r0, r2, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80B003C
-
- thumb_func_start sub_80B009C
-sub_80B009C: @ 80B009C
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- bl Overworld_GetFlashLevel
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- cmp r4, 0
- bne _080B00B6
- movs r5, 0x1
-_080B00B6:
- ldr r1, =gUnknown_0854FE64
- lsls r0, 1
- adds r0, r1
- ldrh r2, [r0]
- lsls r0, r4, 1
- adds r0, r1
- ldrh r3, [r0]
- str r5, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x78
- movs r1, 0x50
- bl sub_80AFFDC
- bl sub_80AFFB8
- bl ScriptContext2_Enable
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B009C
-
- thumb_func_start sub_80B00E8
-sub_80B00E8: @ 80B00E8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080B0116
- ldr r4, =gScanlineEffectRegBuffers
- ldr r1, =gUnknown_0854FE64
- lsls r0, 1
- adds r0, r1
- ldrh r3, [r0]
- adds r0, r4, 0
- movs r1, 0x78
- movs r2, 0x50
- bl sub_80AFCC4
- movs r0, 0xF0
- lsls r0, 3
- adds r1, r4, r0
- movs r2, 0xF0
- lsls r2, 1
- adds r0, r4, 0
- bl CpuFastSet
-_080B0116:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B00E8
-
- thumb_func_start door_upload_tiles
-door_upload_tiles: @ 80B0124
- push {r4,lr}
- ldr r4, =gScanlineEffectRegBuffers
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, =0x00000e68
- adds r0, r1
- ldrb r3, [r0]
- adds r0, r4, 0
- movs r1, 0x78
- movs r2, 0x50
- bl sub_80AFCC4
- movs r0, 0xF0
- lsls r0, 3
- adds r1, r4, r0
- movs r2, 0xF0
- lsls r2, 1
- adds r0, r4, 0
- bl CpuFastSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end door_upload_tiles
-
- thumb_func_start task0A_mpl_807E31C
-task0A_mpl_807E31C: @ 80B0160
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =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 _080B0184
- cmp r0, 0x1
- beq _080B0198
- b _080B01B6
- .pool
-_080B0184:
- bl FreezeEventObjects
- bl ScriptContext2_Enable
- bl sub_808D194
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B01B6
-_080B0198:
- bl sub_80AF71C
- cmp r0, 0
- beq _080B01B6
- bl sub_808D1B4
- cmp r0, 0x1
- beq _080B01B6
- bl UnfreezeEventObjects
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_080B01B6:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end task0A_mpl_807E31C
-
- thumb_func_start sub_80B01BC
-sub_80B01BC: @ 80B01BC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B0202
- cmp r0, 0x1
- bgt _080B01E4
- cmp r0, 0
- beq _080B01EE
- b _080B023A
- .pool
-_080B01E4:
- cmp r0, 0x2
- beq _080B0210
- cmp r0, 0x3
- beq _080B022A
- b _080B023A
-_080B01EE:
- bl FreezeEventObjects
- bl ScriptContext2_Enable
- movs r0, 0x2D
- bl PlaySE
- bl sub_808D1C8
- b _080B0222
-_080B0202:
- bl sub_808D1E8
- cmp r0, 0
- bne _080B023A
- bl sub_80AF0B4
- b _080B0222
-_080B0210:
- bl sub_80AF710
- cmp r0, 0
- bne _080B023A
- bl BGMusicStopped
- lsls r0, 24
- cmp r0, 0
- beq _080B023A
-_080B0222:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B023A
-_080B022A:
- bl WarpIntoMap
- ldr r0, =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_080B023A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B01BC
-
- thumb_func_start sub_80B0244
-sub_80B0244: @ 80B0244
- push {lr}
- bl ScriptContext2_Enable
- ldr r0, =sub_80AFA0C
- movs r1, 0xA
- bl CreateTask
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF3E8
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B0244
-
- thumb_func_start sub_80B0268
-sub_80B0268: @ 80B0268
- push {lr}
- bl ScriptContext2_Enable
- ldr r0, =gFieldCallback
- ldr r1, =mapldr_default
- str r1, [r0]
- ldr r0, =sub_80B01BC
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B0268
-
- thumb_func_start sub_80B028C
-sub_80B028C: @ 80B028C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- cmp r0, 0
- bne _080B029A
- movs r1, 0x1F
- b _080B02A0
-_080B029A:
- movs r0, 0xF8
- lsls r0, 7
- adds r1, r0, 0
-_080B02A0:
- mov r0, sp
- strh r1, [r0]
- movs r5, 0
- movs r4, 0xF0
- lsls r4, 16
-_080B02AA:
- lsrs r1, r4, 16
- mov r0, sp
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0x80
- lsls r0, 9
- adds r4, r0
- adds r5, 0x1
- cmp r5, 0xF
- ble _080B02AA
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B028C
-
- thumb_func_start sub_80B02C8
-sub_80B02C8: @ 80B02C8
- push {r4,r5,lr}
- lsls r0, 16
- ldr r2, =0x04000052
- ldrh r1, [r2]
- lsls r1, 24
- lsrs r5, r1, 24
- ldrh r1, [r2]
- lsrs r4, r1, 8
- cmp r0, 0
- beq _080B02EC
- cmp r5, 0
- beq _080B02F6
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- b _080B02F6
- .pool
-_080B02EC:
- cmp r4, 0xF
- bhi _080B02F6
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080B02F6:
- lsls r1, r4, 8
- orrs r1, r5
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- cmp r5, 0
- bne _080B0310
- cmp r4, 0x10
- bne _080B0310
- movs r0, 0x1
- b _080B0312
-_080B0310:
- movs r0, 0
-_080B0312:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B02C8
-
- thumb_func_start sub_80B0318
-sub_80B0318: @ 80B0318
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r5, r0, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x7
- bls _080B0334
- b _080B052C
-_080B0334:
- lsls r0, 2
- ldr r1, =_080B0348
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B0348:
- .4byte _080B0368
- .4byte _080B0424
- .4byte _080B0450
- .4byte _080B046C
- .4byte _080B0482
- .4byte _080B04F2
- .4byte _080B04AC
- .4byte _080B04BA
-_080B0368:
- movs r0, 0x80
- lsls r0, 19
- ldrh r0, [r0]
- strh r0, [r5, 0xC]
- ldr r0, =0x04000050
- ldrh r0, [r0]
- strh r0, [r5, 0xE]
- ldr r0, =0x04000052
- ldrh r0, [r0]
- strh r0, [r5, 0x10]
- ldr r0, =0x04000048
- ldrh r0, [r0]
- strh r0, [r5, 0x12]
- ldr r0, =0x0400004a
- ldrh r0, [r0]
- strh r0, [r5, 0x14]
- movs r1, 0x80
- lsls r1, 7
- movs r0, 0
- bl ClearGpuRegBits
- ldr r0, =gUnknown_82EC7CC
- ldrh r1, [r0]
- movs r0, 0x50
- bl SetGpuRegBits
- ldr r1, =0x0000070c
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x1E
- bl SetGpuReg
- movs r0, 0x14
- str r0, [sp]
- movs r0, 0xF
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1E
- bl sub_8199C30
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldr r4, =gScanlineEffectRegBuffers
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- movs r0, 0x6
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- movs r3, 0x1
- bl sub_80AFD7C
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r4, r2
- movs r2, 0xF0
- lsls r2, 1
- adds r0, r4, 0
- bl CpuFastSet
- ldr r2, =gUnknown_0854FE7C
- ldr r0, [r2]
- ldr r1, [r2, 0x4]
- ldr r2, [r2, 0x8]
- bl ScanlineEffect_SetParams
- movs r0, 0x1
- strh r0, [r5]
- b _080B052C
- .pool
-_080B0424:
- movs r0, 0
- movs r1, 0x11
- movs r2, 0
- movs r3, 0x1
- bl sub_8199DF0
- ldrb r0, [r5, 0x2]
- bl sub_80B028C
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- movs r2, 0x1
- str r2, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- movs r3, 0xA0
- bl sub_80B003C
- strh r4, [r5]
- b _080B052C
-_080B0450:
- ldr r0, =sub_80AFECC
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080B052C
- bl EnableBothScriptContexts
- movs r0, 0x3
- strh r0, [r5]
- b _080B052C
- .pool
-_080B046C:
- bl InstallCameraPanAheadCallback
- movs r0, 0
- bl SetCameraPanningCallback
- movs r0, 0
- strh r0, [r5, 0xA]
- movs r0, 0x4
- strh r0, [r5, 0x8]
- strh r0, [r5]
- b _080B052C
-_080B0482:
- ldrh r0, [r5, 0x8]
- subs r0, 0x1
- strh r0, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bne _080B052C
- movs r0, 0x4
- strh r0, [r5, 0x8]
- ldrh r0, [r5, 0xA]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r5, 0xA]
- movs r1, 0x4
- negs r1, r1
- cmp r0, 0
- beq _080B04A4
- movs r1, 0x4
-_080B04A4:
- movs r0, 0
- bl SetCameraPanning
- b _080B052C
-_080B04AC:
- bl InstallCameraPanAheadCallback
- movs r0, 0x8
- strh r0, [r5, 0x8]
- movs r0, 0x7
- strh r0, [r5]
- b _080B052C
-_080B04BA:
- ldrh r0, [r5, 0x8]
- subs r0, 0x1
- strh r0, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bne _080B052C
- movs r0, 0x8
- strh r0, [r5, 0x8]
- ldrh r0, [r5, 0xA]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r5, 0xA]
- ldrh r0, [r5, 0xA]
- bl sub_80B02C8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B052C
- movs r0, 0x5
- strh r0, [r5]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_8199DF0
- b _080B052C
-_080B04F2:
- movs r0, 0x40
- movs r1, 0xFF
- bl SetGpuReg
- ldrh r1, [r5, 0xC]
- movs r0, 0
- bl SetGpuReg
- ldrh r1, [r5, 0xE]
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r5, 0x10]
- movs r0, 0x52
- bl SetGpuReg
- ldrh r1, [r5, 0x12]
- movs r0, 0x48
- bl SetGpuReg
- ldrh r1, [r5, 0x14]
- movs r0, 0x4A
- bl SetGpuReg
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_080B052C:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B0318
-
- thumb_func_start sub_80B0534
-sub_80B0534: @ 80B0534
- push {lr}
- ldr r0, =sub_80B0318
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r1, r0
- ldr r0, =gSpecialVar_Result
- ldrh r0, [r0]
- cmp r0, 0
- bne _080B0568
- strh r0, [r1, 0x2]
- movs r0, 0x68
- b _080B0580
- .pool
-_080B0568:
- cmp r0, 0x1
- bne _080B0572
- strh r0, [r1, 0x2]
- movs r0, 0x88
- b _080B0580
-_080B0572:
- cmp r0, 0x2
- bne _080B057A
- movs r0, 0
- b _080B057C
-_080B057A:
- movs r0, 0x1
-_080B057C:
- strh r0, [r1, 0x2]
- movs r0, 0x78
-_080B0580:
- strh r0, [r1, 0x4]
- movs r0, 0x50
- strh r0, [r1, 0x6]
- pop {r0}
- bx r0
- thumb_func_end sub_80B0534
-
- thumb_func_start sub_80B058C
-sub_80B058C: @ 80B058C
- push {lr}
- ldr r0, =sub_80B0318
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x6
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B058C
-
- thumb_func_start sub_80B05B4
-sub_80B05B4: @ 80B05B4
- push {lr}
- bl Overworld_FadeOutMapMusic
- ldr r0, =task50_0807F0C8
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B05B4
-
- thumb_func_start task50_0807F0C8
-task50_0807F0C8: @ 80B05CC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl BGMusicStopped
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B05E8
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_080B05E8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task50_0807F0C8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s
deleted file mode 100644
index a361faa32..000000000
--- a/asm/fldeff_80F9BCC.s
+++ /dev/null
@@ -1,2514 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F9BCC
-sub_80F9BCC: @ 80F9BCC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r3, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =sub_80F9C90
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_80F9C44
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F9BCC
-
- thumb_func_start sub_80F9BF4
-sub_80F9BF4: @ 80F9BF4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r3, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =sub_80F9DFC
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_80F9C44
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F9BF4
-
- thumb_func_start sub_80F9C1C
-sub_80F9C1C: @ 80F9C1C
- push {lr}
- ldr r0, =sub_80F9C90
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80F9C1C
-
- thumb_func_start sub_80F9C30
-sub_80F9C30: @ 80F9C30
- push {lr}
- ldr r0, =sub_80F9DFC
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80F9C30
-
- thumb_func_start sub_80F9C44
-sub_80F9C44: @ 80F9C44
- push {r4,r5,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- adds r5, r4, 0
- lsls r3, 24
- lsrs r3, 24
- adds r1, r3, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0
- strh r0, [r1, 0x8]
- movs r0, 0x10
- cmp r4, 0
- beq _080F9C72
- adds r0, r4, 0
-_080F9C72:
- strh r0, [r1, 0xA]
- movs r0, 0x14
- cmp r5, 0
- beq _080F9C7C
- adds r0, r5, 0
-_080F9C7C:
- strh r0, [r1, 0xC]
- ldr r1, [r1]
- adds r0, r2, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F9C44
-
- thumb_func_start sub_80F9C90
-sub_80F9C90: @ 80F9C90
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080F9D10
- cmp r0, 0x1
- bgt _080F9CB8
- cmp r0, 0
- beq _080F9CC2
- b _080F9DDE
- .pool
-_080F9CB8:
- cmp r0, 0x2
- beq _080F9D32
- cmp r0, 0x3
- beq _080F9D94
- b _080F9DDE
-_080F9CC2:
- movs r0, 0x78
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- movs r0, 0x50
- strh r0, [r4, 0x12]
- movs r0, 0x51
- strh r0, [r4, 0x14]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x40
- bl SetGpuReg
- ldrh r1, [r4, 0x12]
- lsls r1, 8
- ldrh r0, [r4, 0x14]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- b _080F9DEE
-_080F9D10:
- movs r0, 0x50
- bl GetGpuReg
- strh r0, [r4, 0x16]
- movs r0, 0x54
- bl GetGpuReg
- strh r0, [r4, 0x18]
- movs r0, 0x50
- movs r1, 0xBF
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x10
- bl SetGpuReg
- b _080F9DEE
-_080F9D32:
- ldrh r0, [r4, 0xE]
- ldrh r1, [r4, 0xA]
- subs r0, r1
- movs r5, 0
- strh r0, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- adds r1, r2
- strh r1, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- ble _080F9D50
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xEF
- ble _080F9D76
-_080F9D50:
- strh r5, [r4, 0xE]
- movs r0, 0xF0
- strh r0, [r4, 0x10]
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4, 0x16]
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- movs r2, 0
- bl BlendPalettes
- ldr r0, =gPlttBufferFaded
- strh r5, [r0]
-_080F9D76:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x40
- bl SetGpuReg
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- b _080F9DD8
- .pool
-_080F9D94:
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0xC]
- subs r0, r1
- strh r0, [r4, 0x12]
- ldrh r2, [r4, 0x14]
- adds r1, r2
- strh r1, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- ble _080F9DB0
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x9F
- ble _080F9DC2
-_080F9DB0:
- movs r0, 0
- strh r0, [r4, 0x12]
- movs r0, 0xA0
- strh r0, [r4, 0x14]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
-_080F9DC2:
- ldrh r1, [r4, 0x12]
- lsls r1, 8
- ldrh r0, [r4, 0x14]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- movs r1, 0x12
- ldrsh r0, [r4, r1]
-_080F9DD8:
- cmp r0, 0
- bne _080F9DF4
- b _080F9DEE
-_080F9DDE:
- ldrh r1, [r4, 0x16]
- movs r0, 0x50
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyTask
- b _080F9DF4
-_080F9DEE:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080F9DF4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F9C90
-
- thumb_func_start sub_80F9DFC
-sub_80F9DFC: @ 80F9DFC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080F9E38
- cmp r1, 0x1
- bgt _080F9E24
- cmp r1, 0
- beq _080F9E2E
- b _080F9F2C
- .pool
-_080F9E24:
- cmp r1, 0x2
- beq _080F9E86
- cmp r1, 0x3
- beq _080F9ED8
- b _080F9F2C
-_080F9E2E:
- ldr r0, =gPlttBufferFaded
- strh r1, [r0]
- b _080F9F4E
- .pool
-_080F9E38:
- movs r1, 0
- strh r1, [r4, 0xE]
- movs r0, 0xF0
- strh r0, [r4, 0x10]
- strh r1, [r4, 0x12]
- movs r0, 0xA0
- strh r0, [r4, 0x14]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x40
- bl SetGpuReg
- ldrh r1, [r4, 0x12]
- lsls r1, 8
- ldrh r0, [r4, 0x14]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- b _080F9F4E
-_080F9E86:
- ldrh r0, [r4, 0xC]
- ldrh r2, [r4, 0x12]
- adds r1, r0, r2
- strh r1, [r4, 0x12]
- ldrh r2, [r4, 0x14]
- subs r0, r2, r0
- strh r0, [r4, 0x14]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x4F
- bgt _080F9EA4
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x51
- bgt _080F9EBC
-_080F9EA4:
- movs r0, 0x50
- strh r0, [r4, 0x12]
- movs r0, 0x51
- strh r0, [r4, 0x14]
- movs r0, 0x50
- movs r1, 0xBF
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x10
- bl SetGpuReg
-_080F9EBC:
- ldrh r1, [r4, 0x12]
- lsls r1, 8
- ldrh r0, [r4, 0x14]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- bne _080F9F54
- b _080F9F4E
-_080F9ED8:
- ldrh r0, [r4, 0xA]
- ldrh r2, [r4, 0xE]
- adds r1, r0, r2
- strh r1, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- subs r0, r2, r0
- strh r0, [r4, 0x10]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x77
- bgt _080F9EF6
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- bgt _080F9F0C
-_080F9EF6:
- movs r0, 0x78
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- subs r0, 0x79
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r1, =gPlttBufferFaded
- movs r0, 0
- strh r0, [r1]
-_080F9F0C:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x40
- bl SetGpuReg
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0x78
- bne _080F9F54
- b _080F9F4E
- .pool
-_080F9F2C:
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyTask
- b _080F9F54
-_080F9F4E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080F9F54:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F9DFC
-
- thumb_func_start sub_80F9F5C
-sub_80F9F5C: @ 80F9F5C
- push {lr}
- ldr r0, =gPlayerFacingPosition
- ldr r1, =gMapHeader
- ldr r1, [r1, 0x4]
- bl sub_80E9608
- bl sub_80E8B6C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F9F5C
-
- thumb_func_start sub_80F9F78
-sub_80F9F78: @ 80F9F78
- push {lr}
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _080F9FC0
- ldr r1, =gFieldEffectArguments
- ldr r0, [r1, 0x4]
- cmp r0, 0x2
- beq _080F9FAE
- cmp r0, 0x2
- bgt _080F9FA0
- cmp r0, 0x1
- beq _080F9FA6
- b _080F9FFE
- .pool
-_080F9FA0:
- cmp r0, 0x3
- beq _080F9FB6
- b _080F9FDC
-_080F9FA6:
- movs r0, 0x10
- str r0, [r1, 0x14]
- movs r0, 0x28
- b _080F9FFC
-_080F9FAE:
- movs r0, 0x10
- str r0, [r1, 0x14]
- movs r0, 0x8
- b _080F9FFC
-_080F9FB6:
- movs r0, 0x8
- negs r0, r0
- str r0, [r1, 0x14]
- movs r0, 0x18
- b _080F9FFC
-_080F9FC0:
- ldr r1, =gFieldEffectArguments
- ldr r0, [r1, 0x4]
- cmp r0, 0x2
- beq _080F9FEA
- cmp r0, 0x2
- bgt _080F9FD8
- cmp r0, 0x1
- beq _080F9FE2
- b _080F9FFE
- .pool
-_080F9FD8:
- cmp r0, 0x3
- beq _080F9FEE
-_080F9FDC:
- cmp r0, 0x4
- beq _080F9FF8
- b _080F9FFE
-_080F9FE2:
- movs r0, 0x8
- str r0, [r1, 0x14]
- movs r0, 0x28
- b _080F9FFC
-_080F9FEA:
- movs r0, 0x8
- b _080F9FFA
-_080F9FEE:
- movs r0, 0x8
- negs r0, r0
- str r0, [r1, 0x14]
- movs r0, 0x18
- b _080F9FFC
-_080F9FF8:
- movs r0, 0x18
-_080F9FFA:
- str r0, [r1, 0x14]
-_080F9FFC:
- str r0, [r1, 0x18]
-_080F9FFE:
- pop {r0}
- bx r0
- thumb_func_end sub_80F9F78
-
- thumb_func_start sub_80FA004
-sub_80FA004: @ 80FA004
- push {r4,lr}
- bl sub_80E8BC8
- ldr r0, =gSpecialVar_Result
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080FA0AE
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080FA0AE
- ldr r4, =gPlayerFacingPosition
- adds r1, r4, 0x2
- adds r0, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsSecretBaseCave
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080FA070
- bl sub_80F9F5C
- ldr r1, =gFieldCallback2
- ldr r0, =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, =gPostMenuFieldCallback
- ldr r0, =sub_80FA0DC
- b _080FA0C0
- .pool
-_080FA070:
- adds r0, r4, 0
- bl MetatileBehavior_IsSecretBaseTree
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080FA0A0
- bl sub_80F9F5C
- ldr r1, =gFieldCallback2
- ldr r0, =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, =gPostMenuFieldCallback
- ldr r0, =sub_80FA1E8
- b _080FA0C0
- .pool
-_080FA0A0:
- adds r0, r4, 0
- bl MetatileBehavior_IsSecretBaseShrub
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080FA0B2
-_080FA0AE:
- movs r0, 0
- b _080FA0C4
-_080FA0B2:
- bl sub_80F9F5C
- ldr r1, =gFieldCallback2
- ldr r0, =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, =gPostMenuFieldCallback
- ldr r0, =sub_80FA34C
-_080FA0C0:
- str r0, [r1]
- movs r0, 0x1
-_080FA0C4:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80FA004
-
- thumb_func_start sub_80FA0DC
-sub_80FA0DC: @ 80FA0DC
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- ldr r0, =EventScript_275A86
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA0DC
-
- thumb_func_start oei_sweet_scent
-oei_sweet_scent: @ 80FA0FC
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, =sub_80FA128
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end oei_sweet_scent
-
- thumb_func_start sub_80FA128
-sub_80FA128: @ 80FA128
- push {lr}
- movs r0, 0xB
- bl FieldEffectActiveListRemove
- movs r0, 0x37
- bl FieldEffectStart
- pop {r0}
- bx r0
- thumb_func_end sub_80FA128
-
- thumb_func_start sub_80FA13C
-sub_80FA13C: @ 80FA13C
- push {r4,lr}
- bl sub_80F9F78
- ldr r0, =gUnknown_0858E600
- ldr r3, =gSprites
- ldr r1, =gPlayerAvatar
- ldrb r1, [r1, 0x4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r2, 0x2]
- lsls r1, 23
- lsrs r1, 23
- ldr r4, =gFieldEffectArguments
- ldr r3, [r4, 0x14]
- adds r1, r3
- lsls r1, 16
- asrs r1, 16
- ldrb r2, [r2]
- ldr r3, [r4, 0x18]
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x94
- bl CreateSprite
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80FA13C
-
- thumb_func_start sub_80FA18C
-sub_80FA18C: @ 80FA18C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x83
- bl PlaySE
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, =sub_80FA1A8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA18C
-
- thumb_func_start sub_80FA1A8
-sub_80FA1A8: @ 80FA1A8
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r1, r3]
- cmp r0, 0x27
- bgt _080FA1C8
- adds r0, r2, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bne _080FA1D0
- bl sub_80E8D4C
- b _080FA1D0
-_080FA1C8:
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldr r0, =sub_80FA1D8
- str r0, [r1, 0x1C]
-_080FA1D0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA1A8
-
- thumb_func_start sub_80FA1D8
-sub_80FA1D8: @ 80FA1D8
- push {lr}
- movs r1, 0x37
- bl FieldEffectStop
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_80FA1D8
-
- thumb_func_start sub_80FA1E8
-sub_80FA1E8: @ 80FA1E8
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- ldr r0, =EventScript_275ADF
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA1E8
-
- thumb_func_start sub_80FA208
-sub_80FA208: @ 80FA208
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, =sub_80FA234
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80FA208
-
- thumb_func_start sub_80FA234
-sub_80FA234: @ 80FA234
- push {lr}
- movs r0, 0x1A
- bl FieldEffectActiveListRemove
- movs r0, 0x38
- bl FieldEffectStart
- pop {r0}
- bx r0
- thumb_func_end sub_80FA234
-
- thumb_func_start sub_80FA248
-sub_80FA248: @ 80FA248
- push {r4,lr}
- ldr r1, =gPlayerFacingPosition
- movs r2, 0
- ldrsh r0, [r1, r2]
- movs r2, 0x2
- ldrsh r1, [r1, r2]
- bl MapGridGetMetatileBehaviorAt
- adds r2, r0, 0
- ldr r1, =0x00000fff
- adds r0, r1, 0
- ands r2, r0
- cmp r2, 0x96
- bne _080FA26A
- ldr r1, =gFieldEffectArguments
- movs r0, 0
- str r0, [r1, 0x1C]
-_080FA26A:
- cmp r2, 0x9C
- bne _080FA274
- ldr r1, =gFieldEffectArguments
- movs r0, 0x2
- str r0, [r1, 0x1C]
-_080FA274:
- bl sub_80F9F78
- ldr r0, =gUnknown_0858E618
- ldr r3, =gSprites
- ldr r1, =gPlayerAvatar
- ldrb r1, [r1, 0x4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r2, 0x2]
- lsls r1, 23
- lsrs r1, 23
- ldr r4, =gFieldEffectArguments
- ldr r3, [r4, 0x14]
- adds r1, r3
- lsls r1, 16
- asrs r1, 16
- ldrb r2, [r2]
- ldr r3, [r4, 0x18]
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x94
- bl CreateSprite
- ldr r0, [r4, 0x1C]
- cmp r0, 0x1
- beq _080FA2B2
- cmp r0, 0x3
- bne _080FA2B6
-_080FA2B2:
- bl sub_80E8D4C
-_080FA2B6:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80FA248
-
- thumb_func_start sub_80FA2D8
-sub_80FA2D8: @ 80FA2D8
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x9B
- bl PlaySE
- ldr r0, =gFieldEffectArguments
- ldr r1, [r0, 0x1C]
- adds r2, r4, 0
- adds r2, 0x2A
- movs r0, 0
- strb r1, [r2]
- strh r0, [r4, 0x2E]
- ldr r0, =sub_80FA304
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA2D8
-
- thumb_func_start sub_80FA304
-sub_80FA304: @ 80FA304
- 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, 0x27
- ble _080FA32E
- ldr r0, =gFieldEffectArguments
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _080FA322
- cmp r0, 0x2
- bne _080FA326
-_080FA322:
- bl sub_80E8D4C
-_080FA326:
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, =sub_80FA33C
- str r0, [r4, 0x1C]
-_080FA32E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA304
-
- thumb_func_start sub_80FA33C
-sub_80FA33C: @ 80FA33C
- push {lr}
- movs r1, 0x38
- bl FieldEffectStop
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_80FA33C
-
- thumb_func_start sub_80FA34C
-sub_80FA34C: @ 80FA34C
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- ldr r0, =EventScript_275B38
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA34C
-
- thumb_func_start sub_80FA36C
-sub_80FA36C: @ 80FA36C
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, =sub_80FA398
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80FA36C
-
- thumb_func_start sub_80FA398
-sub_80FA398: @ 80FA398
- push {lr}
- movs r0, 0x1B
- bl FieldEffectActiveListRemove
- movs r0, 0x39
- bl FieldEffectStart
- pop {r0}
- bx r0
- thumb_func_end sub_80FA398
-
- thumb_func_start sub_80FA3AC
-sub_80FA3AC: @ 80FA3AC
- push {r4,lr}
- bl sub_80F9F78
- ldr r0, =gUnknown_0858E630
- ldr r3, =gSprites
- ldr r1, =gPlayerAvatar
- ldrb r1, [r1, 0x4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r2, 0x2]
- lsls r1, 23
- lsrs r1, 23
- ldr r4, =gFieldEffectArguments
- ldr r3, [r4, 0x14]
- adds r1, r3
- lsls r1, 16
- asrs r1, 16
- ldrb r2, [r2]
- ldr r3, [r4, 0x18]
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x94
- bl CreateSprite
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80FA3AC
-
- thumb_func_start sub_80FA3FC
-sub_80FA3FC: @ 80FA3FC
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0xA9
- bl PlaySE
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, =sub_80FA418
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA3FC
-
- thumb_func_start sub_80FA418
-sub_80FA418: @ 80FA418
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r1, r3]
- cmp r0, 0x27
- bgt _080FA438
- adds r0, r2, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bne _080FA440
- bl sub_80E8D4C
- b _080FA440
-_080FA438:
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldr r0, =sub_80FA448
- str r0, [r1, 0x1C]
-_080FA440:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA418
-
- thumb_func_start sub_80FA448
-sub_80FA448: @ 80FA448
- push {lr}
- movs r1, 0x39
- bl FieldEffectStop
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_80FA448
-
- thumb_func_start sub_80FA458
-sub_80FA458: @ 80FA458
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- ldr r0, =sub_80FA4A0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- mov r0, sp
- ldrh r0, [r0]
- movs r2, 0
- strh r0, [r1, 0x8]
- ldrh r0, [r4]
- strh r0, [r1, 0xA]
- strh r2, [r1, 0xC]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80FA458
-
- thumb_func_start sub_80FA4A0
-sub_80FA4A0: @ 80FA4A0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4, 0x4]
- subs r0, 0x4
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- bhi _080FA56E
- lsls r0, 2
- ldr r1, =_080FA4D0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080FA4D0:
- .4byte _080FA514
- .4byte _080FA56E
- .4byte _080FA56E
- .4byte _080FA56E
- .4byte _080FA522
- .4byte _080FA56E
- .4byte _080FA56E
- .4byte _080FA56E
- .4byte _080FA514
- .4byte _080FA56E
- .4byte _080FA56E
- .4byte _080FA56E
- .4byte _080FA522
- .4byte _080FA56E
- .4byte _080FA56E
- .4byte _080FA56E
- .4byte _080FA540
-_080FA514:
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- movs r2, 0x89
- lsls r2, 2
- b _080FA52E
-_080FA522:
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- movs r2, 0x88
- lsls r2, 2
-_080FA52E:
- bl MapGridSetMetatileIdAt
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl CurrentMapDrawMetatileAt
- b _080FA56E
-_080FA540:
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- movs r2, 0x89
- lsls r2, 2
- bl MapGridSetMetatileIdAt
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl CurrentMapDrawMetatileAt
- movs r0, 0x3D
- bl FieldEffectActiveListRemove
- bl EnableBothScriptContexts
- adds r0, r5, 0
- bl DestroyTask
- b _080FA574
-_080FA56E:
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
-_080FA574:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FA4A0
-
- thumb_func_start sub_80FA57C
-sub_80FA57C: @ 80FA57C
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- movs r0, 0x3
- bl PlaySE
- ldr r0, =0x00004054
- bl VarGet
- lsls r0, 16
- cmp r0, 0
- bne _080FA5B8
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r2, 0xE2
- lsls r2, 4
- bl MapGridSetMetatileIdAt
- b _080FA5C8
- .pool
-_080FA5B8:
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- ldr r2, =0x00000e21
- bl MapGridSetMetatileIdAt
-_080FA5C8:
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl CurrentMapDrawMetatileAt
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA57C
-
- thumb_func_start sub_80FA5E4
-sub_80FA5E4: @ 80FA5E4
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 16
- lsrs r6, 16
- ldr r0, =sub_80FA62C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r4, [r1, 0x8]
- strh r5, [r1, 0xA]
- strh r6, [r1, 0xC]
- strh r0, [r1, 0xE]
- movs r0, 0x1
- strh r0, [r1, 0x10]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA5E4
-
- thumb_func_start sub_80FA62C
-sub_80FA62C: @ 80FA62C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r1, [r4, 0x6]
- movs r2, 0x6
- ldrsh r0, [r4, r2]
- cmp r0, 0x6
- bne _080FA650
- movs r0, 0
- b _080FA652
- .pool
-_080FA650:
- adds r0, r1, 0x1
-_080FA652:
- strh r0, [r4, 0x6]
- movs r3, 0x6
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080FA6A4
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x2
- bne _080FA66C
- movs r2, 0
- ldrsh r0, [r4, r2]
- bl sub_80FA6AC
-_080FA66C:
- movs r3, 0x2
- ldrsh r0, [r4, r3]
- movs r2, 0x4
- ldrsh r1, [r4, r2]
- ldrh r2, [r4, 0x8]
- ldrh r3, [r4]
- adds r2, r3
- lsls r2, 16
- lsrs r2, 16
- bl MapGridSetMetatileIdAt
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- movs r2, 0x4
- ldrsh r1, [r4, r2]
- bl CurrentMapDrawMetatileAt
- ldrh r1, [r4, 0x8]
- movs r3, 0x8
- ldrsh r0, [r4, r3]
- cmp r0, 0x3
- bne _080FA6A0
- adds r0, r5, 0
- bl DestroyTask
- b _080FA6A4
-_080FA6A0:
- adds r0, r1, 0x1
- strh r0, [r4, 0x8]
-_080FA6A4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FA62C
-
- thumb_func_start sub_80FA6AC
-sub_80FA6AC: @ 80FA6AC
- push {lr}
- lsls r0, 16
- asrs r1, r0, 16
- movs r0, 0xCE
- lsls r0, 2
- cmp r1, r0
- beq _080FA6D8
- cmp r1, r0
- bgt _080FA6C8
- movs r0, 0x8A
- lsls r0, 2
- cmp r1, r0
- beq _080FA6F0
- b _080FA6F6
-_080FA6C8:
- movs r0, 0xCF
- lsls r0, 2
- cmp r1, r0
- beq _080FA6E0
- adds r0, 0x4
- cmp r1, r0
- beq _080FA6E8
- b _080FA6F6
-_080FA6D8:
- movs r0, 0x4A
- bl PlaySE
- b _080FA6F6
-_080FA6E0:
- movs r0, 0x4B
- bl PlaySE
- b _080FA6F6
-_080FA6E8:
- movs r0, 0x4C
- bl PlaySE
- b _080FA6F6
-_080FA6F0:
- movs r0, 0x4E
- bl PlaySE
-_080FA6F6:
- pop {r0}
- bx r0
- thumb_func_end sub_80FA6AC
-
- thumb_func_start sub_80FA6FC
-sub_80FA6FC: @ 80FA6FC
- movs r0, 0
- bx lr
- thumb_func_end sub_80FA6FC
-
- thumb_func_start sub_80FA700
-sub_80FA700: @ 80FA700
- movs r0, 0
- bx lr
- thumb_func_end sub_80FA700
-
- thumb_func_start sub_80FA704
-sub_80FA704: @ 80FA704
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x4D
- bl PlaySE
- lsls r5, 16
- asrs r5, 16
- lsls r4, 16
- asrs r4, 16
- ldr r2, =0x00000276
- adds r0, r5, 0
- adds r1, r4, 0
- bl MapGridSetMetatileIdAt
- subs r6, r4, 0x1
- ldr r2, =0x0000026e
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
- adds r0, r5, 0
- adds r1, r4, 0
- bl CurrentMapDrawMetatileAt
- adds r0, r5, 0
- adds r1, r6, 0
- bl CurrentMapDrawMetatileAt
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA704
-
- thumb_func_start sub_80FA754
-sub_80FA754: @ 80FA754
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =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, 0x7
- bne _080FA788
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- movs r3, 0xC
- ldrsh r1, [r1, r3]
- bl sub_80FA704
- adds r0, r4, 0
- bl DestroyTask
- b _080FA78C
- .pool
-_080FA788:
- adds r0, r2, 0x1
- strh r0, [r1, 0x8]
-_080FA78C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FA754
-
- thumb_func_start sub_80FA794
-sub_80FA794: @ 80FA794
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- adds r7, r5, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r6, r4, 0
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080FA7BC
- lsls r0, r5, 16
- asrs r0, 16
- lsls r1, r4, 16
- asrs r1, 16
- bl sub_80FA704
- b _080FA7DE
-_080FA7BC:
- cmp r0, 0x2
- bne _080FA7DE
- ldr r0, =sub_80FA754
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- strh r7, [r1, 0xA]
- strh r6, [r1, 0xC]
-_080FA7DE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA794
-
- thumb_func_start sub_80FA7EC
-sub_80FA7EC: @ 80FA7EC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0xA]
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0x7
- beq _080FA808
- b _080FA966
-_080FA808:
- ldr r2, =0xfffffd88
- adds r0, r2, 0
- ldrh r1, [r1, 0x8]
- adds r0, r1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3B
- bls _080FA81A
- b _080FA95E
-_080FA81A:
- lsls r0, 2
- ldr r1, =_080FA830
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080FA830:
- .4byte _080FA920
- .4byte _080FA928
- .4byte _080FA930
- .4byte _080FA938
- .4byte _080FA940
- .4byte _080FA948
- .4byte _080FA950
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA95E
- .4byte _080FA958
-_080FA920:
- movs r0, 0x3E
- bl PlaySE
- b _080FA95E
-_080FA928:
- movs r0, 0x3F
- bl PlaySE
- b _080FA95E
-_080FA930:
- movs r0, 0x40
- bl PlaySE
- b _080FA95E
-_080FA938:
- movs r0, 0x41
- bl PlaySE
- b _080FA95E
-_080FA940:
- movs r0, 0x42
- bl PlaySE
- b _080FA95E
-_080FA948:
- movs r0, 0x43
- bl PlaySE
- b _080FA95E
-_080FA950:
- movs r0, 0x44
- bl PlaySE
- b _080FA95E
-_080FA958:
- movs r0, 0x45
- bl PlaySE
-_080FA95E:
- adds r0, r4, 0
- bl DestroyTask
- b _080FA96A
-_080FA966:
- adds r0, r2, 0x1
- strh r0, [r1, 0xA]
-_080FA96A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FA7EC
-
- thumb_func_start sub_80FA970
-sub_80FA970: @ 80FA970
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, =sub_80FA7EC
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r4, [r1, 0x8]
- strh r0, [r1, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA970
-
- thumb_func_start sub_80FA9A4
-sub_80FA9A4: @ 80FA9A4
- 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, 0x8
- bne _080FA9BC
- movs r0, 0xC3
- bl PlaySE
-_080FA9BC:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1F
- ble _080FA9CA
- adds r0, r4, 0
- bl DestroySprite
-_080FA9CA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FA9A4
-
- thumb_func_start sub_80FA9D0
-sub_80FA9D0: @ 80FA9D0
- push {r4,lr}
- sub sp, 0x4
- ldr r3, =gEventObjects
- ldr r2, =gPlayerAvatar
- ldrb r1, [r2, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x10]
- mov r0, sp
- strh r1, [r0]
- ldrb r1, [r2, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x12]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x8
- movs r3, 0x4
- bl sub_80930E0
- ldr r0, =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x58]
- 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 r0, 24
- cmp r0, 0x40
- beq _080FAA5E
- ldr r3, =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r4, r2, r3
- movs r0, 0x3E
- adds r0, r4
- mov r12, r0
- ldrb r0, [r0]
- movs r1, 0x2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x50
- orrs r0, r1
- strb r0, [r4, 0x5]
- adds r3, 0x1C
- adds r2, r3
- ldr r0, =sub_80FA9A4
- str r0, [r2]
- movs r0, 0
- strh r0, [r4, 0x2E]
-_080FAA5E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FA9D0
-
- thumb_func_start sub_80FAA7C
-sub_80FAA7C: @ 80FAA7C
- push {r4,lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- ldr r1, =gFieldEffectArguments
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- str r0, [r1, 0x14]
- movs r3, 0
- ldrsh r0, [r4, r3]
- str r0, [r1, 0x18]
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080FAAFC
- cmp r0, 0x2
- bgt _080FAABC
- cmp r0, 0x1
- beq _080FAAC6
- b _080FAB8C
- .pool
-_080FAABC:
- cmp r0, 0x3
- beq _080FAB2C
- cmp r0, 0x4
- beq _080FAB64
- b _080FAB8C
-_080FAAC6:
- ldr r0, =gUnknown_0858E68C
- ldr r3, =gSprites
- ldr r1, =gPlayerAvatar
- ldrb r1, [r1, 0x4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r2, 0x2]
- lsls r1, 23
- lsrs r1, 7
- movs r3, 0x80
- lsls r3, 12
- adds r1, r3
- asrs r1, 16
- ldrb r2, [r2]
- adds r2, 0x20
- movs r3, 0
- bl CreateSprite
- b _080FAB8C
- .pool
-_080FAAFC:
- ldr r0, =gUnknown_0858E68C
- ldr r3, =gSprites
- ldr r1, =gPlayerAvatar
- ldrb r1, [r1, 0x4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r2, 0x2]
- lsls r1, 23
- lsrs r1, 7
- movs r3, 0x80
- lsls r3, 12
- adds r1, r3
- asrs r1, 16
- ldrb r2, [r2]
- b _080FAB4C
- .pool
-_080FAB2C:
- ldr r0, =gUnknown_0858E68C
- ldr r3, =gSprites
- ldr r1, =gPlayerAvatar
- ldrb r1, [r1, 0x4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r2, 0x2]
- lsls r1, 23
- lsrs r1, 7
- ldr r3, =0xfff80000
- adds r1, r3
- asrs r1, 16
- ldrb r2, [r2]
- adds r2, 0x10
-_080FAB4C:
- movs r3, 0x94
- bl CreateSprite
- b _080FAB8C
- .pool
-_080FAB64:
- ldr r0, =gUnknown_0858E68C
- ldr r3, =gSprites
- ldr r1, =gPlayerAvatar
- ldrb r1, [r1, 0x4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r2, 0x2]
- lsls r1, 23
- lsrs r1, 7
- movs r3, 0xC0
- lsls r3, 13
- adds r1, r3
- asrs r1, 16
- ldrb r2, [r2]
- adds r2, 0x10
- movs r3, 0x94
- bl CreateSprite
-_080FAB8C:
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80FAA7C
-
- thumb_func_start door_restore_tilemap
-door_restore_tilemap: @ 80FABA4
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0x83
- bl PlaySE
- ldr r4, =gFieldEffectArguments
- ldr r0, [r4, 0x14]
- ldr r1, [r4, 0x18]
- subs r1, 0x1
- bl MapGridGetMetatileIdAt
- ldr r1, =0x00000286
- cmp r0, r1
- bne _080FABDC
- ldr r0, [r4, 0x14]
- ldr r1, [r4, 0x18]
- subs r1, 0x1
- ldr r2, =0x00000e02
- bl MapGridSetMetatileIdAt
- b _080FABEA
- .pool
-_080FABDC:
- ldr r0, [r4, 0x14]
- ldr r1, [r4, 0x18]
- subs r1, 0x1
- movs r2, 0xA1
- lsls r2, 2
- bl MapGridSetMetatileIdAt
-_080FABEA:
- ldr r4, =gFieldEffectArguments
- ldr r0, [r4, 0x14]
- ldr r1, [r4, 0x18]
- ldr r2, =0x0000020a
- bl MapGridSetMetatileIdAt
- ldr r0, [r4, 0x14]
- ldr r1, [r4, 0x18]
- subs r1, 0x1
- bl CurrentMapDrawMetatileAt
- ldr r0, [r4, 0x14]
- ldr r1, [r4, 0x18]
- bl CurrentMapDrawMetatileAt
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldr r0, =sub_80FAC24
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end door_restore_tilemap
-
- thumb_func_start sub_80FAC24
-sub_80FAC24: @ 80FAC24
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x11
- bgt _080FAC38
- adds r0, r1, 0x1
- strh r0, [r5, 0x2E]
- b _080FAC54
-_080FAC38:
- ldr r4, =gFieldEffectArguments
- ldr r0, [r4, 0x14]
- ldr r1, [r4, 0x18]
- ldr r2, =0x00000e8c
- bl MapGridSetMetatileIdAt
- ldr r0, [r4, 0x14]
- ldr r1, [r4, 0x18]
- bl CurrentMapDrawMetatileAt
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldr r0, =sub_80FAC68
- str r0, [r5, 0x1C]
-_080FAC54:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FAC24
-
- thumb_func_start sub_80FAC68
-sub_80FAC68: @ 80FAC68
- push {lr}
- movs r1, 0x34
- bl FieldEffectStop
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_80FAC68
-
- thumb_func_start sub_80FAC78
-sub_80FAC78: @ 80FAC78
- 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 MapGridGetMetatileIdAt
- adds r1, r0, 0
- ldr r0, =0x000002f5
- cmp r1, r0
- beq _080FAD6C
- cmp r1, r0
- bgt _080FACB4
- subs r0, 0x17
- cmp r1, r0
- beq _080FAD14
- adds r0, 0x16
- cmp r1, r0
- beq _080FAD60
- b _080FADCE
- .pool
-_080FACB4:
- ldr r0, =0x000002f6
- cmp r1, r0
- beq _080FADA4
- adds r0, 0x40
- cmp r1, r0
- beq _080FACC2
- b _080FADCE
-_080FACC2:
- ldr r0, =gStringVar1
- movs r1, 0x64
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, =gStringVar2
- ldr r1, =gText_Gold
- bl StringCopy
- ldr r1, =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- ldr r0, =0x00004054
- bl VarGet
- lsls r0, 16
- cmp r0, 0
- beq _080FADCE
- ldr r4, =0x000040ee
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- movs r0, 0x10
- b _080FAD8A
- .pool
-_080FAD14:
- ldr r0, =gStringVar1
- movs r1, 0x32
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, =gStringVar2
- ldr r1, =gText_Silver
- bl StringCopy
- ldr r1, =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- ldr r0, =0x00004054
- bl VarGet
- lsls r0, 16
- cmp r0, 0
- beq _080FADCE
- ldr r4, =0x000040ee
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- movs r0, 0x20
- b _080FAD8A
- .pool
-_080FAD60:
- ldr r1, =gSpecialVar_Result
- movs r0, 0x1
- b _080FAD70
- .pool
-_080FAD6C:
- ldr r1, =gSpecialVar_Result
- movs r0, 0x2
-_080FAD70:
- strh r0, [r1]
- ldr r0, =0x00004054
- bl VarGet
- lsls r0, 16
- cmp r0, 0
- beq _080FADCE
- ldr r4, =0x000040ee
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- movs r0, 0x80
-_080FAD8A:
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- b _080FADCE
- .pool
-_080FADA4:
- ldr r1, =gSpecialVar_Result
- movs r0, 0x3
- strh r0, [r1]
- ldr r0, =0x00004054
- bl VarGet
- lsls r0, 16
- cmp r0, 0
- beq _080FADCE
- ldr r4, =0x000040ee
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- movs r0, 0x80
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
-_080FADCE:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FAC78
-
- thumb_func_start sub_80FADE4
-sub_80FADE4: @ 80FADE4
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, r4, 0
- lsls r1, 24
- lsrs r5, r1, 24
- bl CurrentMapIsSecretBase
- lsls r0, 24
- cmp r0, 0
- beq _080FAE28
- cmp r5, 0
- bne _080FAE1C
- ldr r1, =0xfffffd7b
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080FAE10
- ldr r0, =0x00000237
- cmp r4, r0
- bne _080FAE28
-_080FAE10:
- movs r0, 0x1
- b _080FAE2A
- .pool
-_080FAE1C:
- ldr r0, =0x0000028d
- cmp r4, r0
- beq _080FAE10
- ldr r0, =0x0000023f
- cmp r6, r0
- beq _080FAE10
-_080FAE28:
- movs r0, 0
-_080FAE2A:
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80FADE4
-
- thumb_func_start task50_overworld_poison_effect
-task50_overworld_poison_effect: @ 80FAE38
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r1, r0, r1
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0x1
- beq _080FAE76
- cmp r0, 0x1
- bgt _080FAE60
- cmp r0, 0
- beq _080FAE66
- b _080FAE92
- .pool
-_080FAE60:
- cmp r0, 0x2
- beq _080FAE8A
- b _080FAE92
-_080FAE66:
- ldrh r0, [r1, 0x2]
- adds r0, 0x2
- strh r0, [r1, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080FAE92
- b _080FAE82
-_080FAE76:
- ldrh r0, [r1, 0x2]
- subs r0, 0x2
- strh r0, [r1, 0x2]
- lsls r0, 16
- cmp r0, 0
- bne _080FAE92
-_080FAE82:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _080FAE92
-_080FAE8A:
- adds r0, r2, 0
- bl DestroyTask
- b _080FAEA2
-_080FAE92:
- ldrh r0, [r1, 0x2]
- lsls r1, r0, 4
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4C
- bl SetGpuReg
-_080FAEA2:
- pop {r0}
- bx r0
- thumb_func_end task50_overworld_poison_effect
-
- thumb_func_start FldeffPoison_Start
-FldeffPoison_Start: @ 80FAEA8
- push {lr}
- movs r0, 0x4F
- bl PlaySE
- ldr r0, =task50_overworld_poison_effect
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end FldeffPoison_Start
-
- thumb_func_start FieldPoisonEffectIsRunning
-FieldPoisonEffectIsRunning: @ 80FAEC0
- push {lr}
- ldr r0, =task50_overworld_poison_effect
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end FieldPoisonEffectIsRunning
-
- thumb_func_start sub_80FAED4
-sub_80FAED4: @ 80FAED4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, =sub_80FAEF0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80FAED4
-
- thumb_func_start sub_80FAEF0
-sub_80FAEF0: @ 80FAEF0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gEventObjects
- adds r4, r0, r1
- adds r0, r4, 0
- bl EventObjectIsMovementOverridden
- lsls r0, 24
- cmp r0, 0
- beq _080FAF1C
- adds r0, r4, 0
- bl EventObjectClearHeldMovementIfFinished
- lsls r0, 24
- cmp r0, 0
- beq _080FAF4E
-_080FAF1C:
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- bl sub_808C228
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- bl GetWalkInPlaceNormalMovementAction
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl EventObjectSetHeldMovement
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80FAF64
- str r1, [r0]
-_080FAF4E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FAEF0
-
- thumb_func_start sub_80FAF64
-sub_80FAF64: @ 80FAF64
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gEventObjects
- adds r5, r0, r1
- adds r0, r5, 0
- bl EventObjectClearHeldMovementIfFinished
- lsls r0, 24
- cmp r0, 0
- beq _080FAFC8
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0xA]
- adds r1, r0, 0x1
- strh r1, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bgt _080FAFC4
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- bl GetWalkInPlaceNormalMovementAction
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl EventObjectSetHeldMovement
- b _080FAFC8
- .pool
-_080FAFC4:
- ldr r0, =sub_80FAFD4
- str r0, [r2]
-_080FAFC8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FAF64
-
- thumb_func_start sub_80FAFD4
-sub_80FAFD4: @ 80FAFD4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_808BCD0
- lsls r0, 24
- lsrs r0, 24
- bl SetPlayerAvatarTransitionFlags
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FAFD4
-
- thumb_func_start sub_80FAFF8
-sub_80FAFF8: @ 80FAFF8
- push {lr}
- ldr r0, =sub_80FAED4
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FAFF8
-
- thumb_func_start CreateRecordMixingSprite
-CreateRecordMixingSprite: @ 80FB00C
- push {r4,r5,lr}
- ldr r0, =gUnknown_0858E864
- bl LoadSpritePalette
- ldr r0, =gUnknown_0858E880
- movs r1, 0
- movs r2, 0
- movs r3, 0x52
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _080FB06C
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r1, =gSprites
- adds r4, r0, r1
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r0, 0x10
- movs r1, 0xD
- bl sub_8092FF0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x20]
- adds r0, 0x10
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x22]
- adds r0, 0x2
- strh r0, [r4, 0x22]
- adds r0, r5, 0
- b _080FB06E
- .pool
-_080FB06C:
- movs r0, 0x40
-_080FB06E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end CreateRecordMixingSprite
-
- thumb_func_start DestroyRecordMixingSprite
-DestroyRecordMixingSprite: @ 80FB074
- push {r4-r7,lr}
- ldr r4, =gSprites
- adds r7, r4, 0
- movs r6, 0
- movs r5, 0x3F
-_080FB07E:
- adds r0, r7, 0
- adds r0, 0x14
- adds r0, r6, r0
- ldr r1, [r0]
- ldr r0, =gUnknown_0858E880
- cmp r1, r0
- bne _080FB098
- adds r0, r4, 0
- bl FreeSpritePalette
- adds r0, r4, 0
- bl DestroySprite
-_080FB098:
- adds r4, 0x44
- adds r6, 0x44
- subs r5, 0x1
- cmp r5, 0
- bge _080FB07E
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DestroyRecordMixingSprite
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/flying.s b/asm/flying.s
index b981b4306..c8010106a 100644
--- a/asm/flying.s
+++ b/asm/flying.s
@@ -10,7 +10,7 @@ sub_810DE70: @ 810DE70
push {r4,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_80A6980
+ bl InitSpritePosToAnimTarget
ldrh r0, [r4, 0x22]
adds r0, 0x14
strh r0, [r4, 0x22]
@@ -163,7 +163,7 @@ sub_810DFA8: @ 810DFA8
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x1
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -201,7 +201,7 @@ _0810DFC8:
strh r0, [r6, 0x36]
adds r0, r6, 0
bl InitAnimLinearTranslation
- ldr r0, =sub_80A67BC
+ ldr r0, =RunStoredCallbackWhenAffineAnimEnds
str r0, [r6, 0x1C]
ldr r1, =sub_810E028
adds r0, r6, 0
@@ -216,7 +216,7 @@ _0810DFC8:
sub_810E028: @ 810E028
push {r4,lr}
adds r4, r0, 0
- bl TranslateAnimLinear
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _0810E03C
@@ -342,7 +342,7 @@ sub_810E13C: @ 810E13C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
@@ -471,7 +471,7 @@ sub_810E24C: @ 810E24C
movs r0, 0x1
strh r0, [r4, 0x2E]
adds r0, r4, 0
- bl TranslateAnimLinear
+ bl AnimTranslateLinear
ldrh r1, [r4, 0x34]
lsrs r0, r1, 8
cmp r0, 0xC8
@@ -655,7 +655,7 @@ _0810E354:
cmp r0, 0
bne _0810E3F0
adds r0, r6, 0
- bl sub_80A8328
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
@@ -672,7 +672,7 @@ _0810E354:
.pool
_0810E3F0:
adds r0, r6, 0
- bl sub_80A8328
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -718,7 +718,7 @@ _0810E408:
b _0810E4A2
_0810E44A:
adds r0, r6, 0
- bl sub_80A8328
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -1535,7 +1535,7 @@ sub_810EA4C: @ 810EA4C
adds r4, r0, 0
ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_80A8328
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -1577,13 +1577,13 @@ sub_810EAA0: @ 810EAA0
bne _0810EABC
adds r0, r5, 0
movs r1, 0
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
b _0810EAC4
.pool
_0810EABC:
adds r0, r5, 0
movs r1, 0
- bl sub_80A6980
+ bl InitSpritePosToAnimTarget
_0810EAC4:
ldr r4, =gBattleAnimArgs
movs r2, 0x4
@@ -1771,7 +1771,7 @@ sub_810EC34: @ 810EC34
_0810EC46:
adds r0, r4, 0
movs r1, 0x1
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
movs r0, 0
bl GetAnimBattlerSpriteId
ldr r2, =gSprites
@@ -1891,7 +1891,7 @@ sub_810ED28: @ 810ED28
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
@@ -2056,7 +2056,7 @@ _0810EE42:
str r0, [sp]
adds r0, r5, 0
movs r1, 0
- bl sub_80A73E0
+ bl TrySetSpriteRotScale
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
@@ -2085,7 +2085,7 @@ _0810EE92:
ldrsh r3, [r5, r0]
str r1, [sp]
adds r0, r5, 0
- bl sub_80A73E0
+ bl TrySetSpriteRotScale
ldrb r1, [r5, 0x3]
lsls r1, 26
lsrs r1, 27
@@ -2409,7 +2409,7 @@ sub_810F084: @ 810F084
mov r0, r8
movs r1, 0x1
adds r2, r3, 0
- bl sub_80A73E0
+ bl TrySetSpriteRotScale
ldr r0, =sub_810F140
mov r2, r8
str r0, [r2, 0x1C]
@@ -2456,7 +2456,7 @@ sub_810F140: @ 810F140
bge _0810F180
_0810F17A:
adds r0, r2, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_0810F180:
pop {r0}
bx r0
diff --git a/asm/ghost.s b/asm/ghost.s
deleted file mode 100644
index 5a0991468..000000000
--- a/asm/ghost.s
+++ /dev/null
@@ -1,3251 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_811160C
-sub_811160C: @ 811160C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_80A6FD4
- ldr r0, =sub_8111674
- str r0, [r4, 0x1C]
- movs r0, 0x10
- strh r0, [r4, 0x3A]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0x3A]
- movs r0, 0x52
- bl SetGpuReg
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811160C
-
- thumb_func_start sub_8111674
-sub_8111674: @ 8111674
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8111764
- adds r0, r4, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _08111694
- ldr r0, =sub_81116E8
- str r0, [r4, 0x1C]
- b _081116DE
- .pool
-_08111694:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xF
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x38]
- adds r0, r2, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x38]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _081116CC
- cmp r2, 0xC4
- ble _081116DE
-_081116CC:
- lsls r0, 16
- cmp r0, 0
- ble _081116DE
- ldr r0, =gUnknown_02038440
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0xC4
- bl PlaySE12WithPanning
-_081116DE:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8111674
-
- thumb_func_start sub_81116E8
-sub_81116E8: @ 81116E8
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl TranslateAnimLinear
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xF
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x38]
- adds r0, r2, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x38]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _0811172E
- cmp r2, 0xC4
- ble _0811173A
-_0811172E:
- lsls r0, 16
- cmp r0, 0
- ble _0811173A
- movs r0, 0xC4
- bl PlaySE
-_0811173A:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08111758
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_80A67F4
- str r0, [r4, 0x1C]
- b _0811175E
- .pool
-_08111758:
- adds r0, r4, 0
- bl sub_8111764
-_0811175E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81116E8
-
- thumb_func_start sub_8111764
-sub_8111764: @ 8111764
- push {r4,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x3A]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0xFF
- ble _08111788
- adds r0, r2, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- ldr r1, =0x010d0000
- cmp r0, r1
- bne _081117EE
- movs r0, 0
- b _081117EC
- .pool
-_08111788:
- ldrh r1, [r4, 0x3C]
- adds r3, r1, 0x1
- strh r3, [r4, 0x3C]
- movs r0, 0xFF
- ands r0, r1
- cmp r0, 0
- bne _081117EE
- ldr r1, =0xffffff00
- ands r1, r3
- strh r1, [r4, 0x3C]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _081117B0
- adds r0, r2, 0x1
- b _081117B2
- .pool
-_081117B0:
- subs r0, r2, 0x1
-_081117B2:
- strh r0, [r4, 0x3A]
- ldrh r0, [r4, 0x3A]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081117D4
- cmp r0, 0x10
- bne _081117E0
-_081117D4:
- ldrh r0, [r4, 0x3C]
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- eors r0, r1
- strh r0, [r4, 0x3C]
-_081117E0:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081117EE
- movs r0, 0x80
- lsls r0, 1
-_081117EC:
- strh r0, [r4, 0x3A]
-_081117EE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8111764
-
- thumb_func_start sub_81117F4
-sub_81117F4: @ 81117F4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_80A6980
- ldr r1, =sub_8111814
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81117F4
-
- thumb_func_start sub_8111814
-sub_8111814: @ 8111814
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x41
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x82
- bhi _08111848
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x8
- b _08111852
-_08111848:
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
-_08111852:
- orrs r1, r0
- strb r1, [r4, 0x5]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x13
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- adds r0, 0x50
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3D
- bne _08111884
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08111884:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8111814
-
- thumb_func_start sub_811188C
-sub_811188C: @ 811188C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A7270
- adds r0, r4, 0
- movs r1, 0x80
- movs r2, 0x80
- movs r3, 0
- bl obj_id_set_rotscale
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0x80
- strh r1, [r0, 0x8]
- ldr r1, =gBattleAnimArgs
- ldrh r1, [r1]
- strh r1, [r0, 0xA]
- strh r2, [r0, 0xC]
- movs r1, 0x10
- strh r1, [r0, 0xE]
- ldr r1, =sub_8111914
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811188C
-
- thumb_func_start sub_8111914
-sub_8111914: @ 8111914
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0811195C
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0xC]
- adds r1, 0x1
- strh r1, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x9
- bne _0811195C
- ldr r0, =sub_811196C
- str r0, [r4]
-_0811195C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8111914
-
- thumb_func_start sub_811196C
-sub_811196C: @ 811196C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08111994
- subs r0, r1, 0x1
- strh r0, [r4, 0xA]
- b _081119D8
- .pool
-_08111994:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r1, r0, 24
- ldrh r0, [r4, 0x8]
- adds r0, 0x8
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- bgt _081119BC
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- adds r0, r1, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- b _081119D8
-_081119BC:
- adds r0, r1, 0
- bl sub_80A7344
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
-_081119D8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811196C
-
- thumb_func_start sub_81119E0
-sub_81119E0: @ 81119E0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r5, [r4, 0x20]
- ldrh r6, [r4, 0x22]
- ldr r0, =gBattleAnimAttacker
- mov r8, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- mov r9, r1
- strh r0, [r4, 0x20]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- mov r1, r9
- strh r1, [r4, 0x2E]
- ldr r2, =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r4, 0x30]
- ldrh r1, [r2, 0x2]
- strh r1, [r4, 0x32]
- ldrh r1, [r2, 0x4]
- strh r1, [r4, 0x34]
- ldrh r1, [r4, 0x20]
- lsls r1, 4
- strh r1, [r4, 0x36]
- lsls r0, 4
- strh r0, [r4, 0x38]
- lsls r5, 16
- asrs r5, 16
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- subs r5, r0
- lsls r5, 4
- movs r0, 0
- ldrsh r1, [r2, r0]
- lsls r1, 1
- adds r0, r5, 0
- str r2, [sp]
- bl __divsi3
- strh r0, [r4, 0x3A]
- lsls r6, 16
- asrs r6, 16
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- subs r6, r0
- lsls r6, 4
- ldr r2, [sp]
- movs r0, 0
- ldrsh r1, [r2, r0]
- lsls r1, 1
- adds r0, r6, 0
- bl __divsi3
- strh r0, [r4, 0x3C]
- ldr r0, =sub_8111A88
- str r0, [r4, 0x1C]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81119E0
-
- thumb_func_start sub_8111A88
-sub_8111A88: @ 8111A88
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _08111AD2
- cmp r0, 0x1
- bgt _08111A9E
- cmp r0, 0
- beq _08111AA8
- b _08111B96
-_08111A9E:
- cmp r0, 0x2
- beq _08111B3C
- cmp r0, 0x3
- beq _08111B90
- b _08111B96
-_08111AA8:
- ldrh r0, [r5, 0x3A]
- ldrh r2, [r5, 0x36]
- adds r0, r2
- strh r0, [r5, 0x36]
- ldrh r1, [r5, 0x3C]
- ldrh r2, [r5, 0x38]
- adds r1, r2
- strh r1, [r5, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r5, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r5, 0x22]
- ldrh r0, [r5, 0x30]
- subs r0, 0x1
- strh r0, [r5, 0x30]
- lsls r0, 16
- cmp r0, 0
- bgt _08111B96
- b _08111B82
-_08111AD2:
- ldrh r0, [r5, 0x32]
- subs r0, 0x1
- strh r0, [r5, 0x32]
- lsls r0, 16
- cmp r0, 0
- bgt _08111B96
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x30]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x20]
- lsls r0, 4
- strh r0, [r5, 0x36]
- ldrh r0, [r5, 0x22]
- lsls r0, 4
- strh r0, [r5, 0x38]
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- subs r0, r1
- lsls r0, 4
- movs r2, 0x34
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r5, 0x3A]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r2, 0x22
- ldrsh r1, [r5, r2]
- subs r0, r1
- lsls r0, 4
- movs r2, 0x34
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r5, 0x3C]
- b _08111B82
- .pool
-_08111B3C:
- ldrh r0, [r5, 0x3A]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- ldrh r1, [r5, 0x3C]
- ldrh r2, [r5, 0x38]
- adds r1, r2
- strh r1, [r5, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r5, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r5, 0x22]
- ldrh r0, [r5, 0x34]
- subs r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- cmp r0, 0
- bgt _08111B96
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_08111B82:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _08111B96
- .pool
-_08111B90:
- adds r0, r5, 0
- bl move_anim_8074EE0
-_08111B96:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8111A88
-
- thumb_func_start sub_8111B9C
-sub_8111B9C: @ 8111B9C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_80A6980
- ldr r0, =sub_8111BB4
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8111B9C
-
- thumb_func_start sub_8111BB4
-sub_8111BB4: @ 8111BB4
- push {r4-r6,lr}
- adds r3, r0, 0
- movs r5, 0
- movs r6, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08111C4A
- adds r1, r3, 0
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x4
- ands r0, r2
- adds r4, r1, 0
- cmp r0, 0
- bne _08111BDE
- movs r0, 0x4
- orrs r0, r2
- strb r0, [r4]
-_08111BDE:
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _08111BEE
- cmp r0, 0x1
- beq _08111BF8
- movs r6, 0x1
- b _08111C02
-_08111BEE:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x2
- bne _08111C02
- b _08111C06
-_08111BF8:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x4
- bne _08111C02
- movs r5, 0x1
-_08111C02:
- cmp r5, 0
- beq _08111C38
-_08111C06:
- ldrb r2, [r4]
- 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, [r4]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r3, 0x32]
- strh r1, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _08111C4A
- strh r1, [r3, 0x32]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- b _08111C4A
-_08111C38:
- cmp r6, 0
- beq _08111C44
- adds r0, r3, 0
- bl DestroyAnimSprite
- b _08111C4A
-_08111C44:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
-_08111C4A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8111BB4
-
- thumb_func_start sub_8111C50
-sub_8111C50: @ 8111C50
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- movs r6, 0
- movs r1, 0
- strh r0, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bge _08111C80
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _08111D5C
- .pool
-_08111C80:
- strh r1, [r5, 0xA]
- movs r0, 0xF
- strh r0, [r5, 0xC]
- movs r0, 0x2
- strh r0, [r5, 0xE]
- strh r1, [r5, 0x10]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r5, 0xE]
- lsls r1, 8
- ldrh r0, [r5, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r4, =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x50
- strh r1, [r0, 0x2E]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08111CF4
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, =0x0000ff70
- strh r1, [r0, 0x30]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x70
- b _08111D12
- .pool
-_08111CF4:
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x90
- strh r1, [r0, 0x30]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, =0x0000ff90
-_08111D12:
- strh r1, [r0, 0x32]
- ldr r4, =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r2, 0
- strh r2, [r0, 0x34]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x36]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, =SpriteCallbackDummy
- bl StoreSpriteCallbackInData6
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, =sub_80A656C
- str r1, [r0]
- ldr r0, =sub_8111D78
- str r0, [r5]
-_08111D5C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8111C50
-
- thumb_func_start sub_8111D78
-sub_8111D78: @ 8111D78
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08111E1C
- cmp r0, 0x1
- bgt _08111DA0
- cmp r0, 0
- beq _08111DA6
- b _08111E48
- .pool
-_08111DA0:
- cmp r0, 0x2
- beq _08111E42
- b _08111E48
-_08111DA6:
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x3
- ands r0, r1
- strh r0, [r4, 0x12]
- cmp r0, 0x1
- bne _08111DC4
- ldrh r1, [r4, 0xC]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08111DC4
- subs r0, r1, 0x1
- strh r0, [r4, 0xC]
-_08111DC4:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- bne _08111DDA
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _08111DDA
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
-_08111DDA:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, [r4, 0xC]
- movs r0, 0x80
- lsls r0, 13
- cmp r1, r0
- bne _08111E48
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- ble _08111E48
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
- movs r0, 0x1
- strh r0, [r4, 0x10]
- b _08111E48
- .pool
-_08111E1C:
- ldrh r0, [r4, 0x14]
- adds r0, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08111E48
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- b _08111E48
-_08111E42:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_08111E48:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8111D78
-
- thumb_func_start sub_8111E50
-sub_8111E50: @ 8111E50
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, =gTasks
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x26]
- ldr r2, =sub_8111E78
- str r2, [r1]
- bl _call_via_r2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8111E50
-
- thumb_func_start sub_8111E78
-sub_8111E78: @ 8111E78
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A8364
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _08111EA4
- b _081120C6
-_08111EA4:
- lsls r0, 2
- ldr r1, =_08111EBC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08111EBC:
- .4byte _08111ED0
- .4byte _08111FD0
- .4byte _08112014
- .4byte _0811207C
- .4byte _081120A8
-_08111ED0:
- ldr r7, =0x00002771
- adds r0, r7, 0
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- mov r8, r2
- strh r0, [r5, 0x24]
- cmp r0, 0xFF
- beq _08111EFE
- cmp r0, 0xF
- beq _08111EFE
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- strh r0, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bge _08111F0C
- adds r0, r7, 0
- bl FreeSpritePaletteByTag
-_08111EFE:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _081120CC
- .pool
-_08111F0C:
- ldr r4, =gSprites
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r2, [r5, 0x24]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r2, 0x8
- ldrsh r0, [r5, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldr r0, =gBattleSpritesDataPtr
- ldr r1, [r0]
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- 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]
- mov r2, r8
- strh r2, [r5, 0xA]
- strh r2, [r5, 0xC]
- movs r0, 0x10
- strh r0, [r5, 0xE]
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r5, 0x10]
- cmp r6, 0x1
- bne _08111FC4
- movs r1, 0x80
- lsls r1, 2
- b _08111FC8
- .pool
-_08111FC4:
- movs r1, 0x80
- lsls r1, 3
-_08111FC8:
- movs r0, 0
- bl ClearGpuRegBits
- b _081120C6
-_08111FD0:
- movs r1, 0x24
- ldrsh r0, [r5, r1]
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r5, 0x24]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- lsls r0, 1
- ldr r1, =gPlttBufferUnfaded
- adds r0, r1
- movs r2, 0x24
- ldrsh r1, [r5, r2]
- lsls r1, 1
- ldr r2, =gPlttBufferFaded
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- ldrh r0, [r5, 0x10]
- ldr r3, =0x00003c0d
- movs r1, 0x10
- movs r2, 0xA
- bl BlendPalette
- b _081120C6
- .pool
-_08112014:
- ldr r2, =gSprites
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- subs r1, 0x20
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r1, 0
- bge _08112034
- movs r2, 0
-_08112034:
- cmp r6, 0x1
- bne _08112054
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x4
- str r2, [sp, 0x4]
- str r6, [sp, 0x8]
- b _0811206C
- .pool
-_08112054:
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x8
- str r2, [sp, 0x4]
- movs r2, 0x1
- str r2, [sp, 0x8]
-_0811206C:
- movs r2, 0x2
- movs r3, 0x6
- bl ScanlineEffect_InitWave
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x1C]
- b _081120C6
-_0811207C:
- cmp r6, 0x1
- bne _08112090
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _08112098
- .pool
-_08112090:
- ldr r1, =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_08112098:
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- b _081120C6
- .pool
-_081120A8:
- cmp r6, 0x1
- bne _081120B8
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _081120C2
-_081120B8:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_081120C2:
- ldr r0, =sub_81120DC
- str r0, [r5]
-_081120C6:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
-_081120CC:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8111E78
-
- thumb_func_start sub_81120DC
-sub_81120DC: @ 81120DC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x1
- ands r0, r1
- strh r0, [r4, 0x12]
- cmp r0, 0
- bne _08112114
- ldr r1, =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- strh r0, [r4, 0xC]
-_08112114:
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bne _08112136
- ldr r1, =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- movs r1, 0x10
- subs r1, r0
- strh r1, [r4, 0xE]
-_08112136:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0x80
- bne _0811215E
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, =sub_8112170
- str r1, [r4]
- adds r0, r5, 0
- bl _call_via_r1
-_0811215E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81120DC
-
- thumb_func_start sub_8112170
-sub_8112170: @ 8112170
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80A8364
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _081121DC
- cmp r0, 0x1
- bgt _081121A8
- cmp r0, 0
- beq _081121AE
- b _08112258
- .pool
-_081121A8:
- cmp r0, 0x2
- beq _081121F0
- b _08112258
-_081121AE:
- ldr r1, =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- cmp r6, 0x1
- bne _081121D0
- movs r1, 0x80
- lsls r1, 2
- b _081121D4
- .pool
-_081121D0:
- movs r1, 0x80
- lsls r1, 3
-_081121D4:
- movs r0, 0
- bl ClearGpuRegBits
- b _08112258
-_081121DC:
- ldrh r0, [r4, 0x10]
- ldr r3, =0x00003c0d
- movs r1, 0x10
- movs r2, 0
- bl BlendPalette
- b _08112258
- .pool
-_081121F0:
- ldr r3, =gSprites
- movs r0, 0x24
- ldrsh r1, [r4, 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]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- bl obj_delete_but_dont_free_vram
- ldr r0, =0x00002771
- bl FreeSpritePaletteByTag
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- cmp r6, 0x1
- bne _08112248
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _08112252
- .pool
-_08112248:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_08112252:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08112258:
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8112170
-
- thumb_func_start sub_8112264
-sub_8112264: @ 8112264
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _081122AC
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r2, 0xE0
- lsls r2, 13
- adds r0, r2
- lsrs r5, r0, 16
- ldr r4, =gBattleAnimTarget
- b _081122D0
- .pool
-_081122AC:
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r2, 0xE0
- lsls r2, 13
- adds r0, r2
- lsrs r5, r0, 16
- ldr r4, =gBattleAnimAttacker
-_081122D0:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0xE0
- lsls r1, 13
- adds r0, r1
- lsrs r0, 16
- mov r9, r0
- mov r8, r5
- mov r2, r9
- subs r4, r2, r5
- lsls r4, 16
- lsrs r4, 16
- lsls r0, r6, 4
- strh r0, [r7, 0x2E]
- lsls r0, r5, 4
- strh r0, [r7, 0x30]
- mov r1, r10
- subs r0, r1, r6
- lsls r0, 4
- ldr r5, =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r7, 0x32]
- lsls r4, 16
- asrs r4, 12
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl __divsi3
- strh r0, [r7, 0x34]
- ldrh r0, [r5, 0x2]
- strh r0, [r7, 0x36]
- mov r1, r10
- strh r1, [r7, 0x38]
- mov r2, r9
- strh r2, [r7, 0x3A]
- movs r1, 0x36
- ldrsh r0, [r7, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r7, 0x3C]
- ldrb r1, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r7, 0x5]
- strh r6, [r7, 0x20]
- mov r2, r8
- strh r2, [r7, 0x22]
- ldr r0, =sub_8112384
- str r0, [r7, 0x1C]
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8112264
-
- thumb_func_start sub_8112384
-sub_8112384: @ 8112384
- push {r4,lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x36]
- movs r1, 0x36
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _081123BC
- ldrh r0, [r2, 0x32]
- ldrh r4, [r2, 0x2E]
- adds r0, r4
- strh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x34]
- ldrh r4, [r2, 0x30]
- adds r1, r4
- strh r1, [r2, 0x30]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r2, 0x22]
- subs r0, r3, 0x1
- strh r0, [r2, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _081123BC
- strh r0, [r2, 0x2E]
-_081123BC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8112384
-
- thumb_func_start sub_81123C4
-sub_81123C4: @ 81123C4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r1, r0
- str r1, [sp]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0
- ldr r1, [sp]
- strh r0, [r1, 0x12]
- strh r0, [r1, 0x14]
- strh r0, [r1, 0x16]
- strh r0, [r1, 0x18]
- movs r0, 0x10
- strh r0, [r1, 0x1A]
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r2]
- strh r0, [r1, 0x1C]
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_80A861C
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _08112434
- b _08112530
-_08112434:
- movs r4, 0
-_08112436:
- lsls r1, r4, 16
- asrs r3, r1, 16
- ldr r0, =gBattleAnimAttacker
- ldrb r2, [r0]
- str r1, [sp, 0x10]
- cmp r3, r2
- beq _08112502
- movs r0, 0x2
- eors r2, r0
- cmp r3, r2
- beq _08112502
- lsls r0, r4, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08112502
- ldr r6, [sp, 0x4]
- ldr r3, [sp, 0x8]
- lsls r0, r3, 16
- asrs r7, r0, 16
- ldr r0, =gUnknown_08596DB8
- adds r1, r6, 0
- adds r2, r7, 0
- movs r3, 0x37
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x40
- beq _08112502
- adds r0, r4, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_80A861C
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- mov r0, r8
- lsls r5, r0, 4
- add r5, r8
- lsls r5, 2
- ldr r1, =gSprites
- adds r4, r5, r1
- lsls r0, r6, 4
- strh r0, [r4, 0x2E]
- lsls r0, r7, 4
- strh r0, [r4, 0x30]
- mov r2, r10
- subs r0, r2, r6
- lsls r0, 4
- ldr r3, =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r3, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- mov r3, r9
- lsls r0, r3, 16
- asrs r0, 16
- subs r0, r7
- lsls r0, 4
- ldr r2, =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- bl __divsi3
- strh r0, [r4, 0x34]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x36]
- mov r2, r10
- strh r2, [r4, 0x38]
- mov r3, r9
- strh r3, [r4, 0x3A]
- ldr r0, =gSprites + 0x1C
- adds r5, r0
- ldr r0, =sub_8112384
- str r0, [r5]
- ldr r2, [sp]
- movs r3, 0x20
- ldrsh r1, [r2, r3]
- adds r1, 0xD
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1
- mov r1, r8
- strh r1, [r0]
- ldrh r0, [r2, 0x20]
- adds r0, 0x1
- strh r0, [r2, 0x20]
-_08112502:
- ldr r2, [sp, 0x10]
- movs r3, 0x80
- lsls r3, 9
- adds r0, r2, r3
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08112436
- b _081125B4
- .pool
-_08112530:
- ldr r0, =gUnknown_08596DB8
- ldr r7, [sp, 0x4]
- ldr r2, [sp, 0x8]
- lsls r1, r2, 16
- asrs r1, 16
- str r1, [sp, 0xC]
- adds r1, r7, 0
- ldr r2, [sp, 0xC]
- movs r3, 0x37
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x40
- beq _081125B4
- movs r3, 0x30
- mov r10, r3
- movs r0, 0x28
- mov r9, r0
- ldr r6, =gSprites
- mov r1, r8
- lsls r5, r1, 4
- add r5, r8
- lsls r5, 2
- adds r4, r5, r6
- lsls r0, r7, 4
- strh r0, [r4, 0x2E]
- ldr r2, [sp, 0xC]
- lsls r0, r2, 4
- strh r0, [r4, 0x30]
- subs r0, r3, r7
- lsls r0, 4
- ldr r3, =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r3, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- mov r3, r9
- ldr r1, [sp, 0xC]
- subs r0, r3, r1
- lsls r0, 4
- ldr r2, =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- bl __divsi3
- strh r0, [r4, 0x34]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x36]
- mov r2, r10
- strh r2, [r4, 0x38]
- mov r3, r9
- strh r3, [r4, 0x3A]
- adds r6, 0x1C
- adds r5, r6
- ldr r0, =sub_8112384
- str r0, [r5]
- mov r1, r8
- ldr r0, [sp]
- strh r1, [r0, 0x22]
- movs r0, 0x1
- ldr r2, [sp]
- strh r0, [r2, 0x20]
-_081125B4:
- ldr r0, =sub_81125E0
- ldr r3, [sp]
- str r0, [r3]
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81123C4
-
- thumb_func_start sub_81125E0
-sub_81125E0: @ 81125E0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _08112696
- cmp r1, 0x1
- bgt _08112608
- cmp r1, 0
- beq _08112616
- b _08112752
- .pool
-_08112608:
- cmp r1, 0x2
- bne _0811260E
- b _08112728
-_0811260E:
- cmp r1, 0x3
- bne _08112614
- b _0811273C
-_08112614:
- b _08112752
-_08112616:
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0811267C
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0811267C
- strh r1, [r4, 0x12]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811264C
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _0811265A
- adds r0, r1, 0x1
- strh r0, [r4, 0x18]
- b _0811265A
-_0811264C:
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811265A
- subs r0, r1, 0x1
- strh r0, [r4, 0x1A]
-_0811265A:
- ldrh r1, [r4, 0x1A]
- lsls r1, 8
- ldrh r0, [r4, 0x18]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- cmp r0, 0x17
- ble _0811267C
- movs r0, 0
- strh r0, [r4, 0x16]
- movs r0, 0x1
- strh r0, [r4, 0x14]
-_0811267C:
- ldrh r1, [r4, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811268C
- subs r0, r1, 0x1
- strh r0, [r4, 0x1C]
- b _08112752
-_0811268C:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08112752
- b _08112734
-_08112696:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08112752
- movs r0, 0
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- ands r0, r1
- lsls r0, 16
- cmp r0, 0
- beq _081126C6
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081126D4
- subs r0, r1, 0x1
- strh r0, [r4, 0x18]
- b _081126D4
-_081126C6:
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _081126D4
- adds r0, r1, 0x1
- strh r0, [r4, 0x1A]
-_081126D4:
- ldrh r1, [r4, 0x1A]
- lsls r1, 8
- ldrh r0, [r4, 0x18]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, [r4, 0x18]
- movs r0, 0x80
- lsls r0, 13
- cmp r1, r0
- bne _08112752
- movs r5, 0
- b _08112718
-_081126F4:
- adds r1, r5, 0
- adds r1, 0xD
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x8
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_08112718:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- cmp r5, r0
- blt _081126F4
- b _08112734
- .pool
-_08112728:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- cmp r0, 0
- ble _08112752
-_08112734:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08112752
-_0811273C:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08112752:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81125E0
-
- thumb_func_start sub_8112758
-sub_8112758: @ 8112758
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_WIN0V
- strh r1, [r0]
- ldr r1, =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =0x00003f1f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0xC8
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _081127A0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _081127B8
-_081127A0:
- movs r6, 0x28
- b _081127BA
- .pool
-_081127B8:
- movs r6, 0xC8
-_081127BA:
- ldr r1, =gBattle_WIN0H
- lsls r3, r6, 16
- asrs r2, r3, 16
- lsls r0, r2, 8
- orrs r0, r2
- strh r0, [r1]
- ldr r1, =gBattle_WIN0V
- movs r5, 0x28
- ldr r0, =0x00002828
- strh r0, [r1]
- lsrs r3, 16
- movs r1, 0xF0
- subs r1, r2
- movs r4, 0x48
- ldr r2, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r2
- strh r3, [r0, 0xA]
- strh r1, [r0, 0xC]
- strh r5, [r0, 0xE]
- strh r4, [r0, 0x10]
- strh r6, [r0, 0x12]
- strh r5, [r0, 0x14]
- ldr r1, =sub_811280C
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8112758
-
- thumb_func_start sub_811280C
-sub_811280C: @ 811280C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811292C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0x8]
- adds r0, r1, 0x1
- strh r0, [r4, 0x8]
- ldrh r5, [r4, 0xA]
- ldrh r7, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- mov r10, r0
- ldrh r2, [r4, 0x10]
- str r2, [sp, 0xC]
- ldrh r0, [r4, 0x12]
- ldrh r2, [r4, 0x14]
- mov r8, r2
- lsls r1, 16
- asrs r6, r1, 16
- cmp r6, 0xF
- ble _08112848
- b _08112938
-_08112848:
- lsls r0, 16
- asrs r0, 16
- bl __floatsidf
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- lsls r0, r5, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _08112930 @ =0x3FB00000
- ldr r3, _08112934 @ =0x00000000
- bl __muldf3
- adds r5, r1, 0
- adds r4, r0, 0
- adds r0, r6, 0
- bl __floatsidf
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- adds r1, r5, 0
- adds r0, r4, 0
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- bl __subdf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- lsls r0, r7, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _08112930 @ =0x3FB00000
- ldr r3, _08112934 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- bl __adddf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r7, r0, 16
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- bl __floatsidf
- adds r5, r1, 0
- adds r4, r0, 0
- mov r2, r10
- lsls r0, r2, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _08112930 @ =0x3FB00000
- ldr r3, _08112934 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- adds r1, r5, 0
- adds r0, r4, 0
- bl __subdf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r1, [sp, 0xC]
- lsls r0, r1, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _08112930 @ =0x3FB00000
- ldr r3, _08112934 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- adds r1, r5, 0
- adds r0, r4, 0
- bl __adddf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r5, r0, 16
- b _08112966
- .align 2, 0
-_0811292C:
- .4byte gTasks
-_08112930:
- .4byte 0x3FB00000
-_08112934:
- .4byte 0x00000000
-_08112938:
- movs r2, 0
- mov r9, r2
- movs r7, 0xF0
- movs r6, 0
- movs r5, 0x70
- str r6, [sp]
- str r6, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0
- bl sub_80A75AC
- lsls r0, 16
- lsrs r0, 16
- str r6, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08112988 @=sub_8112994
- str r0, [r4]
-_08112966:
- ldr r1, _0811298C @=gBattle_WIN0H
- mov r2, r9
- lsls r0, r2, 8
- orrs r7, r0
- strh r7, [r1]
- ldr r1, _08112990 @=gBattle_WIN0V
- lsls r0, r6, 8
- orrs r5, r0
- strh r5, [r1]
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08112988:
- .4byte sub_8112994
-_0811298C:
- .4byte gBattle_WIN0H
-_08112990:
- .4byte gBattle_WIN0V
- thumb_func_end sub_811280C
-
- thumb_func_start sub_8112994
-sub_8112994: @ 8112994
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _081129DA
- ldr r0, =gBattle_WIN0H
- strh r1, [r0]
- ldr r0, =gBattle_WIN0V
- strh r1, [r0]
- ldr r4, =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_081129DA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8112994
-
- thumb_func_start sub_81129F0
-sub_81129F0: @ 81129F0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08112A24
- movs r2, 0x18
- ldr r3, =0x0000fffe
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r4, 0x3]
- b _08112A28
- .pool
-_08112A24:
- ldr r2, =0x0000ffe8
- movs r3, 0x2
-_08112A28:
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- strh r3, [r4, 0x30]
- movs r0, 0x3C
- strh r0, [r4, 0x2E]
- ldr r0, =sub_8112A4C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81129F0
-
- thumb_func_start sub_8112A4C
-sub_8112A4C: @ 8112A4C
- push {r4,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _08112A5E
- subs r0, r1, 0x1
- b _08112AC2
-_08112A5E:
- ldrh r0, [r3, 0x30]
- ldrh r4, [r3, 0x24]
- adds r1, r0, r4
- strh r1, [r3, 0x24]
- adds r0, r1, 0x7
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xE
- bls _08112AC4
- ldrh r0, [r3, 0x20]
- adds r0, r1
- strh r0, [r3, 0x20]
- movs r0, 0
- strh r0, [r3, 0x24]
- ldrh r2, [r3, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r4, =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _08112AC0
- movs r0, 0x1E
- strh r0, [r3, 0x2E]
- ldr r0, =WaitAnimForDuration
- str r0, [r3, 0x1C]
- ldr r1, =sub_8112ACC
- adds r0, r3, 0
- bl StoreSpriteCallbackInData6
- b _08112AC4
- .pool
-_08112AC0:
- movs r0, 0x28
-_08112AC2:
- strh r0, [r3, 0x2E]
-_08112AC4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8112A4C
-
- thumb_func_start sub_8112ACC
-sub_8112ACC: @ 8112ACC
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0
- bne _08112AF6
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x32]
- b _08112B3A
-_08112AF6:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bgt _08112B06
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _08112B3A
-_08112B06:
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- movs r1, 0x10
- subs r1, r0
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _08112B3A
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_8112B44
- str r0, [r4, 0x1C]
-_08112B3A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8112ACC
-
- thumb_func_start sub_8112B44
-sub_8112B44: @ 8112B44
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_WIN0V
- strh r1, [r0]
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8112B44
-
- thumb_func_start sub_8112B78
-sub_8112B78: @ 8112B78
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r1, 0xC
- bl Sin
- strh r0, [r5, 0x24]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08112B9C
- ldrh r0, [r5, 0x24]
- negs r0, r0
- strh r0, [r5, 0x24]
-_08112B9C:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x3C]
- adds r0, 0x1
- strh r0, [r5, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _08112BE8
- ldr r0, =0x0000050b
- strh r0, [r5, 0x3A]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r5, 0x3A]
- movs r0, 0x52
- bl SetGpuReg
- b _08112C40
- .pool
-_08112BE8:
- cmp r0, 0x1E
- ble _08112C40
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r1, [r5, 0x3A]
- lsls r0, r1, 16
- asrs r0, 24
- lsls r0, 16
- movs r6, 0xFF
- ands r6, r1
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r7, r0, 16
- cmp r7, 0x10
- bls _08112C0C
- movs r7, 0x10
-_08112C0C:
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r0, 0
- bge _08112C18
- movs r6, 0
-_08112C18:
- lsls r4, r7, 8
- orrs r4, r6
- lsls r1, r4, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- strh r4, [r5, 0x3A]
- cmp r7, 0x10
- bne _08112C40
- cmp r6, 0
- bne _08112C40
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_8112C4C
- str r0, [r5, 0x1C]
-_08112C40:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8112B78
-
- thumb_func_start sub_8112C4C
-sub_8112C4C: @ 8112C4C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8112C4C
-
- thumb_func_start sub_8112C6C
-sub_8112C6C: @ 8112C6C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r6, 0
- strh r6, [r4, 0x8]
- movs r0, 0x10
- mov r8, r0
- mov r0, r8
- strh r0, [r4, 0xA]
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1A]
- ldrb r0, [r5]
- bl GetBattlerYCoordWithElevation
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_80A861C
- lsls r0, 16
- asrs r1, r0, 16
- lsrs r0, 31
- adds r1, r0
- asrs r1, 1
- adds r1, 0x8
- strh r1, [r4, 0x1E]
- strh r6, [r4, 0x16]
- ldrb r0, [r5]
- bl sub_80A8328
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x12]
- ldrb r0, [r5]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x2
- strh r0, [r4, 0x14]
- strh r6, [r4, 0xE]
- mov r0, r8
- strh r0, [r4, 0x10]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- strh r6, [r4, 0x18]
- ldr r0, =sub_8112D10
- str r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8112C6C
-
- thumb_func_start sub_8112D10
-sub_8112D10: @ 8112D10
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _08112D2A
- b _08112E96
-_08112D2A:
- lsls r0, 2
- ldr r1, =_08112D3C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08112D3C:
- .4byte _08112D54
- .4byte _08112DC4
- .4byte _08112E06
- .4byte _08112E1A
- .4byte _08112E70
- .4byte _08112E80
-_08112D54:
- movs r6, 0
-_08112D56:
- movs r2, 0x1A
- ldrsh r1, [r4, r2]
- movs r0, 0x1C
- ldrsh r2, [r4, r0]
- ldrb r3, [r4, 0x14]
- ldr r0, =gUnknown_08596E30
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _08112DAA
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r1
- strh r7, [r5, 0x2E]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _08112D8C
- movs r1, 0x1
-_08112D8C:
- strh r1, [r5, 0x30]
- movs r0, 0x2A
- muls r0, r6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x1E]
- strh r0, [r5, 0x34]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 1
- strh r0, [r5, 0x38]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
-_08112DAA:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _08112D56
- b _08112E78
- .pool
-_08112DC4:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08112DE2
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0xD
- bgt _08112DF0
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _08112DF0
-_08112DE2:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0x4
- ble _08112DF0
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
-_08112DF0:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- ldrh r2, [r4, 0xE]
- ldrh r1, [r4, 0x10]
- cmp r0, 0xE
- bne _08112E60
- cmp r1, 0x4
- bne _08112E60
- movs r0, 0
- strh r0, [r4, 0xA]
- b _08112E5A
-_08112E06:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _08112E96
- movs r0, 0
- strh r0, [r4, 0xA]
- b _08112E78
-_08112E1A:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08112E38
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08112E46
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _08112E46
-_08112E38:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _08112E46
- adds r0, r1, 0x1
- strh r0, [r4, 0x10]
-_08112E46:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- ldrh r2, [r4, 0xE]
- ldrh r1, [r4, 0x10]
- cmp r0, 0
- bne _08112E60
- cmp r1, 0x10
- bne _08112E60
- movs r0, 0x1
- strh r0, [r4, 0x18]
-_08112E5A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08112E60:
- lsls r1, 8
- orrs r1, r2
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- b _08112E96
-_08112E70:
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08112E96
-_08112E78:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08112E96
-_08112E80:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_08112E96:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8112D10
-
- thumb_func_start sub_8112E9C
-sub_8112E9C: @ 8112E9C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08112EAE
- ldrh r0, [r4, 0x32]
- adds r0, 0x2
- b _08112EB2
-_08112EAE:
- ldrh r0, [r4, 0x32]
- subs r0, 0x2
-_08112EB2:
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x32]
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- subs r0, 0x41
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7E
- bhi _08112EF4
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x12]
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- b _08112F08
- .pool
-_08112EF4:
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x3
- ldrb r1, [r0, 0x12]
- ands r1, r2
-_08112F08:
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- lsls r0, 3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- movs r1, 0x7
- bl Sin
- strh r0, [r4, 0x26]
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- movs r2, 0x18
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _08112F56
- ldrh r0, [r1, 0x16]
- subs r0, 0x1
- strh r0, [r1, 0x16]
- adds r0, r4, 0
- bl DestroySprite
-_08112F56:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8112E9C
-
- thumb_func_start sub_8112F60
-sub_8112F60: @ 8112F60
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r3]
- ldr r2, =gBattlerSpriteIds
- ldr r1, =gBattleAnimAttacker
- ldrb r1, [r1]
- adds r1, r2
- ldrb r1, [r1]
- strh r1, [r0, 0x38]
- movs r1, 0x80
- strh r1, [r0, 0x2E]
- movs r1, 0xA
- strh r1, [r0, 0x30]
- ldr r2, =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r0, 0x32]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x34]
- ldr r1, =sub_8112FB8
- str r1, [r0, 0x1C]
- ldr r2, =gSprites
- movs r3, 0x38
- ldrsh r1, [r0, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- bx lr
- .pool
- thumb_func_end sub_8112F60
-
- thumb_func_start sub_8112FB8
-sub_8112FB8: @ 8112FB8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x34]
- movs r1, 0x34
- ldrsh r3, [r5, r1]
- cmp r3, 0
- beq _08113020
- subs r0, 0x1
- strh r0, [r5, 0x34]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- ldr r4, =gSprites
- movs r1, 0x38
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Cos
- movs r1, 0x38
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x26]
- ldrh r0, [r5, 0x32]
- ldrh r2, [r5, 0x2E]
- adds r1, r0, r2
- strh r1, [r5, 0x2E]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08113054
- ldr r2, =0xffffff00
- adds r0, r1, r2
- strh r0, [r5, 0x2E]
- b _08113054
- .pool
-_08113020:
- ldr r2, =gSprites
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x8
- strh r1, [r0, 0x22]
- ldr r0, =move_anim_8074EE0
- str r0, [r5, 0x1C]
-_08113054:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8112FB8
-
- .align 2, 0
diff --git a/asm/ice.s b/asm/ice.s
index 37142e535..c882d2245 100644
--- a/asm/ice.s
+++ b/asm/ice.s
@@ -355,7 +355,7 @@ sub_810B8AC: @ 810B8AC
ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r1, =sub_80A634C
+ ldr r1, =TranslateSpriteInGrowingCircleOverDuration
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
@@ -370,7 +370,7 @@ sub_810B8EC: @ 810B8EC
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x2
@@ -432,7 +432,7 @@ sub_810B974: @ 810B974
bne _0810B990
adds r0, r4, 0
movs r1, 0x1
- bl sub_80A6980
+ bl InitSpritePosToAnimTarget
b _0810B9C6
.pool
_0810B990:
@@ -466,7 +466,7 @@ _0810B9C6:
ldr r1, =sub_810B9E8
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67BC
+ ldr r0, =RunStoredCallbackWhenAffineAnimEnds
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
@@ -501,7 +501,7 @@ sub_810B9E8: @ 810B9E8
cmp r0, 0x14
bne _0810BA1E
adds r0, r3, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_0810BA1E:
pop {r0}
bx r0
@@ -513,7 +513,7 @@ sub_810BA24: @ 810BA24
sub sp, 0x10
adds r5, r0, 0
movs r1, 0x1
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
ldr r6, =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
@@ -586,7 +586,7 @@ _0810BAC0:
cmp r4, 0
bge _0810BAC0
adds r0, r5, 0
- bl sub_80A7160
+ bl InitAnimFastLinearTranslationWithSpeed
ldrh r0, [r5, 0x30]
movs r1, 0x1
eors r0, r1
@@ -598,7 +598,7 @@ _0810BAE2:
movs r0, 0x1
strh r0, [r5, 0x2E]
adds r0, r5, 0
- bl sub_80A70E8
+ bl AnimFastTranslateLinear
movs r0, 0x20
ldrsh r1, [r5, r0]
movs r2, 0x24
@@ -775,7 +775,7 @@ sub_810BC4C: @ 810BC4C
movs r0, 0x1
strh r0, [r4, 0x2E]
adds r0, r4, 0
- bl sub_80A70E8
+ bl AnimFastTranslateLinear
movs r1, 0x20
ldrsh r0, [r4, r1]
movs r2, 0x24
@@ -814,7 +814,7 @@ sub_810BC94: @ 810BC94
sub sp, 0x10
adds r5, r0, 0
movs r1, 0x1
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x8]
strh r0, [r5, 0x2E]
@@ -877,7 +877,7 @@ _0810BD26:
adds r0, r1
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl sub_80A7160
+ bl InitAnimFastLinearTranslationWithSpeed
adds r7, r5, 0
adds r7, 0x2E
adds r2, r7, 0
@@ -902,7 +902,7 @@ _0810BD5A:
movs r0, 0x1
strh r0, [r5, 0x2E]
adds r0, r5, 0
- bl sub_80A70E8
+ bl AnimFastTranslateLinear
movs r2, 0x20
ldrsh r1, [r5, r2]
movs r2, 0x24
@@ -965,7 +965,7 @@ _0810BDAE:
sub_810BDD8: @ 810BDD8
push {r4,lr}
adds r4, r0, 0
- bl sub_80A70E8
+ bl AnimFastTranslateLinear
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
@@ -1036,7 +1036,7 @@ sub_810BE48: @ 810BE48
bne _0810BE6C
adds r0, r4, 0
movs r1, 0
- bl sub_80A6980
+ bl InitSpritePosToAnimTarget
b _0810BEA2
.pool
_0810BE6C:
@@ -1103,7 +1103,7 @@ sub_810BED0: @ 810BED0
bne _0810BEF4
adds r0, r5, 0
movs r1, 0
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
b _0810BF32
.pool
_0810BEF4:
@@ -1147,7 +1147,7 @@ _0810BF40:
bne _0810BF52
adds r0, r5, 0
movs r1, 0
- bl sub_80A6980
+ bl InitSpritePosToAnimTarget
b _0810BF8E
_0810BF52:
ldr r4, =gBattleAnimTarget
@@ -1240,7 +1240,7 @@ _0810BFCC:
sub_810C008: @ 810C008
push {r4,lr}
adds r4, r0, 0
- bl TranslateAnimLinear
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _0810C092
@@ -1269,7 +1269,7 @@ sub_810C008: @ 810C008
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
- bl sub_80A8328
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -1284,7 +1284,7 @@ _0810C064:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
- bl sub_80A8328
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
@@ -1368,7 +1368,7 @@ _0810C0E2:
mov r0, sp
movs r2, 0
bl sub_80A6D60
- ldr r0, =gUnknown_0854C270
+ ldr r0, =gUnknown_083970E8
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
@@ -1650,7 +1650,7 @@ _0810C366:
mov r0, sp
movs r2, 0
bl sub_80A6D60
- ldr r0, =gUnknown_0854C270
+ ldr r0, =gUnknown_083970E8
mov r1, sp
ldrb r1, [r1, 0x8]
lsls r1, 4
@@ -1985,7 +1985,7 @@ _0810C684:
adds r0, r6
strh r0, [r5, 0x36]
ldrb r0, [r4]
- bl sub_80A8328
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 16
ldrh r1, [r5, 0x3C]
@@ -2037,7 +2037,7 @@ _0810C6F4:
b _0810C90C
_0810C6F6:
adds r0, r4, 0
- bl TranslateAnimLinear
+ bl AnimTranslateLinear
ldr r1, =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
@@ -2131,7 +2131,7 @@ _0810C78E:
.pool
_0810C7BC:
adds r0, r4, 0
- bl TranslateAnimLinear
+ bl AnimTranslateLinear
ldr r1, =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
@@ -2267,7 +2267,7 @@ _0810C8B6:
.pool
_0810C8D0:
adds r0, r4, 0
- bl TranslateAnimLinear
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _0810C90C
@@ -2762,7 +2762,7 @@ _0810CCA6:
bl StartSpriteAffineAnim
adds r0, r5, 0
movs r1, 0x1
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
ldr r6, =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
@@ -2816,7 +2816,7 @@ sub_810CD1C: @ 810CD1C
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
- ldr r0, =sub_80A67D8
+ ldr r0, =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
ldr r1, =DestroyAnimSprite
adds r0, r4, 0
@@ -2845,7 +2845,7 @@ sub_810CD4C: @ 810CD4C
strh r0, [r4, 0x4]
adds r0, r4, 0
movs r1, 0x1
- bl sub_80A6980
+ bl InitSpritePosToAnimTarget
bl Random2
movs r5, 0xFF
ands r5, r0
diff --git a/asm/macros/map.inc b/asm/macros/map.inc
index 9a028b2e5..94caeb697 100644
--- a/asm/macros/map.inc
+++ b/asm/macros/map.inc
@@ -14,7 +14,7 @@
.4byte \address
.endm
- .macro object_event index, gfx, replacement, x, y, elevation, movement_type, x_radius, y_radius, trainer_type, sight_radius_tree_etc, script, event_flag
+ .macro object_event index:req, gfx:req, replacement:req, x:req, y:req, elevation:req, movement_type:req, x_radius:req, y_radius:req, trainer_type:req, sight_radius_tree_etc:req, script:req, event_flag:req
.byte \index, \gfx, \replacement, 0
.2byte \x
.2byte \y
diff --git a/asm/party_menu.s b/asm/party_menu.s
deleted file mode 100644
index dd06806cb..000000000
--- a/asm/party_menu.s
+++ /dev/null
@@ -1,18014 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81B0038
-sub_81B0038: @ 81B0038
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp]
- lsls r4, 24
- lsrs r6, r4, 24
- bl reset_brm
- ldr r0, =gUnknown_0203CEC4
- mov r10, r0
- movs r0, 0x8E
- lsls r0, 2
- bl Alloc
- adds r5, r0, 0
- mov r1, r10
- str r5, [r1]
- cmp r5, 0
- bne _081B0088
- ldr r0, [sp, 0x2C]
- bl SetMainCallback2
- b _081B0194
- .pool
-_081B0088:
- ldr r3, =gUnknown_0203CEC8
- movs r1, 0xF
- mov r4, r8
- ands r1, r4
- ldrb r2, [r3, 0x8]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x8]
- ldr r0, [sp, 0x2C]
- str r0, [r3]
- movs r4, 0
- strb r7, [r3, 0xB]
- lsls r2, r6, 2
- ldrh r1, [r5, 0xA]
- movs r0, 0x3
- ands r0, r1
- orrs r0, r2
- strh r0, [r5, 0xA]
- ldr r0, [sp, 0x28]
- str r0, [r5]
- str r4, [r5, 0x4]
- ldrb r1, [r5, 0x8]
- movs r0, 0xF
- negs r0, r0
- ands r0, r1
- strb r0, [r5, 0x8]
- mov r1, r10
- ldr r2, [r1]
- ldrh r0, [r2, 0x8]
- movs r4, 0xFE
- lsls r4, 3
- adds r1, r4, 0
- orrs r0, r1
- strh r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xFE
- lsls r1, 10
- orrs r0, r1
- str r0, [r2, 0x8]
- adds r6, r3, 0
- mov r5, r8
- cmp r5, 0x4
- bne _081B00F0
- ldrb r0, [r2, 0x8]
- movs r1, 0x1
- orrs r0, r1
- b _081B00F8
- .pool
-_081B00F0:
- ldrb r1, [r2, 0x8]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
-_081B00F8:
- strb r0, [r2, 0x8]
- mov r0, r9
- cmp r0, 0xFF
- beq _081B0114
- movs r0, 0x3
- mov r1, r9
- ands r0, r1
- lsls r0, 4
- ldrb r2, [r6, 0x8]
- movs r1, 0x31
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r6, 0x8]
-_081B0114:
- movs r2, 0
- ldr r5, =gUnknown_0203CEC4
- movs r4, 0x86
- lsls r4, 2
- movs r3, 0
-_081B011E:
- ldr r0, [r5]
- lsls r1, r2, 1
- adds r0, r4
- adds r0, r1
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xF
- bls _081B011E
- movs r2, 0
- ldr r4, =gUnknown_0203CEC4
- movs r3, 0xFF
-_081B0138:
- ldr r0, [r4]
- adds r0, 0xC
- adds r0, r2
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x2
- bls _081B0138
- ldr r4, [sp]
- cmp r4, 0
- bne _081B015C
- strb r4, [r6, 0x9]
- b _081B017E
- .pool
-_081B015C:
- adds r1, r6, 0
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- cmp r0, 0x5
- bgt _081B017A
- adds r1, r0, 0
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- bne _081B017E
-_081B017A:
- movs r0, 0
- strb r0, [r6, 0x9]
-_081B017E:
- ldr r2, =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- bl CalculatePlayerPartyCount
- ldr r0, =c2_811EBD0
- bl SetMainCallback2
-_081B0194:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B0038
-
- thumb_func_start sub_81B01B0
-sub_81B01B0: @ 81B01B0
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_81B01B0
-
- thumb_func_start sub_81B01CC
-sub_81B01CC: @ 81B01CC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81B01CC
-
- thumb_func_start c2_811EBD0
-c2_811EBD0: @ 81B01E0
- push {lr}
-_081B01E2:
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B0206
- bl sub_81B020C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B0206
- bl sub_81221AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B01E2
-_081B0206:
- pop {r0}
- bx r0
- thumb_func_end c2_811EBD0
-
- thumb_func_start sub_81B020C
-sub_81B020C: @ 81B020C
- push {r4,lr}
- sub sp, 0x4
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x16
- bls _081B0222
- b _081B0498
-_081B0222:
- lsls r0, 2
- ldr r1, =_081B0234
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B0234:
- .4byte _081B0290
- .4byte _081B02AC
- .4byte _081B02B2
- .4byte _081B02D4
- .4byte _081B02DA
- .4byte _081B02EC
- .4byte _081B02FE
- .4byte _081B0310
- .4byte _081B0338
- .4byte _081B0354
- .4byte _081B0368
- .4byte _081B038C
- .4byte _081B03A0
- .4byte _081B03A6
- .4byte _081B03B8
- .4byte _081B03BE
- .4byte _081B03E0
- .4byte _081B0400
- .4byte _081B0414
- .4byte _081B0428
- .4byte _081B0430
- .4byte _081B044C
- .4byte _081B0474
-_081B0290:
- bl SetVBlankHBlankCallbacksToNull
- bl ResetVramOamAndBgCntRegs
- bl clear_scheduled_bg_copies_to_vram
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081B048C
- .pool
-_081B02AC:
- bl ScanlineEffect_Stop
- b _081B0484
-_081B02B2:
- bl ResetPaletteFade
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081B048C
- .pool
-_081B02D4:
- bl ResetSpriteData
- b _081B0484
-_081B02DA:
- bl FreeAllSpritePalettes
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081B048C
- .pool
-_081B02EC:
- bl sub_81221AC
- lsls r0, 24
- cmp r0, 0
- beq _081B02F8
- b _081B0484
-_081B02F8:
- bl ResetTasks
- b _081B0484
-_081B02FE:
- bl sub_81B209C
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081B048C
- .pool
-_081B0310:
- bl sub_81B0550
- lsls r0, 24
- cmp r0, 0
- bne _081B0322
- bl sub_81B04BC
- movs r0, 0x1
- b _081B04B2
-_081B0322:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- movs r1, 0x86
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _081B0484
- .pool
-_081B0338:
- bl sub_81B05C8
- lsls r0, 24
- cmp r0, 0
- bne _081B0344
- b _081B04B0
-_081B0344:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081B048C
- .pool
-_081B0354:
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x8]
- lsls r0, 26
- lsrs r0, 30
- bl sub_81B239C
- b _081B0484
- .pool
-_081B0368:
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x8]
- lsls r0, 26
- lsrs r0, 30
- bl sub_81B0740
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- movs r1, 0x86
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _081B0484
- .pool
-_081B038C:
- bl sub_81B5D30
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081B048C
- .pool
-_081B03A0:
- bl sub_81B6040
- b _081B0484
-_081B03A6:
- bl sub_81B6160
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081B048C
- .pool
-_081B03B8:
- bl LoadMonIconPalettes
- b _081B0484
-_081B03BE:
- bl party_menu_add_per_mon_objects
- lsls r0, 24
- cmp r0, 0
- bne _081B03CA
- b _081B04B0
-_081B03CA:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- movs r1, 0x86
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _081B0484
- .pool
-_081B03E0:
- bl sub_81B0DA0
- lsls r0, 24
- cmp r0, 0
- beq _081B04B0
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- movs r1, 0x86
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _081B0484
- .pool
-_081B0400:
- bl sub_81B0F28
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081B048C
- .pool
-_081B0414:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 31
- lsrs r0, 31
- bl sub_81B2428
- b _081B0484
- .pool
-_081B0428:
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
- b _081B048C
-_081B0430:
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- ldr r0, [r0]
- movs r1, 0
- bl CreateTask
- ldr r0, [r4]
- ldrh r0, [r0, 0xA]
- lsrs r0, 2
- bl display_pokemon_menu_message
- b _081B0484
- .pool
-_081B044C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081B048C
- .pool
-_081B0474:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_081B0484:
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
-_081B048C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081B04B0
- .pool
-_081B0498:
- ldr r0, =sub_81B01CC
- bl SetVBlankCallback
- ldr r0, =sub_81B01B0
- bl SetMainCallback2
- movs r0, 0x1
- b _081B04B2
- .pool
-_081B04B0:
- movs r0, 0
-_081B04B2:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B020C
-
- thumb_func_start sub_81B04BC
-sub_81B04BC: @ 81B04BC
- 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 r0, =sub_81B04F8
- movs r1, 0
- bl CreateTask
- ldr r0, =sub_81B01CC
- bl SetVBlankCallback
- ldr r0, =sub_81B01B0
- bl SetMainCallback2
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B04BC
-
- thumb_func_start sub_81B04F8
-sub_81B04F8: @ 81B04F8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B051C
- ldr r0, =gUnknown_0203CEC8
- ldr r0, [r0]
- bl SetMainCallback2
- bl sub_81B06F4
- adds r0, r4, 0
- bl DestroyTask
-_081B051C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B04F8
-
- thumb_func_start reset_brm
-reset_brm: @ 81B052C
- ldr r0, =gUnknown_0203CEC4
- movs r1, 0
- str r1, [r0]
- ldr r0, =gUnknown_0203CEE4
- str r1, [r0]
- ldr r0, =gUnknown_0203CEDC
- str r1, [r0]
- ldr r0, =gUnknown_0203CEE0
- str r1, [r0]
- bx lr
- .pool
- thumb_func_end reset_brm
-
- thumb_func_start sub_81B0550
-sub_81B0550: @ 81B0550
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203CEE4
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl Alloc
- str r0, [r5]
- cmp r0, 0
- beq _081B05C0
- movs r1, 0
- adds r2, r4, 0
- bl memset
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_086156B8
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r1, [r5]
- movs r0, 0x1
- bl SetBgTilemapBuffer
- bl ResetAllBgsCoordinates
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x1
- b _081B05C2
- .pool
-_081B05C0:
- movs r0, 0
-_081B05C2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81B0550
-
- thumb_func_start sub_81B05C8
-sub_81B05C8: @ 81B05C8
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- movs r1, 0x86
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x7
- bhi _081B06B0
- lsls r0, 2
- ldr r1, =_081B05F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B05F0:
- .4byte _081B0610
- .4byte _081B0638
- .4byte _081B0658
- .4byte _081B0684
- .4byte _081B0688
- .4byte _081B068C
- .4byte _081B0690
- .4byte _081B0694
-_081B0610:
- ldr r4, =gUnknown_0203CEE0
- ldr r0, =gPartyMenuMisc_Gfx
- mov r1, sp
- bl malloc_and_decompress
- adds r1, r0, 0
- str r1, [r4]
- ldr r2, [sp]
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x1
- movs r3, 0
- bl LoadBgTiles
- b _081B069A
- .pool
-_081B0638:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081B06B4
- ldr r0, =gPartyMenuMisc_Tilemap
- ldr r1, =gUnknown_0203CEE4
- ldr r1, [r1]
- bl LZDecompressWram
- b _081B069A
- .pool
-_081B0658:
- ldr r0, =gPartyMenuMisc_Pal
- movs r2, 0xB0
- lsls r2, 1
- movs r1, 0
- bl LoadCompressedPalette
- ldr r0, =gPlttBufferUnfaded
- ldr r4, =gUnknown_0203CEC4
- ldr r1, [r4]
- adds r1, 0x18
- movs r2, 0xB0
- bl CpuSet
- ldr r1, [r4]
- b _081B069E
- .pool
-_081B0684:
- movs r0, 0x4
- b _081B0696
-_081B0688:
- movs r0, 0x5
- b _081B0696
-_081B068C:
- movs r0, 0x6
- b _081B0696
-_081B0690:
- movs r0, 0x7
- b _081B0696
-_081B0694:
- movs r0, 0x8
-_081B0696:
- bl sub_81B06C0
-_081B069A:
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
-_081B069E:
- movs r0, 0x86
- lsls r0, 2
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _081B06B4
- .pool
-_081B06B0:
- movs r0, 0x1
- b _081B06B6
-_081B06B4:
- movs r0, 0
-_081B06B6:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B05C8
-
- thumb_func_start sub_81B06C0
-sub_81B06C0: @ 81B06C0
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 28
- ldr r5, =gPlttBufferUnfaded + 0x60
- lsrs r4, 23
- adds r1, r5, 0
- subs r1, 0x60
- adds r1, r4, r1
- adds r0, r5, 0
- movs r2, 0x10
- bl CpuSet
- ldr r0, =gPlttBufferFaded
- adds r4, r0
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x10
- bl CpuSet
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B06C0
-
- thumb_func_start sub_81B06F4
-sub_81B06F4: @ 81B06F4
- push {lr}
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- cmp r0, 0
- beq _081B0702
- bl Free
-_081B0702:
- ldr r0, =gUnknown_0203CEE4
- ldr r0, [r0]
- cmp r0, 0
- beq _081B070E
- bl Free
-_081B070E:
- ldr r0, =gUnknown_0203CEE0
- ldr r0, [r0]
- cmp r0, 0
- beq _081B071A
- bl Free
-_081B071A:
- ldr r0, =gUnknown_0203CEDC
- ldr r0, [r0]
- cmp r0, 0
- beq _081B0726
- bl Free
-_081B0726:
- bl FreeAllWindowBuffers
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B06F4
-
- thumb_func_start sub_81B0740
-sub_81B0740: @ 81B0740
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, =gUnknown_0203CEDC
- movs r0, 0x60
- bl Alloc
- str r0, [r4]
- movs r5, 0
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 4
- mov r8, r0
- movs r6, 0xFF
- mov r9, r4
-_081B0764:
- ldr r2, [r4]
- lsls r3, r5, 4
- adds r2, r3, r2
- ldr r0, =gUnknown_086156E4
- mov r12, r0
- str r0, [r2]
- lsls r0, r5, 3
- ldr r1, =gUnknown_08615704
- adds r0, r1
- add r0, r8
- str r0, [r2, 0x4]
- strb r5, [r2, 0x8]
- ldr r1, [r4]
- adds r1, r3, r1
- ldrb r0, [r1, 0x9]
- orrs r0, r6
- strb r0, [r1, 0x9]
- ldr r1, [r4]
- adds r1, r3, r1
- ldrb r0, [r1, 0xA]
- orrs r0, r6
- strb r0, [r1, 0xA]
- ldr r1, [r4]
- adds r1, r3, r1
- ldrb r0, [r1, 0xB]
- orrs r0, r6
- strb r0, [r1, 0xB]
- ldr r0, [r4]
- adds r3, r0
- ldrb r0, [r3, 0xC]
- orrs r0, r6
- strb r0, [r3, 0xC]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _081B0764
- mov r1, r9
- ldr r0, [r1]
- mov r1, r12
- subs r1, 0x20
- str r1, [r0]
- cmp r7, 0x3
- bne _081B07CC
- str r1, [r0, 0x30]
- b _081B07D2
- .pool
-_081B07CC:
- cmp r7, 0
- beq _081B07D2
- str r1, [r0, 0x10]
-_081B07D2:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B0740
-
- thumb_func_start sub_81B07E0
-sub_81B07E0: @ 81B07E0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x5
- bne _081B085C
- cmp r5, 0x2
- bls _081B085C
- adds r0, r5, 0
- bl sub_81B0CEC
- ldr r0, =gUnknown_02022FF8
- subs r1, r5, 0x3
- lsls r1, 5
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _081B0828
- ldr r0, =gUnknown_0203CEDC
- lsls r4, r5, 4
- ldr r0, [r0]
- adds r0, r4
- movs r1, 0x40
- bl sub_81B2748
- b _081B0836
- .pool
-_081B0828:
- ldr r0, =gUnknown_0203CEDC
- lsls r4, r5, 4
- ldr r0, [r0]
- adds r0, r4
- movs r1, 0x8
- bl sub_81B2748
-_081B0836:
- adds r5, r4, 0
- ldr r4, =gUnknown_0203CEDC
- ldr r0, [r4]
- adds r0, r5, r0
- ldrb r0, [r0, 0x8]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r4]
- adds r0, r5, r0
- ldrb r0, [r0, 0x8]
- bl PutWindowTilemap
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- b _081B093E
- .pool
-_081B085C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- bne _081B089C
- ldr r4, =gUnknown_0203CEDC
- ldr r0, [r4]
- lsls r5, 4
- adds r0, r5, r0
- ldrb r0, [r0, 0x8]
- bl sub_81B2720
- ldr r0, [r4]
- adds r0, r5
- movs r1, 0x40
- bl sub_81B2748
- ldr r0, [r4]
- adds r0, r5, r0
- ldrb r0, [r0, 0x8]
- movs r1, 0x2
- bl CopyWindowToVram
- b _081B092C
- .pool
-_081B089C:
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x8]
- movs r1, 0xF
- ands r1, r0
- cmp r1, 0x7
- bne _081B08B4
- adds r0, r5, 0
- bl sub_81B0B60
- b _081B08F6
- .pool
-_081B08B4:
- cmp r1, 0x2
- bne _081B08C0
- adds r0, r5, 0
- bl sub_81B0B08
- b _081B08F6
-_081B08C0:
- cmp r1, 0x4
- bne _081B08CC
- adds r0, r5, 0
- bl sub_81B0A9C
- b _081B08F6
-_081B08CC:
- cmp r1, 0xB
- bne _081B08D8
- adds r0, r5, 0
- bl sub_81B0B98
- b _081B08F6
-_081B08D8:
- cmp r1, 0xC
- bne _081B08E4
- adds r0, r5, 0
- bl sub_81B0BC4
- b _081B08F6
-_081B08E4:
- adds r0, r5, 0
- bl sub_81B0BFC
- lsls r0, 24
- cmp r0, 0
- bne _081B08F6
- adds r0, r5, 0
- bl sub_81B0948
-_081B08F6:
- ldr r2, =gUnknown_0203CEC8
- ldrb r1, [r2, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x5
- bne _081B0910
- adds r0, r5, 0
- movs r1, 0
- bl sub_81B0FCC
- b _081B092A
- .pool
-_081B0910:
- movs r0, 0x9
- ldrsb r0, [r2, r0]
- cmp r0, r5
- bne _081B0922
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_81B0FCC
- b _081B092A
-_081B0922:
- adds r0, r5, 0
- movs r1, 0
- bl sub_81B0FCC
-_081B092A:
- lsls r5, 4
-_081B092C:
- ldr r0, =gUnknown_0203CEDC
- ldr r0, [r0]
- adds r0, r5, r0
- ldrb r0, [r0, 0x8]
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
-_081B093E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B07E0
-
- thumb_func_start sub_81B0948
-sub_81B0948: @ 81B0948
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x64
- adds r1, r4, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r7, r1, r0
- adds r0, r7, 0
- movs r1, 0x2D
- bl GetMonData
- adds r2, r0, 0
- cmp r2, 0
- beq _081B09A0
- ldr r6, =gUnknown_0203CEDC
- ldr r0, [r6]
- lsls r5, r4, 4
- adds r0, r5, r0
- ldr r2, [r0]
- ldrb r0, [r0, 0x8]
- movs r1, 0
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- ldr r4, [r2]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl _call_via_r4
- ldr r1, [r6]
- adds r1, r5
- adds r0, r7, 0
- movs r2, 0
- bl sub_81B2A70
- b _081B0A02
- .pool
-_081B09A0:
- ldr r5, =gUnknown_0203CEDC
- ldr r0, [r5]
- lsls r4, 4
- adds r0, r4, r0
- ldr r1, [r0]
- ldrb r0, [r0, 0x8]
- str r2, [sp]
- str r2, [sp, 0x4]
- ldr r6, [r1]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl _call_via_r6
- ldr r1, [r5]
- adds r1, r4
- adds r0, r7, 0
- movs r2, 0
- bl sub_81B2A70
- ldr r1, [r5]
- adds r1, r4
- adds r0, r7, 0
- movs r2, 0
- bl sub_81B2AC8
- ldr r1, [r5]
- adds r1, r4
- adds r0, r7, 0
- movs r2, 0
- bl sub_81B2B8C
- ldr r1, [r5]
- adds r1, r4
- adds r0, r7, 0
- movs r2, 0
- bl sub_81B2CD4
- ldr r1, [r5]
- adds r1, r4
- adds r0, r7, 0
- movs r2, 0
- bl sub_81B2D74
- ldr r1, [r5]
- adds r1, r4
- adds r0, r7, 0
- bl sub_81B2E28
-_081B0A02:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B0948
-
- thumb_func_start sub_81B0A10
-sub_81B0A10: @ 81B0A10
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- movs r1, 0x64
- adds r2, r0, 0
- muls r2, r1
- ldr r1, =gPlayerParty
- adds r6, r2, r1
- ldr r7, =gUnknown_0203CEDC
- ldr r1, [r7]
- lsls r5, r0, 4
- adds r1, r5, r1
- ldr r2, [r1]
- ldrb r0, [r1, 0x8]
- movs r1, 0
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- ldr r4, [r2]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl _call_via_r4
- ldr r1, [r7]
- adds r1, r5
- adds r0, r6, 0
- movs r2, 0
- bl sub_81B2A70
- adds r0, r6, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _081B0A7C
- ldr r1, [r7]
- adds r1, r5
- adds r0, r6, 0
- movs r2, 0
- bl sub_81B2AC8
- ldr r1, [r7]
- adds r1, r5
- adds r0, r6, 0
- movs r2, 0
- bl sub_81B2B8C
-_081B0A7C:
- ldr r1, [r7]
- adds r1, r5
- mov r0, r8
- movs r2, 0
- bl sub_81B2FA8
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B0A10
-
- thumb_func_start sub_81B0A9C
-sub_81B0A9C: @ 81B0A9C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x64
- muls r0, r5
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r6, =gSelectedOrderFromParty
- bl sub_81B85AC
- lsls r0, 24
- cmp r0, 0
- bne _081B0AD6
- adds r0, r5, 0
- movs r1, 0x7
- bl sub_81B0A10
- b _081B0B02
- .pool
-_081B0AC8:
- adds r1, r4, 0x2
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl sub_81B0A10
- b _081B0B02
-_081B0AD6:
- movs r4, 0
- b _081B0AEE
-_081B0ADA:
- adds r1, r6, r4
- ldrb r0, [r1]
- cmp r0, 0
- beq _081B0AE8
- subs r0, 0x1
- cmp r0, r5
- beq _081B0AC8
-_081B0AE8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_081B0AEE:
- bl sub_81B8830
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _081B0ADA
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_81B0A10
-_081B0B02:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81B0A9C
-
- thumb_func_start sub_81B0B08
-sub_81B0B08: @ 81B0B08
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- bl sub_80DAE0C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _081B0B5A
- lsls r0, 2
- ldr r1, =_081B0B34
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B0B34:
- .4byte _081B0B48
- .4byte _081B0B52
- .4byte _081B0B52
- .4byte _081B0B48
- .4byte _081B0B48
-_081B0B48:
- adds r0, r4, 0
- movs r1, 0x7
- bl sub_81B0A10
- b _081B0B5A
-_081B0B52:
- adds r0, r4, 0
- movs r1, 0x6
- bl sub_81B0A10
-_081B0B5A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B0B08
-
- thumb_func_start sub_81B0B60
-sub_81B0B60: @ 81B0B60
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- bl GetNumberOfRelearnableMoves
- lsls r0, 24
- cmp r0, 0
- bne _081B0B88
- adds r0, r4, 0
- movs r1, 0x9
- bl sub_81B0A10
- b _081B0B90
- .pool
-_081B0B88:
- adds r0, r4, 0
- movs r1, 0x8
- bl sub_81B0A10
-_081B0B90:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B0B60
-
- thumb_func_start sub_81B0B98
-sub_81B0B98: @ 81B0B98
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_81B218C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B0BB6
- adds r0, r4, 0
- movs r1, 0x6
- bl sub_81B0A10
- b _081B0BBE
-_081B0BB6:
- adds r0, r4, 0
- movs r1, 0x7
- bl sub_81B0A10
-_081B0BBE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B0B98
-
- thumb_func_start sub_81B0BC4
-sub_81B0BC4: @ 81B0BC4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- cmp r0, 0
- beq _081B0BEC
- adds r0, r4, 0
- movs r1, 0xB
- bl sub_81B0A10
- b _081B0BF4
- .pool
-_081B0BEC:
- adds r0, r4, 0
- movs r1, 0xC
- bl sub_81B0A10
-_081B0BF4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B0BC4
-
- thumb_func_start sub_81B0BFC
-sub_81B0BFC: @ 81B0BFC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r6, r1, r0
- ldr r0, =gSpecialVar_ItemId
- ldrh r4, [r0]
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0xB]
- cmp r0, 0xC
- bne _081B0C40
- ldr r1, =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gSpecialVar_0x8005
- ldrb r2, [r0]
- adds r0, r5, 0
- movs r1, 0
- bl sub_81B0C94
- b _081B0C8A
- .pool
-_081B0C40:
- cmp r0, 0x3
- bne _081B0C56
- adds r0, r4, 0
- bl CheckIfItemIsTMHMOrEvolutionStone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B0C5A
- cmp r0, 0x2
- beq _081B0C66
-_081B0C56:
- movs r0, 0
- b _081B0C8C
-_081B0C5A:
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_81B0C94
- b _081B0C8A
-_081B0C66:
- adds r0, r6, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _081B0C82
- adds r0, r6, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- cmp r0, 0
- bne _081B0C56
-_081B0C82:
- adds r0, r5, 0
- movs r1, 0
- bl sub_81B0A10
-_081B0C8A:
- movs r0, 0x1
-_081B0C8C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81B0BFC
-
- thumb_func_start sub_81B0C94
-sub_81B0C94: @ 81B0C94
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x64
- muls r0, r4
- ldr r3, =gPlayerParty
- adds r0, r3
- bl sub_81B22D8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _081B0CD2
- cmp r0, 0x2
- bgt _081B0CC4
- cmp r0, 0x1
- beq _081B0CC8
- b _081B0CDC
- .pool
-_081B0CC4:
- cmp r0, 0x3
- bne _081B0CDC
-_081B0CC8:
- adds r0, r4, 0
- movs r1, 0x9
- bl sub_81B0A10
- b _081B0CE4
-_081B0CD2:
- adds r0, r4, 0
- movs r1, 0xA
- bl sub_81B0A10
- b _081B0CE4
-_081B0CDC:
- adds r0, r4, 0
- movs r1, 0x8
- bl sub_81B0A10
-_081B0CE4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B0C94
-
- thumb_func_start sub_81B0CEC
-sub_81B0CEC: @ 81B0CEC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203CEDC
- lsls r2, r0, 4
- ldr r1, [r1]
- adds r6, r1, r2
- subs r0, 0x3
- lsls r0, 24
- ldr r5, =gUnknown_02022FF8
- lsrs r0, 19
- mov r8, r0
- adds r7, r0, r5
- ldrh r0, [r7]
- cmp r0, 0
- bne _081B0D24
- ldrb r0, [r6, 0x8]
- bl sub_81B2720
- b _081B0D8E
- .pool
-_081B0D24:
- ldr r2, [r6]
- ldrb r0, [r6, 0x8]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- ldr r4, [r2]
- movs r2, 0
- movs r3, 0
- bl _call_via_r4
- ldr r4, =gStringVar1
- adds r5, 0x4
- add r5, r8
- adds r0, r4, 0
- adds r1, r5, 0
- bl StringCopy
- adds r0, r4, 0
- bl StringGetEnd10
- adds r0, r4, 0
- bl sub_81DB52C
- ldrb r0, [r6, 0x8]
- ldr r3, [r6]
- adds r3, 0x4
- adds r1, r4, 0
- movs r2, 0
- bl sub_81B2A3C
- ldrb r0, [r7, 0xF]
- adds r1, r6, 0
- bl sub_81B2B40
- ldrb r0, [r7, 0x1C]
- ldrh r1, [r7]
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_81B2BF4
- ldrh r0, [r7, 0x10]
- adds r1, r6, 0
- bl sub_81B2D3C
- ldrh r0, [r7, 0x12]
- adds r1, r6, 0
- bl sub_81B2DDC
- ldrh r0, [r7, 0x10]
- ldrh r1, [r7, 0x12]
- adds r2, r6, 0
- bl sub_81B2E64
-_081B0D8E:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B0CEC
-
- thumb_func_start sub_81B0DA0
-sub_81B0DA0: @ 81B0DA0
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203CEC4
- ldr r0, [r5]
- movs r4, 0x86
- lsls r4, 2
- adds r0, r4
- ldrb r0, [r0]
- bl sub_81B07E0
- ldr r1, [r5]
- adds r1, r4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- beq _081B0DCC
- movs r0, 0
- b _081B0DCE
- .pool
-_081B0DCC:
- movs r0, 0x1
-_081B0DCE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81B0DA0
-
- thumb_func_start sub_81B0DD4
-sub_81B0DD4: @ 81B0DD4
- lsls r0, 16
- ldr r1, =gUnknown_0203CEE0
- lsrs r0, 11
- ldr r1, [r1]
- adds r1, r0
- adds r0, r1, 0
- bx lr
- .pool
- thumb_func_end sub_81B0DD4
-
- thumb_func_start party_menu_add_per_mon_objects_internal
-party_menu_add_per_mon_objects_internal: @ 81B0DE8
- 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, =gUnknown_0203CEC8
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x5
- bne _081B0E98
- cmp r7, 0x2
- bls _081B0E98
- subs r0, r7, 0x3
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, =gUnknown_02022FF8
- mov r9, r0
- mov r2, r10
- lsls r2, 5
- mov r8, r2
- mov r6, r8
- add r6, r9
- ldrh r0, [r6]
- cmp r0, 0
- beq _081B0EDC
- mov r1, r9
- adds r1, 0x18
- add r1, r8
- ldr r1, [r1]
- ldr r4, =gUnknown_0203CEDC
- lsls r5, r7, 4
- ldr r2, [r4]
- adds r2, r5
- movs r3, 0
- str r3, [sp]
- bl party_menu_link_mon_icon_anim
- ldrh r0, [r6]
- ldrh r1, [r6, 0x2]
- ldr r2, [r4]
- adds r2, r5
- bl party_menu_link_mon_held_item_object
- ldrh r0, [r6]
- ldr r1, [r4]
- adds r1, r5
- bl party_menu_link_mon_pokeball_object
- ldrh r0, [r6, 0x10]
- cmp r0, 0
- bne _081B0E68
- movs r3, 0x7
- b _081B0E78
- .pool
-_081B0E68:
- mov r0, r9
- adds r0, 0x14
- add r0, r8
- ldr r0, [r0]
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r3, r0, 24
-_081B0E78:
- ldr r1, =gUnknown_02022FF8
- mov r2, r10
- lsls r0, r2, 5
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, =gUnknown_0203CEDC
- ldr r2, [r1]
- adds r2, r5
- adds r1, r3, 0
- bl party_menu_link_mon_status_condition_object
- b _081B0EDC
- .pool
-_081B0E98:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B0EDC
- ldr r4, =gUnknown_0203CEDC
- lsls r5, r7, 4
- ldr r1, [r4]
- adds r1, r5
- adds r0, r6, 0
- adds r2, r7, 0
- bl party_menu_icon_anim
- ldr r1, [r4]
- adds r1, r5
- adds r0, r6, 0
- bl party_menu_held_item_object
- ldr r1, [r4]
- adds r1, r5
- adds r0, r6, 0
- bl party_menu_pokeball_object
- ldr r1, [r4]
- adds r1, r5
- adds r0, r6, 0
- bl party_menu_status_condition_object
-_081B0EDC:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_add_per_mon_objects_internal
-
- thumb_func_start party_menu_add_per_mon_objects
-party_menu_add_per_mon_objects: @ 81B0EF4
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203CEC4
- ldr r0, [r5]
- movs r4, 0x86
- lsls r4, 2
- adds r0, r4
- ldrb r0, [r0]
- bl party_menu_add_per_mon_objects_internal
- ldr r1, [r5]
- adds r1, r4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- beq _081B0F20
- movs r0, 0
- b _081B0F22
- .pool
-_081B0F20:
- movs r0, 0x1
-_081B0F22:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end party_menu_add_per_mon_objects
-
- thumb_func_start sub_81B0F28
-sub_81B0F28: @ 81B0F28
- push {r4,lr}
- sub sp, 0xC
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x5
- bne _081B0F54
- movs r0, 0x7
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r1, 0xE
- movs r2, 0x17
- movs r3, 0x11
- bl FillBgTilemapBufferRect
- b _081B0FBC
- .pool
-_081B0F54:
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- lsls r0, 31
- cmp r0, 0
- beq _081B0F94
- movs r0, 0xBF
- movs r1, 0x88
- bl sub_81B5F74
- ldr r3, [r4]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x7F
- ands r0, r1
- lsls r0, 4
- ldrh r2, [r3, 0x8]
- ldr r1, =0xfffff80f
- ands r1, r2
- orrs r1, r0
- strh r1, [r3, 0x8]
- bl sub_81B120C
- movs r0, 0xBF
- movs r1, 0x98
- bl sub_81B5F74
- b _081B0F9C
- .pool
-_081B0F94:
- movs r0, 0xC6
- movs r1, 0x94
- bl sub_81B5F34
-_081B0F9C:
- ldr r3, [r4]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x7F
- ands r0, r1
- lsls r0, 11
- ldr r1, [r3, 0x8]
- ldr r2, =0xfffc07ff
- ands r1, r2
- orrs r1, r0
- str r1, [r3, 0x8]
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x9]
- movs r1, 0x1
- bl sub_81B0FCC
-_081B0FBC:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B0F28
-
- thumb_func_start sub_81B0FCC
-sub_81B0FCC: @ 81B0FCC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- cmp r7, 0x6
- beq _081B1038
- cmp r7, 0x7
- beq _081B1074
- movs r0, 0x64
- muls r0, r7
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B10E8
- ldr r6, =gUnknown_0203CEDC
- lsls r5, r7, 4
- ldr r4, [r6]
- adds r4, r5
- adds r0, r7, 0
- mov r1, r8
- bl sub_81B10F8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_81B2748
- ldr r0, [r6]
- adds r0, r5, r0
- ldrb r0, [r0, 0x9]
- mov r1, r8
- bl sub_81B5B6C
- ldr r0, [r6]
- adds r5, r0
- ldrb r0, [r5, 0xB]
- mov r1, r8
- bl sub_81B5F98
- b _081B10E8
- .pool
-_081B1038:
- mov r0, r8
- cmp r0, 0
- bne _081B1052
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r1, 0x17
- movs r2, 0x10
- movs r3, 0x7
- bl sub_8199C30
- b _081B1064
-_081B1052:
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0x17
- movs r2, 0x10
- movs r3, 0x7
- bl sub_8199C30
-_081B1064:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrh r0, [r0, 0x8]
- lsls r0, 21
- b _081B10DA
- .pool
-_081B1074:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 31
- cmp r0, 0
- bne _081B10A6
- mov r0, r8
- cmp r0, 0
- bne _081B1098
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r1, 0x17
- movs r2, 0x11
- b _081B10B8
- .pool
-_081B1098:
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0x17
- movs r2, 0x11
- b _081B10B8
-_081B10A6:
- mov r0, r8
- cmp r0, 0
- bne _081B10C0
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r1, 0x17
- movs r2, 0x12
-_081B10B8:
- movs r3, 0x7
- bl sub_8199C30
- b _081B10D2
-_081B10C0:
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0x17
- movs r2, 0x12
- movs r3, 0x7
- bl sub_8199C30
-_081B10D2:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- lsls r0, 14
-_081B10DA:
- lsrs r0, 25
- mov r1, r8
- bl sub_81B5F98
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
-_081B10E8:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B0FCC
-
- thumb_func_start sub_81B10F8
-sub_81B10F8: @ 81B10F8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r4, 0
- cmp r1, 0x1
- bne _081B110A
- movs r4, 0x1
-_081B110A:
- movs r0, 0x64
- muls r0, r5
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _081B1120
- movs r0, 0x2
- orrs r4, r0
-_081B1120:
- adds r0, r5, 0
- bl sub_81B118C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B1136
- movs r0, 0x8
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_081B1136:
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0xB]
- adds r2, r0, 0
- cmp r1, 0x9
- bne _081B1148
- movs r0, 0x10
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_081B1148:
- cmp r1, 0x8
- bne _081B1164
- movs r0, 0x9
- ldrsb r0, [r2, r0]
- cmp r5, r0
- beq _081B115C
- movs r0, 0xA
- ldrsb r0, [r2, r0]
- cmp r5, r0
- bne _081B1164
-_081B115C:
- movs r0, 0x4
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_081B1164:
- ldrb r0, [r2, 0xB]
- cmp r0, 0xA
- bne _081B117A
- movs r0, 0x9
- ldrsb r0, [r2, r0]
- cmp r5, r0
- bne _081B117A
- movs r0, 0x20
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_081B117A:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B10F8
-
- thumb_func_start sub_81B118C
-sub_81B118C: @ 81B118C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0x8]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0x20
- bne _081B11B4
- cmp r2, 0x1
- beq _081B11AA
- cmp r2, 0x4
- beq _081B11AA
- cmp r2, 0x5
- bne _081B11B4
-_081B11AA:
- movs r0, 0x1
- b _081B11F8
- .pool
-_081B11B4:
- cmp r2, 0x2
- bhi _081B11F6
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _081B11F6
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B11F6
- adds r0, r2, 0
- bl sub_81B8F38
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- movs r2, 0xA8
- lsls r2, 2
- adds r1, r2
- ldrb r1, [r1]
- lsls r0, 24
- lsrs r0, 24
- asrs r1, r0
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- bne _081B11F8
-_081B11F6:
- movs r0, 0
-_081B11F8:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B118C
-
- thumb_func_start sub_81B120C
-sub_81B120C: @ 81B120C
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r1, =gUnknown_086157C4
- movs r6, 0x7
- str r6, [sp]
- movs r5, 0x2
- str r5, [sp, 0x4]
- movs r4, 0x11
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r2, 0x17
- movs r3, 0x10
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r1, =gUnknown_086157E0
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r2, 0x17
- movs r3, 0x12
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B120C
-
- thumb_func_start sub_81B1250
-sub_81B1250: @ 81B1250
- push {lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x49
- ands r0, r1
- cmp r0, 0x49
- bne _081B1280
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B1280
- movs r0, 0x1
- b _081B1282
- .pool
-_081B1280:
- movs r0, 0
-_081B1282:
- pop {r1}
- bx r1
- thumb_func_end sub_81B1250
-
- thumb_func_start sub_81B1288
-sub_81B1288: @ 81B1288
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- movs r0, 0x64
- bl Alloc
- adds r5, r0, 0
- adds r1, r4, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r5, 0
- bl Free
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81B1288
-
- thumb_func_start sub_81B12C0
-sub_81B12C0: @ 81B12C0
- 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, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =c3_0811FAB4
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B12C0
-
- thumb_func_start c3_0811FAB4
-c3_0811FAB4: @ 81B12F8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B134C
- ldr r4, =gUnknown_0203CEC8
- ldrb r1, [r4, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _081B131A
- bl sub_81B9080
-_081B131A:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- cmp r0, 0
- beq _081B1338
- bl SetMainCallback2
- b _081B133E
- .pool
-_081B1338:
- ldr r0, [r4]
- bl SetMainCallback2
-_081B133E:
- bl ResetSpriteData
- bl sub_81B06F4
- adds r0, r5, 0
- bl DestroyTask
-_081B134C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end c3_0811FAB4
-
- thumb_func_start GetCursorSelectionMonId
-GetCursorSelectionMonId: @ 81B1354
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x9]
- bx lr
- .pool
- thumb_func_end GetCursorSelectionMonId
-
- thumb_func_start sub_81B1360
-sub_81B1360: @ 81B1360
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x8]
- lsls r0, 28
- lsrs r0, 28
- bx lr
- .pool
- thumb_func_end sub_81B1360
-
- thumb_func_start sub_81B1370
-sub_81B1370: @ 81B1370
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B13E0
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B13E0
- bl sub_81B13EC
- adds r4, r0, 0
- bl sub_81B1760
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- beq _081B13C0
- cmp r0, 0x2
- bgt _081B13B0
- cmp r0, 0x1
- beq _081B13B6
- b _081B13E0
- .pool
-_081B13B0:
- cmp r0, 0x8
- beq _081B13CA
- b _081B13E0
-_081B13B6:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81B140C
- b _081B13E0
-_081B13C0:
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_81B15D0
- b _081B13E0
-_081B13CA:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 31
- cmp r0, 0
- beq _081B13E0
- movs r0, 0x5
- bl PlaySE
- bl sub_81B4F88
-_081B13E0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1370
-
- thumb_func_start sub_81B13EC
-sub_81B13EC: @ 81B13EC
- push {lr}
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0xB]
- cmp r1, 0x8
- beq _081B13FA
- cmp r1, 0xA
- bne _081B1404
-_081B13FA:
- adds r0, 0xA
- b _081B1406
- .pool
-_081B1404:
- adds r0, 0x9
-_081B1406:
- pop {r1}
- bx r1
- thumb_func_end sub_81B13EC
-
- thumb_func_start sub_81B140C
-sub_81B140C: @ 81B140C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x6
- bne _081B142C
- ldr r0, =gUnknown_0203CEC8
- ldr r1, [r0, 0x4]
- adds r0, r5, 0
- bl _call_via_r1
- b _081B159E
- .pool
-_081B142C:
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0xB]
- subs r0, 0x3
- cmp r0, 0xA
- bls _081B1438
- b _081B1592
-_081B1438:
- lsls r0, 2
- ldr r1, =_081B144C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B144C:
- .4byte _081B149C
- .4byte _081B1592
- .4byte _081B1538
- .4byte _081B1538
- .4byte _081B1510
- .4byte _081B1560
- .4byte _081B1592
- .4byte _081B1478
- .4byte _081B156E
- .4byte _081B14E8
- .4byte _081B157C
-_081B1478:
- adds r0, r4, 0
- bl sub_81B15A4
- lsls r0, 24
- cmp r0, 0
- bne _081B1486
- b _081B159E
-_081B1486:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- adds r0, 0xD
- bl sub_81B302C
- adds r0, r5, 0
- bl sub_81615A8
- b _081B159E
- .pool
-_081B149C:
- adds r0, r4, 0
- bl sub_81B15A4
- lsls r0, 24
- cmp r0, 0
- bne _081B14AA
- b _081B159E
-_081B14AA:
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- ldr r2, =gUnknown_0203CEC4
- cmp r0, 0x1
- bne _081B14BE
- ldr r1, [r2]
- ldr r0, =sub_81B9140
- str r0, [r1, 0x4]
-_081B14BE:
- ldr r0, [r2]
- adds r0, 0xD
- bl sub_81B302C
- ldr r0, =gUnknown_03006328
- ldr r1, =sub_81B6794
- ldr r2, [r0]
- adds r0, r5, 0
- bl _call_via_r2
- b _081B159E
- .pool
-_081B14E8:
- adds r0, r4, 0
- bl sub_81B15A4
- lsls r0, 24
- cmp r0, 0
- beq _081B159E
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- adds r0, 0xD
- bl sub_81B302C
- adds r0, r5, 0
- bl sub_81B7E4C
- b _081B159E
- .pool
-_081B1510:
- adds r0, r4, 0
- bl sub_81B15A4
- lsls r0, 24
- cmp r0, 0
- beq _081B159E
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- adds r0, 0xD
- bl sub_81B302C
- adds r0, r5, 0
- bl sub_81B8474
- b _081B159E
- .pool
-_081B1538:
- adds r0, r4, 0
- bl sub_81B15A4
- lsls r0, 24
- cmp r0, 0
- beq _081B159E
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- adds r0, 0xD
- bl sub_81B302C
- adds r0, r5, 0
- bl sub_81B7FAC
- b _081B159E
- .pool
-_081B1560:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81B3938
- b _081B159E
-_081B156E:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81B12C0
- b _081B159E
-_081B157C:
- adds r0, r4, 0
- bl sub_81B15A4
- lsls r0, 24
- cmp r0, 0
- beq _081B159E
- ldrb r1, [r4]
- adds r0, r5, 0
- bl sub_81B21AC
- b _081B159E
-_081B1592:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81B36FC
-_081B159E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81B140C
-
- thumb_func_start sub_81B15A4
-sub_81B15A4: @ 81B15A4
- push {lr}
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _081B15C4
- movs r0, 0x1
- b _081B15CC
- .pool
-_081B15C4:
- movs r0, 0x20
- bl PlaySE
- movs r0, 0
-_081B15CC:
- pop {r1}
- bx r1
- thumb_func_end sub_81B15A4
-
- thumb_func_start sub_81B15D0
-sub_81B15D0: @ 81B15D0
- push {r4,r5,lr}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0xB]
- cmp r0, 0x8
- beq _081B1602
- cmp r0, 0x8
- bgt _081B15F0
- cmp r0, 0x1
- beq _081B15FA
- b _081B161E
- .pool
-_081B15F0:
- cmp r0, 0xA
- beq _081B1602
- cmp r0, 0xD
- beq _081B1610
- b _081B161E
-_081B15FA:
- movs r0, 0x20
- bl PlaySE
- b _081B1652
-_081B1602:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81B407C
- b _081B1652
-_081B1610:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81B2210
- b _081B1652
-_081B161E:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81B1660
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B1652
- bl sub_81221AC
- lsls r0, 24
- cmp r0, 0
- bne _081B1642
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x7
- strh r0, [r1]
-_081B1642:
- ldr r0, =gUnknown_0203CEE8
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x7
- strb r0, [r5]
- adds r0, r4, 0
- bl sub_81B12C0
-_081B1652:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B15D0
-
- thumb_func_start sub_81B1660
-sub_81B1660: @ 81B1660
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x8]
- movs r1, 0xF
- ands r1, r0
- cmp r1, 0x2
- bne _081B1680
- ldr r5, =gText_CancelParticipation
- b _081B168A
- .pool
-_081B1680:
- cmp r1, 0x4
- bne _081B168A
- bl sub_81B88BC
- adds r5, r0, 0
-_081B168A:
- cmp r5, 0
- beq _081B16CC
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- adds r0, 0xD
- bl sub_81B302C
- ldr r4, =gStringVar4
- adds r0, r4, 0
- adds r1, r5, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B16D4
- str r1, [r0]
- movs r0, 0x1
- b _081B16CE
- .pool
-_081B16CC:
- movs r0, 0
-_081B16CE:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81B1660
-
- thumb_func_start sub_81B16D4
-sub_81B16D4: @ 81B16D4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B16F8
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1708
- str r0, [r1]
-_081B16F8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B16D4
-
- thumb_func_start sub_81B1708
-sub_81B1708: @ 81B1708
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B172E
- cmp r1, 0
- bgt _081B1728
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B174C
- b _081B1758
-_081B1728:
- cmp r1, 0x1
- beq _081B1752
- b _081B1758
-_081B172E:
- ldr r0, =gUnknown_0203CEE8
- strb r1, [r0]
- ldr r1, =gUnknown_0203CEC8
- movs r0, 0x7
- strb r0, [r1, 0x9]
- bl sub_81B8558
- adds r0, r4, 0
- bl sub_81B12C0
- b _081B1758
- .pool
-_081B174C:
- movs r0, 0x5
- bl PlaySE
-_081B1752:
- adds r0, r4, 0
- bl sub_81B1C1C
-_081B1758:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B1708
-
- thumb_func_start sub_81B1760
-sub_81B1760: @ 81B1760
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x30]
- adds r3, r0, 0
- cmp r1, 0x20
- beq _081B178E
- cmp r1, 0x20
- bgt _081B177C
- cmp r1, 0x10
- beq _081B1792
- b _081B1796
- .pool
-_081B177C:
- cmp r1, 0x40
- beq _081B1786
- cmp r1, 0x80
- beq _081B178A
- b _081B1796
-_081B1786:
- movs r1, 0xFF
- b _081B17B2
-_081B178A:
- movs r1, 0x1
- b _081B17B2
-_081B178E:
- movs r1, 0xFE
- b _081B17B2
-_081B1792:
- movs r1, 0x2
- b _081B17B2
-_081B1796:
- bl sub_812210C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B17AA
- cmp r0, 0x2
- beq _081B17AE
- movs r1, 0
- b _081B17B0
-_081B17AA:
- movs r1, 0xFF
- b _081B17B0
-_081B17AE:
- movs r1, 0x1
-_081B17B0:
- ldr r3, =gMain
-_081B17B2:
- ldrh r2, [r3, 0x2E]
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _081B17C4
- movs r0, 0x8
- b _081B17F0
- .pool
-_081B17C4:
- lsls r0, r1, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B17D6
- adds r0, r4, 0
- bl sub_81B17F8
- movs r0, 0
- b _081B17F0
-_081B17D6:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _081B17EA
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x7
- bne _081B17EA
- movs r0, 0x2
- b _081B17F0
-_081B17EA:
- ldrh r1, [r3, 0x2E]
- movs r0, 0x3
- ands r0, r1
-_081B17F0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B1760
-
- thumb_func_start sub_81B17F8
-sub_81B17F8: @ 81B17F8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldrb r4, [r5]
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x8]
- lsls r0, 26
- lsrs r0, 30
- cmp r0, 0
- bne _081B1820
- lsls r1, 24
- asrs r1, 24
- adds r0, r5, 0
- bl sub_81B1854
- b _081B182A
- .pool
-_081B1820:
- lsls r1, 24
- asrs r1, 24
- adds r0, r5, 0
- bl sub_81B195C
-_081B182A:
- movs r1, 0
- ldrsb r1, [r5, r1]
- lsls r4, 24
- asrs r0, r4, 24
- cmp r1, r0
- beq _081B184C
- movs r0, 0x5
- bl PlaySE
- lsrs r0, r4, 24
- movs r1, 0
- bl sub_81B0FCC
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_81B0FCC
-_081B184C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81B17F8
-
- thumb_func_start sub_81B1854
-sub_81B1854: @ 81B1854
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B187A
- cmp r1, r0
- bgt _081B1870
- subs r0, 0x1
- cmp r1, r0
- beq _081B1924
- b _081B1952
-_081B1870:
- cmp r1, 0x1
- beq _081B18C0
- cmp r1, 0x2
- beq _081B18F8
- b _081B1952
-_081B187A:
- ldrb r0, [r4]
- movs r1, 0
- ldrsb r1, [r4, r1]
- cmp r1, 0
- bne _081B1888
- movs r0, 0x7
- b _081B1950
-_081B1888:
- cmp r1, 0x6
- bne _081B1898
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- b _081B1950
- .pool
-_081B1898:
- cmp r1, 0x7
- bne _081B18BC
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 31
- cmp r0, 0
- beq _081B18B0
- movs r0, 0x6
- b _081B1950
- .pool
-_081B18B0:
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- b _081B1950
- .pool
-_081B18BC:
- subs r0, 0x1
- b _081B1950
-_081B18C0:
- ldrb r2, [r4]
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x7
- beq _081B194E
- movs r1, 0
- ldrsb r1, [r4, r1]
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _081B18F4
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 31
- cmp r0, 0
- beq _081B18F0
- movs r0, 0x6
- b _081B1950
- .pool
-_081B18F0:
- movs r0, 0x7
- b _081B1950
-_081B18F4:
- adds r0, r2, 0x1
- b _081B1950
-_081B18F8:
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081B1952
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0
- bne _081B1952
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 28
- lsrs r0, 29
- cmp r0, 0
- bne _081B1950
- movs r0, 0x1
- b _081B1950
- .pool
-_081B1924:
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0
- beq _081B1952
- cmp r0, 0x6
- beq _081B1952
- cmp r0, 0x7
- beq _081B1952
- ldr r0, =gUnknown_0203CEC4
- ldr r3, [r0]
- movs r1, 0
- ldrsb r1, [r4, r1]
- movs r0, 0x7
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r3, 0x8]
- movs r0, 0xF
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x8]
-_081B194E:
- movs r0, 0
-_081B1950:
- strb r0, [r4]
-_081B1952:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1854
-
- thumb_func_start sub_81B195C
-sub_81B195C: @ 81B195C
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r2, r1, 24
- asrs r5, r1, 24
- movs r6, 0x1
- negs r6, r6
- cmp r5, r6
- beq _081B1988
- cmp r5, r6
- bgt _081B197E
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- bne _081B197C
- b _081B1A9C
-_081B197C:
- b _081B1AF4
-_081B197E:
- cmp r5, 0x1
- beq _081B19E4
- cmp r5, 0x2
- beq _081B1A24
- b _081B1AF4
-_081B1988:
- ldrb r1, [r4]
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0
- bne _081B1996
- movs r0, 0x7
- b _081B1AF2
-_081B1996:
- cmp r0, 0x6
- bne _081B19A8
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- b _081B1AF2
- .pool
-_081B19A8:
- cmp r0, 0x7
- bne _081B19C4
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 31
- cmp r0, 0
- beq _081B19C0
- movs r0, 0x6
- b _081B1AF2
- .pool
-_081B19C0:
- subs r0, r1, 0x1
- strb r0, [r4]
-_081B19C4:
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r1, r2, 24
- asrs r1, 24
- bl sub_81B1B00
- lsls r0, 24
- lsrs r2, r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _081B19E0
- b _081B1AF4
-_081B19E0:
- strb r2, [r4]
- b _081B1AF4
-_081B19E4:
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x6
- bne _081B19F0
- movs r0, 0x7
- b _081B1AF2
-_081B19F0:
- cmp r0, 0x7
- bne _081B19F8
- movs r0, 0
- b _081B1AF2
-_081B19F8:
- movs r0, 0
- ldrsb r0, [r4, r0]
- movs r1, 0x1
- bl sub_81B1B00
- lsls r0, 24
- lsrs r2, r0, 24
- asrs r0, 24
- cmp r0, r6
- bne _081B19E0
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 31
- cmp r0, 0
- beq _081B1A20
- movs r0, 0x6
- b _081B1AF2
- .pool
-_081B1A20:
- movs r0, 0x7
- b _081B1AF2
-_081B1A24:
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0
- bne _081B1A5C
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 28
- lsrs r6, r0, 29
- cmp r6, 0x3
- bne _081B1A54
- ldr r0, =gPlayerParty + 300
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B1AF4
- strb r6, [r4]
- b _081B1AF4
- .pool
-_081B1A54:
- ldr r0, =gPlayerParty + 200
- b _081B1A70
- .pool
-_081B1A5C:
- cmp r0, 0x1
- bne _081B1AF4
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 28
- lsrs r5, r0, 29
- cmp r5, 0x5
- bne _081B1A88
- ldr r0, =gPlayerParty + 500
-_081B1A70:
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B1AF4
- strb r5, [r4]
- b _081B1AF4
- .pool
-_081B1A88:
- ldr r0, =gPlayerParty + 400
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B1AF4
- movs r0, 0x4
- b _081B1AF2
- .pool
-_081B1A9C:
- ldrb r1, [r4]
- subs r0, r1, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _081B1ACC
- ldr r0, =gUnknown_0203CEC4
- ldr r3, [r0]
- movs r1, 0
- ldrsb r1, [r4, r1]
- movs r0, 0x7
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r3, 0x8]
- movs r0, 0xF
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x8]
- movs r0, 0
- b _081B1AF2
- .pool
-_081B1ACC:
- subs r0, r1, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _081B1AF4
- ldr r0, =gUnknown_0203CEC4
- ldr r3, [r0]
- movs r1, 0
- ldrsb r1, [r4, r1]
- movs r0, 0x7
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r3, 0x8]
- movs r0, 0xF
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x8]
- movs r0, 0x1
-_081B1AF2:
- strb r0, [r4]
-_081B1AF4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B195C
-
- thumb_func_start sub_81B1B00
-sub_81B1B00: @ 81B1B00
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- asrs r6, r1, 24
-_081B1B0A:
- lsls r0, r5, 24
- asrs r0, 24
- adds r0, r6
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, r5, 24
- lsrs r0, r1, 24
- cmp r0, 0x5
- bhi _081B1B38
- asrs r4, r1, 24
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B1B0A
- adds r0, r4, 0
- b _081B1B3C
- .pool
-_081B1B38:
- movs r0, 0x1
- negs r0, r0
-_081B1B3C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81B1B00
-
- thumb_func_start GetMonNickname
-@ u8 *GetMonNickname(struct pokemon *mon, u8 *dest)
-GetMonNickname: @ 81B1B44
- push {r4,lr}
- adds r4, r1, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetMonNickname
-
- thumb_func_start sub_81B1B5C
-sub_81B1B5C: @ 81B1B5C
- push {r4,lr}
- lsls r4, r1, 24
- lsrs r4, 24
- bl sub_81B3300
- ldr r0, =sub_81B1B8C
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B1B5C
-
- thumb_func_start sub_81B1B8C
-sub_81B1B8C: @ 81B1B8C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- movs r0, 0x6
- bl RunTextPrintersRetIsActive
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _081B1BC8
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _081B1BC2
- movs r0, 0x6
- movs r1, 0
- bl sub_8198070
- movs r0, 0x6
- bl ClearWindowTilemap
-_081B1BC2:
- adds r0, r5, 0
- bl DestroyTask
-_081B1BC8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1B8C
-
- thumb_func_start sub_81B1BD4
-sub_81B1BD4: @ 81B1BD4
- push {lr}
- ldr r0, =sub_81B1B8C
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B1BD4
-
- thumb_func_start sub_81B1BE8
-sub_81B1BE8: @ 81B1BE8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B1C0E
- movs r0, 0
- bl display_pokemon_menu_message
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1370
- str r0, [r1]
-_081B1C0E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1BE8
-
- thumb_func_start sub_81B1C1C
-sub_81B1C1C: @ 81B1C1C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B1C74
- movs r0, 0x6
- movs r1, 0
- bl sub_8198070
- movs r0, 0x6
- bl ClearWindowTilemap
- bl sub_81221AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B1C60
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1BE8
- b _081B1C72
- .pool
-_081B1C60:
- movs r0, 0
- bl display_pokemon_menu_message
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1370
-_081B1C72:
- str r0, [r1]
-_081B1C74:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1C1C
-
- thumb_func_start sub_81B1C84
-sub_81B1C84: @ 81B1C84
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r1, =gStringVar2
- adds r0, r4, 0
- bl CopyItemName
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnWasGivenItem
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1C84
-
- thumb_func_start sub_81B1CD0
-sub_81B1CD0: @ 81B1CD0
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r1, =gStringVar2
- adds r0, r4, 0
- bl CopyItemName
- ldr r4, =gStringVar4
- ldr r1, =gText_RecievedItemFromPkmn
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1CD0
-
- thumb_func_start sub_81B1D1C
-sub_81B1D1C: @ 81B1D1C
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r1, =gStringVar2
- adds r0, r4, 0
- bl CopyItemName
- ldr r4, =gStringVar4
- ldr r1, =gText_SwitchPkmnItem
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1D1C
-
- thumb_func_start sub_81B1D68
-sub_81B1D68: @ 81B1D68
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gStringVar1
- bl CopyItemName
- ldr r1, =gStringVar2
- adds r0, r4, 0
- bl CopyItemName
- ldr r4, =gStringVar4
- ldr r1, =gText_SwitchedPkmnItem
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1D68
-
- thumb_func_start sub_81B1DB8
-sub_81B1DB8: @ 81B1DB8
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- lsls r5, r1, 16
- lsrs r4, r5, 16
- adds r7, r4, 0
- adds r0, r4, 0
- bl ItemIsMail
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B1DE2
- adds r0, r6, 0
- adds r1, r4, 0
- bl GiveMailToMon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _081B1DF6
-_081B1DE2:
- mov r0, sp
- strb r7, [r0]
- mov r1, sp
- lsrs r0, r5, 24
- strb r0, [r1, 0x1]
- adds r0, r6, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
-_081B1DF6:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B1DB8
-
- thumb_func_start sub_81B1E00
-sub_81B1E00: @ 81B1E00
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- strh r0, [r1]
- cmp r0, 0
- bne _081B1E1C
- movs r0, 0
- b _081B1E3E
-_081B1E1C:
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- beq _081B1E3C
- movs r1, 0
- mov r0, sp
- strh r1, [r0]
- adds r0, r4, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- movs r0, 0x2
- b _081B1E3E
-_081B1E3C:
- movs r0, 0x1
-_081B1E3E:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B1E00
-
- thumb_func_start pokemon_item_not_removed
-pokemon_item_not_removed: @ 81B1E48
- push {lr}
- ldr r0, =gStringVar4
- ldr r1, =gText_BagFullCouldNotRemoveItem
- bl StringExpandPlaceholders
- pop {r0}
- bx r0
- .pool
- thumb_func_end pokemon_item_not_removed
-
- thumb_func_start sub_81B1E60
-sub_81B1E60: @ 81B1E60
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r7, r0, r1
- ldrh r0, [r7, 0x4]
- ldrh r1, [r7]
- adds r0, r1
- strh r0, [r7]
- ldrh r0, [r7, 0x6]
- subs r0, 0x1
- strh r0, [r7, 0x6]
- movs r2, 0x8
- ldrsh r0, [r7, r2]
- movs r5, 0x64
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0x39
- adds r2, r7, 0
- bl SetMonData
- movs r3, 0x8
- ldrsh r2, [r7, r3]
- adds r0, r2, 0
- muls r0, r5
- adds r0, r4
- ldr r6, =gUnknown_0203CEDC
- lsls r2, 4
- ldr r1, [r6]
- adds r1, r2
- movs r2, 0x1
- bl sub_81B2CD4
- movs r0, 0x8
- ldrsh r2, [r7, r0]
- adds r0, r2, 0
- muls r0, r5
- adds r0, r4
- lsls r2, 4
- ldr r1, [r6]
- adds r1, r2
- bl sub_81B2E28
- movs r1, 0x6
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _081B1EDC
- movs r2, 0
- ldrsh r1, [r7, r2]
- cmp r1, 0
- beq _081B1EDC
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- cmp r1, r0
- bne _081B1EFE
-_081B1EDC:
- movs r0, 0
- ldrsh r1, [r7, r0]
- movs r2, 0xA
- ldrsh r0, [r7, r2]
- cmp r1, r0
- ble _081B1EF8
- ldr r0, =gStringVar2
- movs r3, 0xA
- ldrsh r2, [r7, r3]
- subs r1, r2
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
-_081B1EF8:
- mov r0, r8
- bl SwitchTaskToFollowupFunc
-_081B1EFE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1E60
-
- thumb_func_start sub_81B1F18
-sub_81B1F18: @ 81B1F18
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r8, r0
- mov r9, r1
- adds r5, r2, 0
- mov r10, r3
- ldr r7, [sp, 0x20]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r5, 24
- lsrs r5, 24
- mov r0, r10
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- movs r0, 0x64
- mov r6, r9
- muls r6, r0
- ldr r0, =gPlayerParty
- adds r6, r0
- mov r0, r8
- lsls r4, r0, 2
- add r4, r8
- lsls r4, 3
- ldr r0, =gTasks + 0x8
- adds r4, r0
- adds r0, r6, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r4]
- adds r0, r6, 0
- movs r1, 0x3A
- bl GetMonData
- strh r0, [r4, 0x2]
- lsls r5, 24
- asrs r5, 24
- strh r5, [r4, 0x4]
- mov r0, r10
- strh r0, [r4, 0x6]
- mov r0, r9
- strh r0, [r4, 0x8]
- ldrh r0, [r4]
- strh r0, [r4, 0xA]
- ldr r1, =sub_81B1E60
- mov r0, r8
- adds r2, r7, 0
- bl SetTaskFuncWithFollowupFunc
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1F18
-
- thumb_func_start sub_81B1FA8
-sub_81B1FA8: @ 81B1FA8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r3, r0, r1
- cmp r5, 0x5
- bhi _081B200A
- lsls r0, r5, 2
- ldr r1, =_081B1FD4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B1FD4:
- .4byte _081B1FEC
- .4byte _081B1FF2
- .4byte _081B1FF6
- .4byte _081B1FFA
- .4byte _081B1FFE
- .4byte _081B2002
-_081B1FEC:
- strh r2, [r3]
- strh r2, [r3, 0xA]
- b _081B200A
-_081B1FF2:
- strh r2, [r3, 0x2]
- b _081B200A
-_081B1FF6:
- strh r2, [r3, 0x4]
- b _081B200A
-_081B1FFA:
- strh r2, [r3, 0x6]
- b _081B200A
-_081B1FFE:
- strh r2, [r3, 0x8]
- b _081B200A
-_081B2002:
- ldr r1, =sub_81B1E60
- adds r0, r4, 0
- bl SetTaskFuncWithFollowupFunc
-_081B200A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B1FA8
-
- thumb_func_start pokemon_ailments_get_primary
-pokemon_ailments_get_primary: @ 81B2014
- push {lr}
- adds r1, r0, 0
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- beq _081B2024
- movs r0, 0x1
- b _081B2056
-_081B2024:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081B2030
- movs r0, 0x2
- b _081B2056
-_081B2030:
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _081B203C
- movs r0, 0x3
- b _081B2056
-_081B203C:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081B2048
- movs r0, 0x4
- b _081B2056
-_081B2048:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081B2054
- movs r0, 0
- b _081B2056
-_081B2054:
- movs r0, 0x5
-_081B2056:
- pop {r1}
- bx r1
- thumb_func_end pokemon_ailments_get_primary
-
- thumb_func_start sub_81B205C
-@ u8 sub_81B205C(struct pokemon *mon, int a2, void *a3)
-sub_81B205C: @ 81B205C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _081B206E
- movs r0, 0x7
- b _081B2096
-_081B206E:
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _081B2096
- adds r0, r4, 0
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- bne _081B2094
- movs r0, 0
- b _081B2096
-_081B2094:
- movs r0, 0x6
-_081B2096:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B205C
-
- thumb_func_start sub_81B209C
-sub_81B209C: @ 81B209C
- push {r4,r5,lr}
- ldr r2, =gUnknown_0203CEC8
- ldrb r1, [r2, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0xB
- bne _081B2126
- adds r5, r2, 0
- adds r5, 0xE
- movs r0, 0
- strh r0, [r2, 0xE]
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- cmp r0, 0
- bne _081B20FC
- movs r4, 0
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- bcs _081B2126
-_081B20C4:
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- bl sub_81B2134
- lsls r0, 16
- lsrs r0, 16
- lsls r0, r4
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r5]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _081B20C4
- b _081B2126
- .pool
-_081B20FC:
- movs r4, 0
- b _081B211E
-_081B2100:
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- bl sub_81B2164
- lsls r0, 16
- lsrs r0, 16
- lsls r0, r4
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r5]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_081B211E:
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _081B2100
-_081B2126:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B209C
-
- thumb_func_start sub_81B2134
-sub_81B2134: @ 81B2134
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _081B215A
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl sub_802C908
- cmp r0, 0
- beq _081B215A
- movs r0, 0x1
- b _081B215C
-_081B215A:
- movs r0, 0
-_081B215C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B2134
-
- thumb_func_start sub_81B2164
-sub_81B2164: @ 81B2164
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _081B2182
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0x55
- bne _081B2182
- movs r0, 0x1
- b _081B2184
-_081B2182:
- movs r0, 0
-_081B2184:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B2164
-
- thumb_func_start sub_81B218C
-sub_81B218C: @ 81B218C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203CEC8
- movs r2, 0xE
- ldrsh r1, [r1, r2]
- asrs r1, r0
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- bne _081B21A4
- movs r0, 0
-_081B21A4:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B218C
-
- thumb_func_start sub_81B21AC
-sub_81B21AC: @ 81B21AC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- adds r0, r5, 0
- bl sub_81B218C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B21DC
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gSpecialVar_0x8004
- strh r5, [r0]
- adds r0, r4, 0
- bl sub_81B12C0
- b _081B21FE
- .pool
-_081B21DC:
- movs r0, 0x20
- bl PlaySE
- ldr r0, =gText_PkmnCantParticipate
- movs r1, 0
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- str r1, [r0]
-_081B21FE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B21AC
-
- thumb_func_start sub_81B2210
-sub_81B2210: @ 81B2210
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gText_CancelParticipation
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B2248
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2210
-
- thumb_func_start sub_81B2248
-sub_81B2248: @ 81B2248
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B226C
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B227C
- str r0, [r1]
-_081B226C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2248
-
- thumb_func_start sub_81B227C
-sub_81B227C: @ 81B227C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B22A2
- cmp r1, 0
- bgt _081B229C
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B22B4
- b _081B22C8
-_081B229C:
- cmp r1, 0x1
- beq _081B22BA
- b _081B22C8
-_081B22A2:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x7
- strh r0, [r1]
- adds r0, r4, 0
- bl sub_81B12C0
- b _081B22C8
- .pool
-_081B22B4:
- movs r0, 0x5
- bl PlaySE
-_081B22BA:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1C1C
- str r0, [r1]
-_081B22C8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B227C
-
- thumb_func_start sub_81B22D8
-sub_81B22D8: @ 81B22D8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r7, r4, 0
- lsls r2, 24
- lsrs r6, r2, 24
- mov r8, r6
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _081B22FA
- movs r0, 0x3
- b _081B2356
-_081B22FA:
- movs r0, 0x90
- lsls r0, 1
- cmp r4, r0
- bls _081B231C
- adds r1, r4, 0
- subs r1, 0x21
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl CanMonLearnTMHM
- cmp r0, 0
- beq _081B2334
- adds r0, r7, 0
- bl ItemIdToBattleMoveId
- b _081B233E
-_081B231C:
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl sub_81B2370
- lsls r0, 24
- cmp r0, 0
- bne _081B2338
-_081B2334:
- movs r0, 0x1
- b _081B2356
-_081B2338:
- mov r0, r8
- bl sub_81B2360
-_081B233E:
- lsls r0, 16
- lsrs r1, r0, 16
- adds r0, r5, 0
- bl pokemon_has_move
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B2354
- movs r0, 0
- b _081B2356
-_081B2354:
- movs r0, 0x2
-_081B2356:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81B22D8
-
- thumb_func_start sub_81B2360
-sub_81B2360: @ 81B2360
- lsls r0, 24
- ldr r1, =gUnknown_0861500C
- lsrs r0, 23
- adds r0, r1
- ldrh r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_81B2360
-
- thumb_func_start sub_81B2370
-sub_81B2370: @ 81B2370
- push {lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_08615048
- lsrs r0, 14
- adds r0, r2
- movs r2, 0x1
- lsls r2, r1
- ldr r0, [r0]
- ands r0, r2
- cmp r0, 0
- bne _081B2394
- movs r0, 0
- b _081B2396
- .pool
-_081B2394:
- movs r0, 0x1
-_081B2396:
- pop {r1}
- bx r1
- thumb_func_end sub_81B2370
-
- thumb_func_start sub_81B239C
-sub_81B239C: @ 81B239C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x1
- beq _081B23C4
- cmp r0, 0x1
- bgt _081B23B2
- cmp r0, 0
- beq _081B23B8
- b _081B23DC
-_081B23B2:
- cmp r1, 0x2
- beq _081B23D0
- b _081B23DC
-_081B23B8:
- ldr r0, =gUnknown_08615810
- bl InitWindows
- b _081B23E2
- .pool
-_081B23C4:
- ldr r0, =gUnknown_08615850
- bl InitWindows
- b _081B23E2
- .pool
-_081B23D0:
- ldr r0, =gUnknown_08615890
- bl InitWindows
- b _081B23E2
- .pool
-_081B23DC:
- ldr r0, =gUnknown_086158D0
- bl InitWindows
-_081B23E2:
- bl DeactivateAllTextPrinters
- movs r4, 0
-_081B23E8:
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _081B23E8
- movs r0, 0
- movs r1, 0x4F
- movs r2, 0xD0
- bl LoadUserWindowBorderGfx
- bl GetOverworldTextboxPalettePtr
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_0860F074
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B239C
-
- thumb_func_start sub_81B2428
-sub_81B2428: @ 81B2428
- push {r4-r6,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x5
- bne _081B243E
- b _081B2554
-_081B243E:
- cmp r2, 0x1
- bne _081B24B4
- ldr r0, =gUnknown_08615918
- bl AddWindow
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r5, =gMenuText_Confirm
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0x30
- bl GetStringCenterAlignXOffset
- lsls r0, 24
- lsrs r2, r0, 24
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- ldr r0, =gUnknown_086157FC
- str r0, [sp, 0x8]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0xC]
- str r5, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized4
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, =gUnknown_08615910
- bl AddWindow
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- b _081B24C0
- .pool
-_081B24B4:
- ldr r0, =gUnknown_08615908
- bl AddWindow
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0x3
-_081B24C0:
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0xA
- beq _081B2514
- ldr r4, =gText_Cancel
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0x30
- bl GetStringCenterAlignXOffset
- lsls r0, 24
- lsrs r2, r0, 24
- adds r2, r6
- lsls r2, 24
- lsrs r2, 24
- ldr r0, =gUnknown_086157FC
- str r0, [sp]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- b _081B2540
- .pool
-_081B2514:
- ldr r4, =gText_Cancel2
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0x30
- bl GetStringCenterAlignXOffset
- lsls r0, 24
- lsrs r2, r0, 24
- adds r2, r6
- lsls r2, 24
- lsrs r2, 24
- ldr r0, =gUnknown_086157FC
- str r0, [sp]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized3
-_081B2540:
- adds r0, r5, 0
- bl PutWindowTilemap
- adds r0, r5, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
-_081B2554:
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2428
-
- thumb_func_start sub_81B2564
-sub_81B2564: @ 81B2564
- lsls r0, 24
- ldr r1, =gUnknown_0203CEC4
- lsrs r0, 23
- adds r0, 0x18
- ldr r1, [r1]
- adds r1, r0
- adds r0, r1, 0
- bx lr
- .pool
- thumb_func_end sub_81B2564
-
- thumb_func_start sub_81B2578
-sub_81B2578: @ 81B2578
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- str r1, [sp, 0xC]
- ldr r1, [sp, 0x4C]
- ldr r4, [sp, 0x50]
- ldr r5, [sp, 0x54]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x18]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r10, r5
- mov r0, r10
- muls r0, r6
- lsls r0, 5
- bl AllocZeroed
- mov r9, r0
- cmp r0, 0
- beq _081B2646
- movs r5, 0
- ldr r0, [sp, 0x14]
- lsls r0, 19
- str r0, [sp, 0x1C]
- ldr r1, [sp, 0x18]
- lsls r1, 19
- str r1, [sp, 0x20]
- lsls r2, r6, 19
- str r2, [sp, 0x24]
- mov r0, r10
- lsls r0, 19
- str r0, [sp, 0x28]
- cmp r5, r10
- bcs _081B2624
-_081B25DA:
- movs r4, 0
- adds r1, r5, 0x1
- mov r8, r1
- cmp r4, r6
- bcs _081B261A
- ldr r2, [sp, 0x18]
- adds r0, r2, r5
- ldr r2, [sp, 0x10]
- adds r1, r0, 0
- muls r1, r2
- adds r7, r1, 0
-_081B25F0:
- ldr r1, [sp, 0x14]
- adds r0, r1, r4
- adds r0, r7
- ldr r2, [sp, 0xC]
- adds r0, r2, r0
- ldrb r0, [r0]
- bl sub_81B0DD4
- adds r1, r5, 0
- muls r1, r6
- adds r1, r4
- lsls r1, 5
- add r1, r9
- movs r2, 0x10
- bl CpuSet
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _081B25F0
-_081B261A:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r5, r0, 24
- cmp r5, r10
- bcc _081B25DA
-_081B2624:
- ldr r0, [sp, 0x1C]
- lsrs r2, r0, 16
- ldr r1, [sp, 0x20]
- lsrs r3, r1, 16
- ldr r1, [sp, 0x24]
- lsrs r0, r1, 16
- str r0, [sp]
- ldr r1, [sp, 0x28]
- lsrs r0, r1, 16
- str r0, [sp, 0x4]
- ldr r0, [sp, 0x8]
- mov r1, r9
- bl BlitBitmapToWindow
- mov r0, r9
- bl Free
-_081B2646:
- 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_81B2578
-
- thumb_func_start sub_81B2658
-sub_81B2658: @ 81B2658
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- cmp r3, 0
- bne _081B2684
- cmp r4, 0
- bne _081B2684
- movs r3, 0xA
- movs r4, 0x7
-_081B2684:
- cmp r5, 0
- bne _081B26A0
- ldr r1, =gUnknown_08615988
- str r2, [sp]
- str r3, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r2, 0xA
- adds r3, r6, 0
- bl sub_81B2578
- b _081B26B0
- .pool
-_081B26A0:
- ldr r1, =gUnknown_086159CE
- str r2, [sp]
- str r3, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r2, 0xA
- adds r3, r6, 0
- bl sub_81B2578
-_081B26B0:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2658
-
- thumb_func_start sub_81B26BC
-sub_81B26BC: @ 81B26BC
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- cmp r3, 0
- bne _081B26E8
- cmp r4, 0
- bne _081B26E8
- movs r3, 0x12
- movs r4, 0x3
-_081B26E8:
- cmp r5, 0
- bne _081B2704
- ldr r1, =gUnknown_08615A14
- str r2, [sp]
- str r3, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r2, 0x12
- adds r3, r6, 0
- bl sub_81B2578
- b _081B2714
- .pool
-_081B2704:
- ldr r1, =gUnknown_08615A4A
- str r2, [sp]
- str r3, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r2, 0x12
- adds r3, r6, 0
- bl sub_81B2578
-_081B2714:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B26BC
-
- thumb_func_start sub_81B2720
-sub_81B2720: @ 81B2720
- push {lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_08615A80
- movs r2, 0
- str r2, [sp]
- movs r2, 0x12
- str r2, [sp, 0x4]
- movs r2, 0x3
- str r2, [sp, 0x8]
- movs r2, 0x12
- movs r3, 0
- bl sub_81B2578
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2720
-
- thumb_func_start sub_81B2748
-sub_81B2748: @ 81B2748
- push {r4-r7,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- adds r5, r4, 0
- ldrb r0, [r0, 0x8]
- movs r1, 0x5
- bl GetWindowAttribute
- lsls r0, 28
- lsrs r6, r0, 24
- adds r7, r6, 0
- movs r0, 0x40
- ands r0, r4
- cmp r0, 0
- beq _081B277C
- ldr r5, =gUnknown_08615AF1
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615AC0
- b _081B297E
- .pool
-_081B277C:
- movs r0, 0x20
- ands r0, r4
- cmp r0, 0
- beq _081B27D8
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _081B2794
- ldr r5, =gUnknown_08615ADF
- b _081B2942
- .pool
-_081B2794:
- ldr r5, =gUnknown_08615ADF
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615ABA
- ldrb r1, [r4]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x2]
- bl sub_81B2564
- ldrb r1, [r4, 0x2]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldr r5, =gUnknown_08615AEE
- b _081B2976
- .pool
-_081B27D8:
- movs r0, 0x10
- ands r0, r4
- cmp r0, 0
- beq _081B2824
- ldr r5, =gUnknown_08615ADF
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615ABA
- ldrb r1, [r4]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x2]
- bl sub_81B2564
- ldrb r1, [r4, 0x2]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldr r5, =gUnknown_08615AEE
- b _081B2976
- .pool
-_081B2824:
- movs r0, 0x4
- ands r0, r4
- cmp r0, 0
- beq _081B2880
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _081B283C
- ldr r5, =gUnknown_08615ADF
- b _081B2942
- .pool
-_081B283C:
- ldr r5, =gUnknown_08615ADF
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615ABA
- ldrb r1, [r4]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x2]
- bl sub_81B2564
- ldrb r1, [r4, 0x2]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldr r5, =gUnknown_08615AEE
- b _081B2976
- .pool
-_081B2880:
- movs r0, 0x2
- ands r0, r4
- cmp r0, 0
- beq _081B28DC
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _081B2898
- ldr r5, =gUnknown_08615ADC
- b _081B2942
- .pool
-_081B2898:
- ldr r5, =gUnknown_08615AD3
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615ABA
- ldrb r1, [r4]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x2]
- bl sub_81B2564
- ldrb r1, [r4, 0x2]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldr r5, =gUnknown_08615AE8
- b _081B2976
- .pool
-_081B28DC:
- movs r0, 0x8
- ands r0, r4
- cmp r0, 0
- beq _081B2938
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _081B28F4
- ldr r5, =gUnknown_08615AD9
- b _081B2942
- .pool
-_081B28F4:
- ldr r5, =gUnknown_08615AD0
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615ABA
- ldrb r1, [r4]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x2]
- bl sub_81B2564
- ldrb r1, [r4, 0x2]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldr r5, =gUnknown_08615AE5
- b _081B2976
- .pool
-_081B2938:
- movs r0, 0x1
- ands r5, r0
- cmp r5, 0
- beq _081B29BC
- ldr r5, =gUnknown_08615AD6
-_081B2942:
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615ABA
- ldrb r1, [r4]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x2]
- bl sub_81B2564
- ldrb r1, [r4, 0x2]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldr r5, =gUnknown_08615AEB
-_081B2976:
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615ABD
-_081B297E:
- ldrb r1, [r4]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x2]
- bl sub_81B2564
- ldrb r1, [r4, 0x2]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- b _081B2A24
- .pool
-_081B29BC:
- ldr r5, =gUnknown_08615ACD
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615ABA
- ldrb r1, [r4]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x2]
- bl sub_81B2564
- ldrb r1, [r4, 0x2]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
- ldr r5, =gUnknown_08615AE2
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615ABD
- ldrb r1, [r4]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x2]
- bl sub_81B2564
- ldrb r1, [r4, 0x2]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
-_081B2A24:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2748
-
- thumb_func_start sub_81B2A3C
-sub_81B2A3C: @ 81B2A3C
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- ldrb r5, [r3]
- ldrb r3, [r3, 0x1]
- lsls r4, r2, 1
- adds r4, r2
- ldr r2, =gUnknown_086157FC
- adds r4, r2
- str r4, [sp]
- movs r2, 0
- str r2, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0
- adds r2, r5, 0
- bl AddTextPrinterParameterized3
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2A3C
-
- thumb_func_start sub_81B2A70
-sub_81B2A70: @ 81B2A70
- push {r4-r7,lr}
- sub sp, 0x14
- adds r7, r0, 0
- adds r6, r1, 0
- lsls r2, 24
- lsrs r4, r2, 24
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B2AC0
- cmp r4, 0x1
- bne _081B2AAA
- ldr r5, [r6]
- ldrb r0, [r6, 0x8]
- ldrb r1, [r5, 0x4]
- lsrs r1, 3
- ldrb r2, [r5, 0x5]
- lsrs r2, 3
- ldrb r3, [r5, 0x6]
- lsrs r3, 3
- ldrb r4, [r5, 0x7]
- lsrs r4, 3
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r4, [r5]
- bl _call_via_r4
-_081B2AAA:
- adds r0, r7, 0
- add r1, sp, 0x8
- bl GetMonNickname
- ldrb r0, [r6, 0x8]
- ldr r3, [r6]
- adds r3, 0x4
- add r1, sp, 0x8
- movs r2, 0
- bl sub_81B2A3C
-_081B2AC0:
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B2A70
-
- thumb_func_start sub_81B2AC8
-sub_81B2AC8: @ 81B2AC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r6, r0, 0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r4, r2, 24
- mov r8, r4
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B2B34
- adds r0, r6, 0
- bl sub_81B205C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081B2AF6
- cmp r0, 0x6
- bne _081B2B34
-_081B2AF6:
- cmp r4, 0
- beq _081B2B1C
- ldr r5, [r7]
- ldrb r0, [r7, 0x8]
- ldrb r1, [r5, 0x8]
- lsrs r1, 3
- ldrb r2, [r5, 0x9]
- lsrs r2, 3
- adds r2, 0x1
- ldrb r3, [r5, 0xA]
- lsrs r3, 3
- ldrb r4, [r5, 0xB]
- lsrs r4, 3
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r4, [r5]
- bl _call_via_r4
-_081B2B1C:
- mov r0, r8
- cmp r0, 0x2
- beq _081B2B34
- adds r0, r6, 0
- movs r1, 0x38
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- adds r1, r7, 0
- bl sub_81B2B40
-_081B2B34:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B2AC8
-
- thumb_func_start sub_81B2B40
-sub_81B2B40: @ 81B2B40
- push {r4-r6,lr}
- adds r2, r0, 0
- adds r6, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r5, =gStringVar2
- adds r0, r5, 0
- adds r1, r2, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, =gStringVar1
- ldr r1, =gText_LevelSymbol
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r1, r5, 0
- bl StringAppend
- ldrb r0, [r6, 0x8]
- ldr r3, [r6]
- adds r3, 0x8
- adds r1, r4, 0
- movs r2, 0
- bl sub_81B2A3C
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2B40
-
- thumb_func_start sub_81B2B8C
-sub_81B2B8C: @ 81B2B8C
- push {r4-r7,lr}
- sub sp, 0x14
- adds r6, r0, 0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r2, 24
- cmp r2, 0x1
- bne _081B2BBE
- ldr r5, [r7]
- ldrb r0, [r7, 0x8]
- ldrb r1, [r5, 0xC]
- lsrs r1, 3
- ldrb r2, [r5, 0xD]
- lsrs r2, 3
- adds r2, 0x1
- ldrb r3, [r5, 0xE]
- lsrs r3, 3
- ldrb r4, [r5, 0xF]
- lsrs r4, 3
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r4, [r5]
- bl _call_via_r4
-_081B2BBE:
- adds r0, r6, 0
- add r1, sp, 0x8
- bl GetMonNickname
- adds r0, r6, 0
- bl GetMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- add r2, sp, 0x8
- adds r3, r7, 0
- bl sub_81B2BF4
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B2B8C
-
- thumb_func_start sub_81B2BF4
-sub_81B2BF4: @ 81B2BF4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r2
- adds r7, r3, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r5, r4, 0
- ldrb r0, [r7, 0x8]
- movs r1, 0x5
- bl GetWindowAttribute
- lsls r0, 28
- lsrs r6, r0, 24
- cmp r4, 0
- beq _081B2CBA
- cmp r4, 0x20
- beq _081B2C24
- cmp r4, 0x1D
- bne _081B2C38
-_081B2C24:
- movs r0, 0xB
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- mov r0, r9
- bl StringCompare
- cmp r0, 0
- beq _081B2CBA
-_081B2C38:
- mov r0, r8
- cmp r0, 0
- beq _081B2C48
- cmp r0, 0xFE
- beq _081B2C88
- b _081B2CBA
- .pool
-_081B2C48:
- ldr r5, =gUnknown_08615AC3
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615AB6
- ldrb r1, [r4]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r7, 0x8]
- ldr r1, =gText_MaleSymbol
- ldr r3, [r7]
- adds r3, 0xC
- movs r2, 0x2
- bl sub_81B2A3C
- b _081B2CBA
- .pool
-_081B2C88:
- ldr r5, =gUnknown_08615AC5
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615AB6
- ldrb r1, [r4]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r6
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r7, 0x8]
- ldr r1, =gText_FemaleSymbol
- ldr r3, [r7]
- adds r3, 0xC
- movs r2, 0x2
- bl sub_81B2A3C
-_081B2CBA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2BF4
-
- thumb_func_start sub_81B2CD4
-sub_81B2CD4: @ 81B2CD4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r7, r0, 0
- adds r6, r1, 0
- lsls r2, 24
- lsrs r4, r2, 24
- mov r8, r4
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B2D2E
- cmp r4, 0
- beq _081B2D16
- ldr r5, [r6]
- ldrb r0, [r6, 0x8]
- ldrb r1, [r5, 0x10]
- lsrs r1, 3
- ldrb r2, [r5, 0x11]
- lsrs r2, 3
- adds r2, 0x1
- ldrb r3, [r5, 0x12]
- lsrs r3, 3
- ldrb r4, [r5, 0x13]
- lsrs r4, 3
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r4, [r5]
- bl _call_via_r4
-_081B2D16:
- mov r0, r8
- cmp r0, 0x2
- beq _081B2D2E
- adds r0, r7, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl sub_81B2D3C
-_081B2D2E:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B2CD4
-
- thumb_func_start sub_81B2D3C
-sub_81B2D3C: @ 81B2D3C
- push {r4,r5,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r5, =gStringVar1
- adds r0, r5, 0
- adds r1, r2, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r1, 0xBA
- strb r1, [r0]
- movs r1, 0xFF
- strb r1, [r0, 0x1]
- ldrb r0, [r4, 0x8]
- ldr r3, [r4]
- adds r3, 0x10
- adds r1, r5, 0
- movs r2, 0
- bl sub_81B2A3C
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2D3C
-
- thumb_func_start sub_81B2D74
-sub_81B2D74: @ 81B2D74
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r7, r0, 0
- adds r6, r1, 0
- lsls r2, 24
- lsrs r4, r2, 24
- mov r8, r4
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B2DD0
- cmp r4, 0
- beq _081B2DB8
- ldr r5, [r6]
- ldrb r0, [r6, 0x8]
- ldrb r1, [r5, 0x14]
- lsrs r1, 3
- adds r1, 0x1
- ldrb r2, [r5, 0x15]
- lsrs r2, 3
- adds r2, 0x1
- ldrb r3, [r5, 0x16]
- lsrs r3, 3
- ldrb r4, [r5, 0x17]
- lsrs r4, 3
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r4, [r5]
- bl _call_via_r4
-_081B2DB8:
- mov r0, r8
- cmp r0, 0x2
- beq _081B2DD0
- adds r0, r7, 0
- movs r1, 0x3A
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl sub_81B2DDC
-_081B2DD0:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B2D74
-
- thumb_func_start sub_81B2DDC
-sub_81B2DDC: @ 81B2DDC
- push {r4-r6,lr}
- adds r2, r0, 0
- adds r6, r1, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r5, =gStringVar2
- adds r0, r5, 0
- adds r1, r2, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, =gStringVar1
- ldr r1, =gText_Slash
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r1, r5, 0
- bl StringAppend
- ldrb r0, [r6, 0x8]
- ldr r3, [r6]
- adds r3, 0x14
- adds r1, r4, 0
- movs r2, 0
- bl sub_81B2A3C
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2DDC
-
- thumb_func_start sub_81B2E28
-sub_81B2E28: @ 81B2E28
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B2E5C
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- adds r2, r6, 0
- bl sub_81B2E64
-_081B2E5C:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81B2E28
-
- thumb_func_start sub_81B2E64
-sub_81B2E64: @ 81B2E64
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r6, r2, 0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- ldrb r0, [r6, 0x8]
- movs r1, 0x5
- bl GetWindowAttribute
- lsls r0, 28
- lsrs r7, r0, 24
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- mov r2, r9
- lsls r1, r2, 16
- asrs r1, 16
- bl GetHPBarLevel
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _081B2EB0
- cmp r0, 0x2
- blt _081B2EE0
- cmp r0, 0x4
- bgt _081B2EE0
- ldr r5, =gUnknown_08615AC7
- b _081B2EB2
- .pool
-_081B2EB0:
- ldr r5, =gUnknown_08615AC9
-_081B2EB2:
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615AB8
- ldrb r1, [r4]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
- b _081B2F04
- .pool
-_081B2EE0:
- ldr r5, =gUnknown_08615ACB
- ldrb r0, [r5]
- bl sub_81B2564
- ldr r4, =gUnknown_08615AB8
- ldrb r1, [r4]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
- ldrb r0, [r5, 0x1]
- bl sub_81B2564
- ldrb r1, [r4, 0x1]
- adds r1, r7
- movs r2, 0x2
- bl LoadPalette
-_081B2F04:
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- mov r2, r9
- lsls r1, r2, 16
- asrs r1, 16
- ldr r2, [r6]
- ldrb r2, [r2, 0x1A]
- bl GetScaledHPFraction
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r6, 0x8]
- ldr r4, =gUnknown_08615AB8
- ldrb r1, [r4, 0x1]
- ldr r3, [r6]
- ldrb r2, [r3, 0x18]
- ldrb r3, [r3, 0x19]
- str r5, [sp]
- movs r7, 0x1
- str r7, [sp, 0x4]
- bl FillWindowPixelRect
- ldrb r0, [r6, 0x8]
- ldrb r1, [r4]
- ldr r3, [r6]
- ldrb r2, [r3, 0x18]
- ldrb r3, [r3, 0x19]
- adds r3, 0x1
- str r5, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- bl FillWindowPixelRect
- ldr r1, [r6]
- ldrb r0, [r1, 0x1A]
- cmp r5, r0
- beq _081B2F88
- ldrb r0, [r6, 0x8]
- ldrb r2, [r1, 0x18]
- adds r2, r5
- ldrb r3, [r1, 0x19]
- ldrb r1, [r1, 0x1A]
- subs r1, r5
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- str r7, [sp, 0x4]
- movs r1, 0xD
- bl FillWindowPixelRect
- ldrb r0, [r6, 0x8]
- ldr r1, [r6]
- ldrb r2, [r1, 0x18]
- adds r2, r5
- ldrb r3, [r1, 0x19]
- adds r3, 0x1
- ldrb r1, [r1, 0x1A]
- subs r1, r5
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x2
- bl FillWindowPixelRect
-_081B2F88:
- ldrb r0, [r6, 0x8]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2E64
-
- thumb_func_start sub_81B2FA8
-sub_81B2FA8: @ 81B2FA8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r6, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r2, 24
- lsrs r7, r2, 24
- cmp r7, 0
- beq _081B2FF2
- ldr r5, [r6]
- ldrb r1, [r5, 0x1C]
- movs r4, 0x7
- adds r0, r1, 0
- ands r0, r4
- ldrb r2, [r5, 0x1E]
- adds r0, r2
- adds r3, r0, 0x7
- asrs r3, 3
- ldrb r2, [r5, 0x1D]
- adds r0, r2, 0
- ands r0, r4
- ldrb r4, [r5, 0x1F]
- adds r0, r4
- adds r4, r0, 0x7
- ldrb r0, [r6, 0x8]
- lsrs r1, 3
- lsrs r2, 3
- lsrs r4, 3
- str r4, [sp]
- movs r4, 0x1
- str r4, [sp, 0x4]
- ldr r4, [r5]
- bl _call_via_r4
-_081B2FF2:
- cmp r7, 0x2
- beq _081B3018
- ldrb r0, [r6, 0x8]
- ldr r1, [r6]
- ldrb r2, [r1, 0x1C]
- ldrb r3, [r1, 0x1D]
- ldr r1, =gUnknown_086157FC
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- ldr r4, =gUnknown_08615B60
- mov r5, r8
- lsls r1, r5, 2
- adds r1, r4
- ldr r1, [r1]
- str r1, [sp, 0x8]
- movs r1, 0x1
- bl AddTextPrinterParameterized3
-_081B3018:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B2FA8
-
- thumb_func_start sub_81B302C
-sub_81B302C: @ 81B302C
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _081B304C
- movs r1, 0
- bl sub_8198070
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
-_081B304C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B302C
-
- thumb_func_start display_pokemon_menu_message
-display_pokemon_menu_message: @ 81B3054
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- ldr r0, =gUnknown_0203CEC4
- ldr r4, [r0]
- adds r5, r4, 0
- adds r5, 0xD
- ldrb r0, [r4, 0xD]
- cmp r0, 0xFF
- beq _081B306E
- adds r0, r5, 0
- bl sub_81B302C
-_081B306E:
- cmp r6, 0x7F
- beq _081B313C
- adds r0, r6, 0
- subs r0, 0x15
- cmp r0, 0x5
- bhi _081B30D4
- lsls r0, 2
- ldr r1, =_081B308C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B308C:
- .4byte _081B30A4
- .4byte _081B30BC
- .4byte _081B30BC
- .4byte _081B30AC
- .4byte _081B30B4
- .4byte _081B30C4
-_081B30A4:
- ldr r0, =gUnknown_08615928
- b _081B30C6
- .pool
-_081B30AC:
- ldr r0, =gUnknown_08615930
- b _081B30C6
- .pool
-_081B30B4:
- ldr r0, =gUnknown_08615938
- b _081B30C6
- .pool
-_081B30BC:
- ldr r0, =gUnknown_08615940
- b _081B30C6
- .pool
-_081B30C4:
- ldr r0, =gUnknown_08615948
-_081B30C6:
- bl AddWindow
- strb r0, [r5]
- b _081B30DC
- .pool
-_081B30D4:
- ldr r0, =gUnknown_08615920
- bl AddWindow
- strb r0, [r4, 0xD]
-_081B30DC:
- cmp r6, 0
- bne _081B3104
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 31
- cmp r0, 0
- beq _081B30F8
- movs r6, 0x2
- b _081B3104
- .pool
-_081B30F8:
- bl sub_81B314C
- lsls r0, 24
- cmp r0, 0
- bne _081B3104
- movs r6, 0x1
-_081B3104:
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0x4F
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r4, =gStringVar4
- ldr r1, =gUnknown_08615AF4
- lsls r0, r6, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldrb r0, [r5]
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
-_081B313C:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end display_pokemon_menu_message
-
- thumb_func_start sub_81B314C
-sub_81B314C: @ 81B314C
- push {r4-r7,lr}
- ldr r7, =gPlayerParty
- movs r6, 0
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0xB]
- cmp r0, 0x1
- bne _081B3168
-_081B315A:
- movs r0, 0x1
- b _081B31AA
- .pool
-_081B3168:
- movs r5, 0
-_081B316A:
- movs r0, 0x64
- muls r0, r5
- adds r4, r7, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B319A
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _081B3194
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _081B319A
-_081B3194:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_081B319A:
- cmp r6, 0x1
- bhi _081B315A
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _081B316A
- movs r0, 0
-_081B31AA:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81B314C
-
- thumb_func_start sub_81B31B0
-sub_81B31B0: @ 81B31B0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- beq _081B320C
- cmp r4, 0x1
- bgt _081B31CC
- cmp r4, 0
- beq _081B31D2
- b _081B321C
-_081B31CC:
- cmp r4, 0x2
- beq _081B3214
- b _081B321C
-_081B31D2:
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- ldrb r0, [r1, 0x17]
- lsls r0, 1
- movs r3, 0x13
- subs r3, r0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0xA
- str r0, [sp]
- ldrb r0, [r1, 0x17]
- lsls r0, 25
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0xE
- str r0, [sp, 0x8]
- ldr r0, =0x000002e9
- str r0, [sp, 0xC]
- add r0, sp, 0x14
- movs r1, 0x2
- movs r2, 0x13
- bl SetWindowTemplateFields
- b _081B3226
- .pool
-_081B320C:
- ldr r0, =gUnknown_08615950
- b _081B321E
- .pool
-_081B3214:
- ldr r0, =gUnknown_08615958
- b _081B321E
- .pool
-_081B321C:
- ldr r0, =gUnknown_08615960
-_081B321E:
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x14]
- str r1, [sp, 0x18]
-_081B3226:
- add r0, sp, 0x14
- bl AddWindow
- ldr r6, =gUnknown_0203CEC4
- ldr r1, [r6]
- strb r0, [r1, 0xC]
- ldr r0, [r6]
- ldrb r0, [r0, 0xC]
- movs r1, 0
- movs r2, 0x4F
- movs r3, 0xD
- bl SetWindowBorderStyle
- cmp r4, 0x3
- bne _081B3250
- ldr r0, [r6]
- b _081B32E2
- .pool
-_081B3250:
- movs r0, 0x1
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r0, 0x1
- movs r1, 0x2
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r5, 0
- ldr r0, [r6]
- ldrb r0, [r0, 0x17]
- cmp r5, r0
- bcs _081B32CA
- adds r7, r6, 0
- movs r6, 0
-_081B327A:
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0xF
- adds r4, r0, r5
- ldrb r0, [r4]
- movs r2, 0x3
- cmp r0, 0x12
- bls _081B328C
- movs r2, 0x4
-_081B328C:
- ldrb r0, [r1, 0xC]
- lsls r3, r5, 4
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- mov r1, r8
- str r1, [sp]
- str r6, [sp, 0x4]
- lsls r1, r2, 1
- adds r1, r2
- ldr r2, =gUnknown_086157FC
- adds r1, r2
- str r1, [sp, 0x8]
- str r6, [sp, 0xC]
- ldr r2, =gUnknown_08615C08
- ldrb r1, [r4]
- lsls r1, 3
- adds r1, r2
- ldr r1, [r1]
- str r1, [sp, 0x10]
- movs r1, 0x1
- mov r2, r9
- bl AddTextPrinterParameterized4
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r7]
- ldrb r0, [r0, 0x17]
- cmp r5, r0
- bcc _081B327A
-_081B32CA:
- ldr r4, =gUnknown_0203CEC4
- ldr r1, [r4]
- ldrb r0, [r1, 0xC]
- ldrb r1, [r1, 0x17]
- movs r2, 0
- movs r3, 0x1
- bl InitMenuInUpperLeftCorner
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, [r4]
-_081B32E2:
- ldrb r0, [r0, 0xC]
- add sp, 0x1C
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B31B0
-
- thumb_func_start sub_81B3300
-sub_81B3300: @ 81B3300
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- movs r0, 0x6
- movs r1, 0
- movs r2, 0x4F
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r2, =gTextFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- bl GetPlayerTextSpeedDelay
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0x6
- movs r1, 0x1
- adds r2, r4, 0
- bl AddTextPrinterParameterized2
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3300
-
- thumb_func_start sub_81B334C
-sub_81B334C: @ 81B334C
- push {lr}
- ldr r0, =gUnknown_08615968
- movs r1, 0x4F
- movs r2, 0xD
- movs r3, 0
- bl CreateYesNoMenu
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B334C
-
- thumb_func_start sub_81B3364
-sub_81B3364: @ 81B3364
- push {r4,lr}
- ldr r0, =gUnknown_08615970
- bl AddWindow
- ldr r4, =gUnknown_0203CEC4
- ldr r1, [r4]
- strb r0, [r1, 0xC]
- ldr r0, [r4]
- ldrb r0, [r0, 0xC]
- movs r1, 0
- movs r2, 0x4F
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r0, [r4]
- ldrb r0, [r0, 0xC]
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B3364
-
- thumb_func_start sub_81B3394
-sub_81B3394: @ 81B3394
- push {r4,lr}
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- ldrb r0, [r0, 0xC]
- bl ClearWindowTilemap
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3394
-
- thumb_func_start sub_81B33B4
-sub_81B33B4: @ 81B33B4
- push {r4,lr}
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r2, 0
- bne _081B33C8
- bl sub_81B3414
- b _081B3400
-_081B33C8:
- ldr r4, =gUnknown_0203CEC4
- ldr r1, [r4]
- ldr r0, =gUnknown_08615D70
- adds r0, r2, r0
- ldrb r0, [r0]
- strb r0, [r1, 0x17]
- movs r3, 0
- ldr r0, [r4]
- ldrb r0, [r0, 0x17]
- cmp r3, r0
- bcs _081B3400
- ldr r1, =gUnknown_08615D38
- lsls r0, r2, 2
- adds r2, r0, r1
-_081B33E4:
- ldr r1, [r4]
- adds r1, 0xF
- adds r1, r3
- ldr r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, [r4]
- ldrb r0, [r0, 0x17]
- cmp r3, r0
- bcc _081B33E4
-_081B3400:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B33B4
-
- thumb_func_start sub_81B3414
-sub_81B3414: @ 81B3414
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- ldr r2, =gUnknown_0203CEC4
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1, 0x17]
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0xF
- adds r1, 0x17
- movs r2, 0
- bl AppendToList
- movs r7, 0
- ldr r0, =gUnknown_08615D7E
- ldrh r0, [r0]
- str r0, [sp]
-_081B3446:
- movs r4, 0
- adds r0, r7, 0x1
- mov r8, r0
- ldr r1, [sp]
- cmp r1, 0xE
- beq _081B34A0
- movs r0, 0x64
- mov r6, r10
- muls r6, r0
- ldr r5, =gUnknown_08615D7E
-_081B345A:
- mov r1, r9
- adds r0, r1, r6
- adds r1, r7, 0
- adds r1, 0xD
- bl GetMonData
- lsls r1, r4, 1
- adds r1, r5
- ldrh r1, [r1]
- cmp r0, r1
- bne _081B3490
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xF
- adds r1, 0x17
- adds r2, r4, 0
- adds r2, 0x13
- lsls r2, 24
- lsrs r2, 24
- bl AppendToList
- b _081B34A0
- .pool
-_081B3490:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, 0xE
- bne _081B345A
-_081B34A0:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bls _081B3446
- bl InBattlePike
- lsls r0, 24
- cmp r0, 0
- bne _081B3518
- mov r0, r9
- adds r0, 0x64
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B34D2
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xF
- adds r1, 0x17
- movs r2, 0x1
- bl AppendToList
-_081B34D2:
- movs r0, 0x64
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081B3508
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xF
- adds r1, 0x17
- movs r2, 0x6
- bl AppendToList
- b _081B3518
- .pool
-_081B3508:
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xF
- adds r1, 0x17
- movs r2, 0x3
- bl AppendToList
-_081B3518:
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xF
- adds r1, 0x17
- movs r2, 0x2
- bl AppendToList
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3414
-
- thumb_func_start sub_81B353C
-sub_81B353C: @ 81B353C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, =gUnknown_0203CEC8
- ldrb r0, [r1, 0x8]
- lsls r0, 28
- lsrs r0, 28
- adds r2, r1, 0
- cmp r0, 0xC
- bhi _081B35FE
- lsls r0, 2
- ldr r1, =_081B3560
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B3560:
- .4byte _081B3594
- .4byte _081B35B0
- .4byte _081B35FE
- .4byte _081B35FE
- .4byte _081B35BC
- .4byte _081B35FE
- .4byte _081B35DC
- .4byte _081B35FE
- .4byte _081B35EE
- .4byte _081B35F2
- .4byte _081B35F6
- .4byte _081B35FE
- .4byte _081B35FA
-_081B3594:
- bl InMultiBattleRoom
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B35AC
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _081B35FE
-_081B35AC:
- movs r1, 0x1
- b _081B3600
-_081B35B0:
- adds r0, r4, 0
- bl sub_81B8A2C
- lsls r0, 24
- lsrs r1, r0, 24
- b _081B3600
-_081B35BC:
- movs r0, 0x9
- ldrsb r0, [r2, r0]
- bl sub_81B856C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081B35D4
- cmp r0, 0x1
- beq _081B35D8
- movs r1, 0x7
- b _081B3600
-_081B35D4:
- movs r1, 0x4
- b _081B3600
-_081B35D8:
- movs r1, 0x5
- b _081B3600
-_081B35DC:
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- movs r1, 0x6
- cmp r0, 0
- beq _081B3600
- movs r1, 0x7
- b _081B3600
-_081B35EE:
- movs r1, 0xA
- b _081B3600
-_081B35F2:
- movs r1, 0xB
- b _081B3600
-_081B35F6:
- movs r1, 0xC
- b _081B3600
-_081B35FA:
- movs r1, 0xD
- b _081B3600
-_081B35FE:
- movs r1, 0
-_081B3600:
- adds r0, r1, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B353C
-
- thumb_func_start sub_81B3608
-sub_81B3608: @ 81B3608
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r4, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r4, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r7, =gPlayerParty
- adds r5, r0, r7
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- adds r0, 0xD
- bl sub_81B302C
- ldrb r1, [r4, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0xC
- beq _081B3674
- ldrb r4, [r4, 0x9]
- adds r0, r5, 0
- bl sub_81B353C
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r7, 0
- adds r1, r4, 0
- bl sub_81B33B4
- movs r0, 0
- bl sub_81B31B0
- movs r0, 0x15
- bl display_pokemon_menu_message
- b _081B36EA
- .pool
-_081B3674:
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0
- bne _081B36C0
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnNotHolding
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B469C
- str r1, [r0]
- movs r0, 0
- b _081B36EC
- .pool
-_081B36C0:
- ldrb r4, [r4, 0x9]
- adds r0, r5, 0
- bl sub_81B353C
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r7, 0
- adds r1, r4, 0
- bl sub_81B33B4
- movs r0, 0x1
- bl sub_81B31B0
- ldr r1, =gStringVar2
- adds r0, r6, 0
- bl CopyItemName
- movs r0, 0x1A
- bl display_pokemon_menu_message
-_081B36EA:
- movs r0, 0x1
-_081B36EC:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B3608
-
- thumb_func_start sub_81B36FC
-sub_81B36FC: @ 81B36FC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_81B3608
- lsls r0, 24
- cmp r0, 0
- beq _081B3720
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0xFF
- strh r1, [r0, 0x8]
- ldr r1, =sub_81B3730
- str r1, [r0]
-_081B3720:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B36FC
-
- thumb_func_start sub_81B3730
-sub_81B3730: @ 81B3730
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B37EE
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B37EE
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r5, r0, r1
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- ldrb r0, [r0, 0x17]
- cmp r0, 0x3
- bhi _081B3774
- bl Menu_ProcessInputNoWrapAround_other
- b _081B3778
- .pool
-_081B3774:
- bl ProcessMenuInput_other
-_081B3778:
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_GetCursorPos
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- lsls r0, r4, 24
- asrs r5, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _081B37EE
- adds r0, 0x1
- cmp r5, r0
- bne _081B37CC
- movs r0, 0x5
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xE
- bl sub_81B302C
- ldr r2, =gUnknown_08615C08
- ldr r0, [r4]
- ldrb r1, [r0, 0x17]
- adds r0, r1
- ldrb r0, [r0, 0xE]
- lsls r0, 3
- adds r2, 0x4
- adds r0, r2
- ldr r1, [r0]
- adds r0, r6, 0
- bl _call_via_r1
- b _081B37EE
- .pool
-_081B37CC:
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xE
- bl sub_81B302C
- ldr r1, =gUnknown_08615C08
- ldr r0, [r4]
- adds r0, 0xF
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl _call_via_r1
-_081B37EE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3730
-
- thumb_func_start sub_81B37FC
-sub_81B37FC: @ 81B37FC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- ldr r0, =sub_81B3828
- str r0, [r1, 0x4]
- adds r0, r4, 0
- bl sub_81B12C0
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B37FC
-
- thumb_func_start sub_81B3828
-sub_81B3828: @ 81B3828
- push {r4,lr}
- sub sp, 0x4
- ldr r4, =gUnknown_0203CEC8
- ldrb r1, [r4, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _081B3868
- bl pokemon_change_order
- ldr r1, =gPlayerParty
- ldrb r2, [r4, 0x9]
- ldr r0, =gPlayerPartyCount
- ldrb r3, [r0]
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =sub_81B3894
- str r0, [sp]
- movs r0, 0x1
- bl ShowPokemonSummaryScreen
- b _081B3880
- .pool
-_081B3868:
- ldr r1, =gPlayerParty
- ldrb r2, [r4, 0x9]
- ldr r0, =gPlayerPartyCount
- ldrb r3, [r0]
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =sub_81B3894
- str r0, [sp]
- movs r0, 0
- bl ShowPokemonSummaryScreen
-_081B3880:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3828
-
- thumb_func_start sub_81B3894
-sub_81B3894: @ 81B3894
- push {lr}
- sub sp, 0xC
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r3, =gUnknown_0203CEC8
- ldr r0, =gUnknown_0203CF20
- ldrb r0, [r0]
- strb r0, [r3, 0x9]
- ldrb r0, [r3, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r3, 0xB]
- movs r1, 0x15
- str r1, [sp]
- ldr r1, =sub_81B36FC
- str r1, [sp, 0x4]
- ldr r1, [r3]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3894
-
- thumb_func_start brm_switch
-brm_switch: @ 81B38DC
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x5
- bl PlaySE
- ldr r5, =gUnknown_0203CEC8
- movs r0, 0x8
- strb r0, [r5, 0xB]
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- movs r0, 0x3
- bl display_pokemon_menu_message
- ldrb r0, [r5, 0x9]
- movs r1, 0x1
- bl sub_81B0FCC
- ldrb r0, [r5, 0x9]
- strb r0, [r5, 0xA]
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1370
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end brm_switch
-
- thumb_func_start sub_81B3938
-sub_81B3938: @ 81B3938
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r6, r0, r1
- ldr r3, =gUnknown_0203CEC8
- movs r1, 0xA
- ldrsb r1, [r3, r1]
- movs r0, 0x9
- ldrsb r0, [r3, r0]
- cmp r1, r0
- bne _081B3968
- adds r0, r7, 0
- bl sub_81B407C
- b _081B3ABA
- .pool
-_081B3968:
- add r2, sp, 0x8
- movs r0, 0x9
- ldrsb r0, [r3, r0]
- ldr r1, =gUnknown_0203CEDC
- ldr r1, [r1]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r4, 0
- strb r0, [r2]
- adds r0, r2, 0
- ldrb r0, [r0]
- movs r1, 0x1
- bl GetWindowAttribute
- strh r0, [r6]
- add r0, sp, 0x8
- ldrb r0, [r0]
- movs r1, 0x2
- bl GetWindowAttribute
- strh r0, [r6, 0x2]
- add r0, sp, 0x8
- ldrb r0, [r0]
- movs r1, 0x3
- bl GetWindowAttribute
- strh r0, [r6, 0x4]
- add r0, sp, 0x8
- ldrb r0, [r0]
- movs r1, 0x4
- bl GetWindowAttribute
- strh r0, [r6, 0x6]
- strh r4, [r6, 0x10]
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0xA
- bne _081B39C4
- movs r2, 0x1
- negs r2, r2
- adds r0, r2, 0
- b _081B39C6
- .pool
-_081B39C4:
- movs r0, 0x1
-_081B39C6:
- strh r0, [r6, 0x14]
- add r2, sp, 0x8
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0xA]
- lsls r0, 24
- asrs r0, 24
- ldr r1, =gUnknown_0203CEDC
- ldr r1, [r1]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r4, 0
- strb r0, [r2, 0x1]
- adds r0, r2, 0
- ldrb r0, [r0, 0x1]
- movs r1, 0x1
- bl GetWindowAttribute
- strh r0, [r6, 0x8]
- add r0, sp, 0x8
- ldrb r0, [r0, 0x1]
- movs r1, 0x2
- bl GetWindowAttribute
- strh r0, [r6, 0xA]
- add r0, sp, 0x8
- ldrb r0, [r0, 0x1]
- movs r1, 0x3
- bl GetWindowAttribute
- strh r0, [r6, 0xC]
- add r0, sp, 0x8
- ldrb r0, [r0, 0x1]
- movs r1, 0x4
- bl GetWindowAttribute
- strh r0, [r6, 0xE]
- strh r4, [r6, 0x12]
- movs r1, 0xC
- ldrsh r0, [r6, r1]
- cmp r0, 0xA
- bne _081B3A2C
- movs r2, 0x1
- negs r2, r2
- adds r0, r2, 0
- b _081B3A2E
- .pool
-_081B3A2C:
- movs r0, 0x1
-_081B3A2E:
- strh r0, [r6, 0x16]
- ldr r4, =gUnknown_0203CEF0
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- movs r2, 0x6
- ldrsh r0, [r6, r2]
- lsls r0, 1
- muls r0, r1
- bl Alloc
- str r0, [r4]
- ldr r5, =gUnknown_0203CEF4
- movs r0, 0xC
- ldrsh r1, [r6, r0]
- movs r2, 0xE
- ldrsh r0, [r6, r2]
- lsls r0, 1
- muls r0, r1
- bl Alloc
- str r0, [r5]
- ldr r1, [r4]
- ldrb r2, [r6]
- ldrb r3, [r6, 0x2]
- ldrb r0, [r6, 0x4]
- str r0, [sp]
- ldrb r0, [r6, 0x6]
- str r0, [sp, 0x4]
- movs r0, 0
- bl sub_8199CBC
- ldr r1, [r5]
- ldrb r2, [r6, 0x8]
- ldrb r3, [r6, 0xA]
- ldrb r0, [r6, 0xC]
- str r0, [sp]
- ldrb r0, [r6, 0xE]
- str r0, [sp, 0x4]
- movs r0, 0
- bl sub_8199CBC
- add r0, sp, 0x8
- ldrb r0, [r0]
- bl ClearWindowTilemap
- add r0, sp, 0x8
- ldrb r0, [r0, 0x1]
- bl ClearWindowTilemap
- ldr r4, =gUnknown_0203CEC8
- movs r0, 0x9
- strb r0, [r4, 0xB]
- ldrb r0, [r4, 0x9]
- movs r1, 0x1
- bl sub_81B0FCC
- ldrb r0, [r4, 0xA]
- movs r1, 0x1
- bl sub_81B0FCC
- adds r0, r7, 0
- bl sub_81B3CC0
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B3D48
- str r1, [r0]
-_081B3ABA:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3938
-
- thumb_func_start sub_81B3AD8
-sub_81B3AD8: @ 81B3AD8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r2, 0
- mov r12, r3
- ldr r7, [sp, 0x18]
- lsls r0, 16
- lsrs r3, r0, 16
- adds r5, r3, 0
- lsls r1, 16
- lsrs r2, r1, 16
- mov r8, r2
- lsls r0, r3, 16
- asrs r1, r0, 16
- lsls r0, r2, 16
- asrs r0, 16
- adds r4, r1, r0
- cmp r4, 0
- blt _081B3B02
- cmp r1, 0x1F
- ble _081B3B06
-_081B3B02:
- movs r0, 0
- b _081B3B34
-_081B3B06:
- cmp r1, 0
- bge _081B3B1A
- negs r0, r1
- strb r0, [r6]
- movs r0, 0
- mov r1, r12
- strb r0, [r1]
- adds r0, r2, r3
- strb r0, [r7]
- b _081B3B32
-_081B3B1A:
- movs r0, 0
- strb r0, [r6]
- mov r0, r12
- strb r5, [r0]
- cmp r4, 0x1F
- ble _081B3B2E
- movs r0, 0x20
- subs r0, r5
- strb r0, [r7]
- b _081B3B32
-_081B3B2E:
- mov r1, r8
- strb r1, [r7]
-_081B3B32:
- movs r0, 0x1
-_081B3B34:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81B3AD8
-
- thumb_func_start sub_81B3B40
-sub_81B3B40: @ 81B3B40
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- str r0, [sp, 0x28]
- ldr r0, [sp, 0x54]
- ldr r4, [sp, 0x58]
- lsls r2, 16
- lsrs r2, 16
- mov r9, r2
- lsls r3, 16
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r4, 16
- lsrs r4, 16
- str r4, [sp, 0x30]
- lsls r1, 16
- asrs r7, r1, 16
- lsrs r0, r3, 16
- str r0, [sp, 0x2C]
- asrs r3, 16
- mov r8, r3
- mov r5, sp
- adds r5, 0x25
- mov r6, sp
- adds r6, 0x26
- str r6, [sp]
- adds r0, r7, 0
- mov r1, r8
- add r2, sp, 0x24
- adds r3, r5, 0
- bl sub_81B3AD8
- lsls r0, 24
- cmp r0, 0
- beq _081B3BFA
- ldrb r2, [r5]
- mov r1, r9
- lsls r0, r1, 24
- lsrs r0, 24
- mov r9, r0
- ldrb r0, [r6]
- str r0, [sp]
- mov r1, r10
- lsls r0, r1, 24
- lsrs r4, r0, 24
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- mov r3, r9
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, [sp, 0x30]
- lsls r0, r1, 16
- asrs r0, 16
- adds r0, r7, r0
- lsls r0, 16
- asrs r0, 16
- str r6, [sp]
- mov r1, r8
- add r2, sp, 0x24
- adds r3, r5, 0
- bl sub_81B3AD8
- lsls r0, 24
- cmp r0, 0
- beq _081B3BFA
- add r0, sp, 0x24
- ldrb r2, [r0]
- ldr r1, [sp, 0x2C]
- lsls r0, r1, 24
- lsrs r0, 24
- str r0, [sp]
- str r4, [sp, 0x4]
- ldrb r0, [r5]
- str r0, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- ldrb r0, [r6]
- str r0, [sp, 0x10]
- str r4, [sp, 0x14]
- movs r0, 0x11
- str r0, [sp, 0x18]
- movs r0, 0
- str r0, [sp, 0x1C]
- str r0, [sp, 0x20]
- ldr r1, [sp, 0x28]
- movs r3, 0
- bl CopyRectToBgTilemapBufferRect
-_081B3BFA:
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B3B40
-
- thumb_func_start sub_81B3C0C
-sub_81B3C0C: @ 81B3C0C
- push {r4,lr}
- ldr r4, =gSprites
- ldrb r2, [r0, 0xB]
- lsls r3, r2, 4
- adds r3, r2
- lsls r3, 2
- adds r3, r4
- lsls r1, 16
- asrs r1, 13
- ldrh r2, [r3, 0x24]
- adds r2, r1
- strh r2, [r3, 0x24]
- ldrb r3, [r0, 0xA]
- lsls r2, r3, 4
- adds r2, r3
- lsls r2, 2
- adds r2, r4
- ldrh r3, [r2, 0x24]
- adds r3, r1
- strh r3, [r2, 0x24]
- ldrb r3, [r0, 0x9]
- lsls r2, r3, 4
- adds r2, r3
- lsls r2, 2
- adds r2, r4
- ldrh r3, [r2, 0x24]
- adds r3, r1
- strh r3, [r2, 0x24]
- ldrb r2, [r0, 0xC]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r4
- ldrh r2, [r0, 0x24]
- adds r2, r1
- strh r2, [r0, 0x24]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3C0C
-
- thumb_func_start sub_81B3C60
-sub_81B3C60: @ 81B3C60
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r4, r1, r0
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _081B3C8E
- ldr r2, =gUnknown_0203CEDC
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- lsls r1, 4
- ldr r0, [r2]
- adds r0, r1
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- bl sub_81B3C0C
-_081B3C8E:
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _081B3CAC
- ldr r2, =gUnknown_0203CEDC
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0xA
- ldrsb r1, [r0, r1]
- lsls r1, 4
- ldr r0, [r2]
- adds r0, r1
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- bl sub_81B3C0C
-_081B3CAC:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3C60
-
- thumb_func_start sub_81B3CC0
-sub_81B3CC0: @ 81B3CC0
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r5, r1, r0
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _081B3D00
- ldr r0, =gUnknown_0203CEF0
- ldr r0, [r0]
- ldrh r1, [r5, 0x10]
- ldrh r2, [r5]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- movs r3, 0x2
- ldrsh r2, [r5, r3]
- movs r4, 0x4
- ldrsh r3, [r5, r4]
- movs r6, 0x6
- ldrsh r4, [r5, r6]
- str r4, [sp]
- movs r6, 0x14
- ldrsh r4, [r5, r6]
- str r4, [sp, 0x4]
- bl sub_81B3B40
-_081B3D00:
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _081B3D2E
- ldr r0, =gUnknown_0203CEF4
- ldr r0, [r0]
- ldrh r1, [r5, 0x12]
- ldrh r2, [r5, 0x8]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- movs r3, 0xA
- ldrsh r2, [r5, r3]
- movs r4, 0xC
- ldrsh r3, [r5, r4]
- movs r6, 0xE
- ldrsh r4, [r5, r6]
- str r4, [sp]
- movs r6, 0x16
- ldrsh r4, [r5, r6]
- str r4, [sp, 0x4]
- bl sub_81B3B40
-_081B3D2E:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3CC0
-
- thumb_func_start sub_81B3D48
-sub_81B3D48: @ 81B3D48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r7, r0, 3
- ldr r0, =gTasks + 0x8
- mov r8, r0
- adds r6, r7, r0
- adds r0, r4, 0
- bl sub_81B3CC0
- adds r0, r4, 0
- bl sub_81B3C60
- ldrh r1, [r6, 0x14]
- ldrh r2, [r6, 0x10]
- adds r1, r2
- strh r1, [r6, 0x10]
- ldrh r0, [r6, 0x16]
- ldrh r3, [r6, 0x12]
- adds r0, r3
- strh r0, [r6, 0x12]
- add r2, sp, 0x8
- ldrh r0, [r6]
- adds r0, r1
- strh r0, [r2]
- adds r1, r2, 0
- ldrh r0, [r6, 0x12]
- ldrh r3, [r6, 0x8]
- adds r2, r0, r3
- strh r2, [r1, 0x2]
- adds r0, r1, 0
- ldrh r0, [r0]
- cmp r0, 0x21
- bls _081B3E3A
- lsls r0, r2, 16
- lsrs r0, 16
- cmp r0, 0x21
- bls _081B3E3A
- movs r1, 0x14
- ldrsh r0, [r6, r1]
- negs r0, r0
- strh r0, [r6, 0x14]
- movs r2, 0x16
- ldrsh r0, [r6, r2]
- negs r0, r0
- strh r0, [r6, 0x16]
- bl swap_pokemon_and_oams
- ldr r4, =gUnknown_0203CEC8
- ldrb r0, [r4, 0x9]
- bl sub_81B0948
- ldrb r0, [r4, 0xA]
- bl sub_81B0948
- movs r0, 0x9
- ldrsb r0, [r4, r0]
- ldr r5, =gUnknown_0203CEDC
- ldr r1, [r5]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x8]
- bl PutWindowTilemap
- movs r0, 0xA
- ldrsb r0, [r4, r0]
- ldr r1, [r5]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x8]
- bl PutWindowTilemap
- ldr r0, =gUnknown_0203CEF0
- ldr r1, [r0]
- ldrb r2, [r6]
- ldrb r3, [r6, 0x2]
- ldrb r0, [r6, 0x4]
- str r0, [sp]
- ldrb r0, [r6, 0x6]
- str r0, [sp, 0x4]
- movs r0, 0
- bl sub_8199CBC
- ldr r0, =gUnknown_0203CEF4
- ldr r1, [r0]
- ldrb r2, [r6, 0x8]
- ldrb r3, [r6, 0xA]
- ldrb r0, [r6, 0xC]
- str r0, [sp]
- ldrb r0, [r6, 0xE]
- str r0, [sp, 0x4]
- movs r0, 0
- bl sub_8199CBC
- movs r0, 0x9
- ldrsb r0, [r4, r0]
- ldr r1, [r5]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x8]
- bl ClearWindowTilemap
- movs r0, 0xA
- ldrsb r0, [r4, r0]
- ldr r1, [r5]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x8]
- bl ClearWindowTilemap
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, =sub_81B3E60
- str r1, [r0]
-_081B3E3A:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B3D48
-
- thumb_func_start sub_81B3E60
-sub_81B3E60: @ 81B3E60
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- adds r0, r6, 0
- bl sub_81B3CC0
- adds r0, r6, 0
- bl sub_81B3C60
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081B3EE4
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _081B3EE4
- ldr r5, =gUnknown_0203CEC8
- movs r0, 0x9
- ldrsb r0, [r5, r0]
- ldr r4, =gUnknown_0203CEDC
- ldr r1, [r4]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x8]
- bl PutWindowTilemap
- movs r0, 0xA
- ldrsb r0, [r5, r0]
- ldr r1, [r4]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x8]
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gUnknown_0203CEF0
- ldr r0, [r0]
- bl Free
- ldr r0, =gUnknown_0203CEF4
- ldr r0, [r0]
- bl Free
- adds r0, r6, 0
- bl sub_81B407C
- b _081B3F08
- .pool
-_081B3EE4:
- ldrh r1, [r4, 0x14]
- ldrh r0, [r4, 0x10]
- adds r1, r0
- strh r1, [r4, 0x10]
- ldrh r0, [r4, 0x16]
- ldrh r2, [r4, 0x12]
- adds r0, r2
- strh r0, [r4, 0x12]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0
- bne _081B3EFE
- strh r1, [r4, 0x14]
-_081B3EFE:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081B3F08
- strh r0, [r4, 0x16]
-_081B3F08:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81B3E60
-
- thumb_func_start oamt_swap_pos
-oamt_swap_pos: @ 81B3F10
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- ldrb r3, [r0]
- ldrb r2, [r1]
- strb r2, [r0]
- strb r3, [r1]
- ldr r5, =gSprites
- ldrb r2, [r0]
- lsls r3, r2, 4
- adds r3, r2
- lsls r3, 2
- adds r3, r5
- ldrh r6, [r3, 0x20]
- ldrh r2, [r3, 0x22]
- mov r8, r2
- ldrh r2, [r3, 0x24]
- mov r9, r2
- ldrh r2, [r3, 0x26]
- mov r10, r2
- ldrb r4, [r1]
- lsls r2, r4, 4
- adds r2, r4
- lsls r2, 2
- adds r2, r5
- ldrh r2, [r2, 0x20]
- strh r2, [r3, 0x20]
- ldrb r2, [r0]
- lsls r3, r2, 4
- adds r3, r2
- lsls r3, 2
- adds r3, r5
- ldrb r4, [r1]
- lsls r2, r4, 4
- adds r2, r4
- lsls r2, 2
- adds r2, r5
- ldrh r2, [r2, 0x22]
- strh r2, [r3, 0x22]
- ldrb r2, [r0]
- lsls r3, r2, 4
- adds r3, r2
- lsls r3, 2
- adds r3, r5
- ldrb r4, [r1]
- lsls r2, r4, 4
- adds r2, r4
- lsls r2, 2
- adds r2, r5
- ldrh r2, [r2, 0x24]
- strh r2, [r3, 0x24]
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- ldrb r3, [r1]
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- adds r0, r5
- ldrh r0, [r0, 0x26]
- strh r0, [r2, 0x26]
- ldrb r2, [r1]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r5
- strh r6, [r0, 0x20]
- ldrb r2, [r1]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r5
- mov r2, r8
- strh r2, [r0, 0x22]
- ldrb r2, [r1]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r5
- mov r2, r9
- strh r2, [r0, 0x24]
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r10
- strh r1, [r0, 0x26]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end oamt_swap_pos
-
- thumb_func_start swap_pokemon_and_oams
-swap_pokemon_and_oams: @ 81B3FDC
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r1, =gUnknown_0203CEDC
- ldr r2, =gUnknown_0203CEC8
- movs r3, 0x9
- ldrsb r3, [r2, r3]
- lsls r0, r3, 4
- ldr r1, [r1]
- adds r0, r1, r0
- str r0, [sp]
- ldrb r2, [r2, 0xA]
- lsls r2, 24
- asrs r2, 24
- lsls r0, r2, 4
- adds r0, r1, r0
- str r0, [sp, 0x4]
- movs r1, 0x64
- adds r4, r3, 0
- muls r4, r1
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r5, r2, 0
- muls r5, r1
- adds r5, r0
- movs r0, 0x64
- bl Alloc
- adds r6, r0, 0
- adds r1, r4, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r6, 0
- bl Free
- ldr r0, [sp]
- adds r0, 0xB
- ldr r1, [sp, 0x4]
- adds r1, 0xB
- bl oamt_swap_pos
- ldr r0, [sp]
- adds r0, 0xA
- ldr r1, [sp, 0x4]
- adds r1, 0xA
- bl oamt_swap_pos
- ldr r0, [sp]
- adds r0, 0x9
- ldr r1, [sp, 0x4]
- adds r1, 0x9
- bl oamt_swap_pos
- ldr r0, [sp]
- adds r0, 0xC
- ldr r1, [sp, 0x4]
- adds r1, 0xC
- bl oamt_swap_pos
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end swap_pokemon_and_oams
-
- thumb_func_start sub_81B407C
-sub_81B407C: @ 81B407C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- adds r0, 0xD
- bl sub_81B302C
- ldr r4, =gUnknown_0203CEC8
- movs r0, 0
- strb r0, [r4, 0xB]
- ldrb r0, [r4, 0x9]
- movs r1, 0
- bl sub_81B0FCC
- ldrb r0, [r4, 0xA]
- strb r0, [r4, 0x9]
- ldrb r0, [r4, 0xA]
- movs r1, 0x1
- bl sub_81B0FCC
- movs r0, 0
- bl display_pokemon_menu_message
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1370
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B407C
-
- thumb_func_start brm_cancel_1
-brm_cancel_1: @ 81B40D4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x6
- bne _081B4110
- movs r0, 0xF
- bl display_pokemon_menu_message
- b _081B4116
- .pool
-_081B4110:
- movs r0, 0
- bl display_pokemon_menu_message
-_081B4116:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1370
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end brm_cancel_1
-
- thumb_func_start sub_81B4134
-sub_81B4134: @ 81B4134
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x5
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- ldr r0, =gPlayerParty
- ldr r1, =gUnknown_0203CEC8
- ldrb r1, [r1, 0x9]
- movs r2, 0x8
- bl sub_81B33B4
- movs r0, 0x1
- bl sub_81B31B0
- movs r0, 0x18
- bl display_pokemon_menu_message
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0xFF
- strh r1, [r0, 0x8]
- ldr r1, =sub_81B3730
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4134
-
- thumb_func_start sub_81B4198
-sub_81B4198: @ 81B4198
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- ldr r0, =sub_81B41C4
- str r0, [r1, 0x4]
- adds r0, r4, 0
- bl sub_81B12C0
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4198
-
- thumb_func_start sub_81B41C4
-sub_81B41C4: @ 81B41C4
- push {lr}
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _081B41E0
- ldr r2, =c2_8123744
- movs r0, 0x2
- movs r1, 0x5
- bl GoToBagMenu
- b _081B41E8
- .pool
-_081B41E0:
- ldr r1, =c2_8123744
- movs r0, 0x2
- bl sub_81C4F98
-_081B41E8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B41C4
-
- thumb_func_start c2_8123744
-c2_8123744: @ 81B41F0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r6, =gSpecialVar_ItemId
- ldrh r0, [r6]
- cmp r0, 0
- bne _081B4224
- ldr r3, =gUnknown_0203CEC8
- ldrb r0, [r3, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r3, 0xB]
- movs r1, 0x7F
- str r1, [sp]
- ldr r1, =sub_81B36FC
- str r1, [sp, 0x4]
- ldr r1, [r3]
- b _081B425A
- .pool
-_081B4224:
- ldr r4, =gUnknown_0203CEFC
- ldr r5, =gUnknown_0203CEC8
- movs r0, 0x9
- ldrsb r0, [r5, r0]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r7, =gPlayerParty
- adds r0, r7
- movs r1, 0xC
- bl GetMonData
- strh r0, [r4]
- lsls r0, 16
- cmp r0, 0
- beq _081B4278
- ldrb r0, [r5, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r5, 0xB]
- movs r1, 0x7F
- str r1, [sp]
- ldr r1, =sub_81B4350
- str r1, [sp, 0x4]
- ldr r1, [r5]
-_081B425A:
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl sub_81B0038
- b _081B42C0
- .pool
-_081B4278:
- ldrh r0, [r6]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081B42A4
- ldrh r0, [r6]
- movs r1, 0x1
- bl RemoveBagItem
- movs r0, 0x9
- ldrsb r0, [r5, r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- ldrh r1, [r6]
- bl sub_81B1DB8
- bl sub_81B452C
- b _081B42C0
-_081B42A4:
- ldrb r0, [r5, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r5, 0xB]
- movs r1, 0x7F
- str r1, [sp]
- ldr r1, =sub_81B42D0
- str r1, [sp, 0x4]
- ldr r1, [r5]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl sub_81B0038
-_081B42C0:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_8123744
-
- thumb_func_start sub_81B42D0
-sub_81B42D0: @ 81B42D0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B432C
- ldr r0, =gSpecialVar_ItemId
- ldrh r4, [r0]
- ldr r0, =gUnknown_0203CEC8
- mov r8, r0
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl sub_81B1C84
- mov r1, r8
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- muls r0, r6
- adds r0, r5
- adds r1, r4, 0
- bl sub_81B1DB8
- adds r0, r4, 0
- movs r1, 0x1
- bl RemoveBagItem
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B469C
- str r1, [r0]
-_081B432C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B42D0
-
- thumb_func_start sub_81B4350
-sub_81B4350: @ 81B4350
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B4388
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gUnknown_0203CEFC
- ldrh r1, [r1]
- movs r2, 0x1
- bl sub_81B1D1C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B43A8
- str r1, [r0]
-_081B4388:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4350
-
- thumb_func_start sub_81B43A8
-sub_81B43A8: @ 81B43A8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B43CC
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B43DC
- str r0, [r1]
-_081B43CC:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B43A8
-
- thumb_func_start sub_81B43DC
-sub_81B43DC: @ 81B43DC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B4402
- cmp r1, 0
- bgt _081B43FC
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B44D8
- b _081B44EC
-_081B43FC:
- cmp r1, 0x1
- beq _081B44DE
- b _081B44EC
-_081B4402:
- ldr r5, =gSpecialVar_ItemId
- ldrh r0, [r5]
- movs r1, 0x1
- bl RemoveBagItem
- ldr r6, =gUnknown_0203CEFC
- ldrh r0, [r6]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- bne _081B4458
- ldrh r0, [r5]
- movs r1, 0x1
- bl AddBagItem
- ldrh r0, [r6]
- bl pokemon_item_not_removed
- ldr r0, =gStringVar4
- movs r1, 0
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- str r1, [r0]
- b _081B44EC
- .pool
-_081B4458:
- ldrh r0, [r5]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081B4498
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldrh r1, [r5]
- bl sub_81B1DB8
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B44FC
- str r1, [r0]
- b _081B44EC
- .pool
-_081B4498:
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldrh r1, [r5]
- bl sub_81B1DB8
- ldrh r0, [r5]
- ldrh r1, [r6]
- movs r2, 0x1
- bl sub_81B1D68
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B469C
- str r1, [r0]
- b _081B44EC
- .pool
-_081B44D8:
- movs r0, 0x5
- bl PlaySE
-_081B44DE:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1C1C
- str r0, [r1]
-_081B44EC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B43DC
-
- thumb_func_start sub_81B44FC
-sub_81B44FC: @ 81B44FC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B451C
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- ldr r0, =sub_81B452C
- str r0, [r1, 0x4]
- adds r0, r4, 0
- bl sub_81B12C0
-_081B451C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B44FC
-
- thumb_func_start sub_81B452C
-sub_81B452C: @ 81B452C
- push {lr}
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- ldr r0, =0x00002be0
- adds r2, r0
- ldr r1, [r1]
- adds r1, r2
- ldr r2, =sub_81B4578
- movs r0, 0x4
- movs r3, 0x3
- bl sub_811A20C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B452C
-
- thumb_func_start sub_81B4578
-sub_81B4578: @ 81B4578
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r6, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r6, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r0, =gSpecialVar_Result
- ldrh r7, [r0]
- cmp r7, 0
- bne _081B45F8
- adds r0, r5, 0
- bl TakeMailFromMon
- ldr r4, =gUnknown_0203CEFC
- adds r0, r5, 0
- movs r1, 0xC
- adds r2, r4, 0
- bl SetMonData
- ldrh r0, [r4]
- movs r1, 0x1
- bl RemoveBagItem
- mov r0, r8
- movs r1, 0x1
- bl AddBagItem
- ldrb r0, [r6, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r6, 0xB]
- str r7, [sp]
- ldr r1, =sub_81B36FC
- str r1, [sp, 0x4]
- ldr r1, [r6]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl sub_81B0038
- b _081B4614
- .pool
-_081B45F8:
- ldrb r0, [r6, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r6, 0xB]
- movs r1, 0x7F
- str r1, [sp]
- ldr r1, =sub_81B4624
- str r1, [sp, 0x4]
- ldr r1, [r6]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl sub_81B0038
-_081B4614:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4578
-
- thumb_func_start sub_81B4624
-sub_81B4624: @ 81B4624
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B468A
- ldr r1, =gUnknown_0203CEFC
- ldrh r0, [r1]
- cmp r0, 0
- bne _081B4670
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gSpecialVar_ItemId
- ldrh r1, [r1]
- movs r2, 0
- movs r3, 0
- bl sub_81B1C84
- b _081B467C
- .pool
-_081B4670:
- ldr r0, =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldrh r1, [r1]
- movs r2, 0
- bl sub_81B1D68
-_081B467C:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B469C
- str r0, [r1]
-_081B468A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4624
-
- thumb_func_start sub_81B469C
-sub_81B469C: @ 81B469C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r4, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r6, r1, r0
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B471C
- ldr r5, =gUnknown_0203CEDC
- movs r0, 0x9
- ldrsb r0, [r4, r0]
- lsls r0, 4
- ldr r1, [r5]
- adds r1, r0
- adds r0, r6, 0
- bl sub_81B5C94
- ldrb r1, [r4, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0xC
- bne _081B4716
- adds r0, r6, 0
- movs r1, 0xC
- bl GetMonData
- cmp r0, 0
- beq _081B4704
- movs r0, 0x9
- ldrsb r0, [r4, r0]
- lsls r0, 4
- ldr r1, [r5]
- adds r1, r0
- movs r0, 0xB
- movs r2, 0x1
- bl sub_81B2FA8
- b _081B4716
- .pool
-_081B4704:
- movs r0, 0x9
- ldrsb r0, [r4, r0]
- lsls r0, 4
- ldr r1, [r5]
- adds r1, r0
- movs r0, 0xC
- movs r2, 0x1
- bl sub_81B2FA8
-_081B4716:
- adds r0, r7, 0
- bl sub_81B1C1C
-_081B471C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B469C
-
- thumb_func_start sub_81B4724
-sub_81B4724: @ 81B4724
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- movs r0, 0x5
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- adds r0, r5, 0
- bl sub_81B1E00
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081B4788
- cmp r0, 0x1
- beq _081B47AC
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x1
- bl sub_81B1CD0
- b _081B47BA
- .pool
-_081B4788:
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnNotHolding
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- b _081B47B4
- .pool
-_081B47AC:
- adds r0, r6, 0
- bl pokemon_item_not_removed
- ldr r0, =gStringVar4
-_081B47B4:
- movs r1, 0x1
- bl sub_81B1B5C
-_081B47BA:
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B469C
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4724
-
- thumb_func_start sub_81B47E0
-sub_81B47E0: @ 81B47E0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r7, r1, r0
- adds r0, r7, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- movs r0, 0x5
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- cmp r5, 0
- bne _081B4864
- ldr r1, =gStringVar1
- adds r0, r7, 0
- bl GetMonNickname
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnNotHolding
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B469C
- b _081B488A
- .pool
-_081B4864:
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl CopyItemName
- ldr r4, =gStringVar4
- ldr r1, =gText_ThrowAwayItem
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B48A8
-_081B488A:
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B47E0
-
- thumb_func_start sub_81B48A8
-sub_81B48A8: @ 81B48A8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B48CC
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B48DC
- str r0, [r1]
-_081B48CC:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B48A8
-
- thumb_func_start sub_81B48DC
-sub_81B48DC: @ 81B48DC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B491A
- cmp r1, 0
- bgt _081B4914
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B4964
- b _081B4978
- .pool
-_081B4914:
- cmp r1, 0x1
- beq _081B496A
- b _081B4978
-_081B491A:
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gStringVar1
- bl CopyItemName
- ldr r4, =gStringVar4
- ldr r1, =gText_ItemThrownAway
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B4988
- str r1, [r0]
- b _081B4978
- .pool
-_081B4964:
- movs r0, 0x5
- bl PlaySE
-_081B496A:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1C1C
- str r0, [r1]
-_081B4978:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B48DC
-
- thumb_func_start sub_81B4988
-sub_81B4988: @ 81B4988
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r6, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r6, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B49EC
- movs r1, 0
- mov r0, sp
- strh r1, [r0]
- adds r0, r5, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- ldr r4, =gUnknown_0203CEDC
- movs r0, 0x9
- ldrsb r0, [r6, r0]
- lsls r0, 4
- ldr r1, [r4]
- adds r1, r0
- adds r0, r5, 0
- bl sub_81B5C94
- movs r0, 0x9
- ldrsb r0, [r6, r0]
- lsls r0, 4
- ldr r1, [r4]
- adds r1, r0
- movs r0, 0xC
- movs r2, 0x1
- bl sub_81B2FA8
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- str r1, [r0]
-_081B49EC:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4988
-
- thumb_func_start sub_81B4A08
-sub_81B4A08: @ 81B4A08
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x5
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- ldr r0, =gPlayerParty
- ldr r1, =gUnknown_0203CEC8
- ldrb r1, [r1, 0x9]
- movs r2, 0x9
- bl sub_81B33B4
- movs r0, 0x2
- bl sub_81B31B0
- movs r0, 0x19
- bl display_pokemon_menu_message
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0xFF
- strh r1, [r0, 0x8]
- ldr r1, =sub_81B3730
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4A08
-
- thumb_func_start sub_81B4A6C
-sub_81B4A6C: @ 81B4A6C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- ldr r0, =sub_81B4A98
- str r0, [r1, 0x4]
- adds r0, r4, 0
- bl sub_81B12C0
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4A6C
-
- thumb_func_start sub_81B4A98
-sub_81B4A98: @ 81B4A98
- push {lr}
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- ldr r2, =gSaveBlock1Ptr
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, =0x00002be0
- adds r1, r0
- ldr r0, [r2]
- adds r0, r1
- ldr r1, =sub_81B4AE0
- movs r2, 0x1
- bl ReadMail
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4A98
-
- thumb_func_start sub_81B4AE0
-sub_81B4AE0: @ 81B4AE0
- push {lr}
- sub sp, 0xC
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r3, =gUnknown_0203CEC8
- ldrb r0, [r3, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r3, 0xB]
- movs r1, 0x15
- str r1, [sp]
- ldr r1, =sub_81B36FC
- str r1, [sp, 0x4]
- ldr r1, [r3]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4AE0
-
- thumb_func_start brm_take_2
-brm_take_2: @ 81B4B20
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- ldr r5, =gUnknown_0203CEC4
- ldr r0, [r5]
- adds r0, 0xD
- bl sub_81B302C
- ldr r0, [r5]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, =gText_SendMailToPC
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B4B6C
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end brm_take_2
-
- thumb_func_start sub_81B4B6C
-sub_81B4B6C: @ 81B4B6C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B4B90
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B4BA0
- str r0, [r1]
-_081B4B90:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4B6C
-
- thumb_func_start sub_81B4BA0
-sub_81B4BA0: @ 81B4BA0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B4BC6
- cmp r1, 0
- bgt _081B4BC0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B4C30
- b _081B4C4C
-_081B4BC0:
- cmp r1, 0x1
- beq _081B4C36
- b _081B4C4C
-_081B4BC6:
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- bl TakeMailFromMon2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _081B4C0C
- ldr r0, =gText_MailSentToPC
- movs r1, 0
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B469C
- b _081B4C4A
- .pool
-_081B4C0C:
- ldr r0, =gText_PCMailboxFull
- movs r1, 0
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- b _081B4C4A
- .pool
-_081B4C30:
- movs r0, 0x5
- bl PlaySE
-_081B4C36:
- ldr r0, =gText_MailMessageWillBeLost
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B4C60
-_081B4C4A:
- str r1, [r0]
-_081B4C4C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4BA0
-
- thumb_func_start sub_81B4C60
-sub_81B4C60: @ 81B4C60
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B4C84
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B4C94
- str r0, [r1]
-_081B4C84:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4C60
-
- thumb_func_start sub_81B4C94
-sub_81B4C94: @ 81B4C94
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B4CBE
- cmp r1, 0
- bgt _081B4CB8
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B4D50
- b _081B4D64
-_081B4CB8:
- cmp r1, 0x1
- beq _081B4D56
- b _081B4D64
-_081B4CBE:
- ldr r0, =gUnknown_0203CEC8
- mov r8, r0
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- movs r7, 0x64
- muls r0, r7
- ldr r6, =gPlayerParty
- adds r0, r6
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B4D24
- mov r1, r8
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- muls r0, r7
- adds r0, r6
- bl TakeMailFromMon
- ldr r0, =gText_MailTakenFromPkmn
- movs r1, 0
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B469C
- str r1, [r0]
- b _081B4D64
- .pool
-_081B4D24:
- adds r0, r4, 0
- bl pokemon_item_not_removed
- ldr r0, =gStringVar4
- movs r1, 0
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- str r1, [r0]
- b _081B4D64
- .pool
-_081B4D50:
- movs r0, 0x5
- bl PlaySE
-_081B4D56:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1C1C
- str r0, [r1]
-_081B4D64:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4C94
-
- thumb_func_start sub_81B4D78
-sub_81B4D78: @ 81B4D78
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r5, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r5, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r6, =gPlayerParty
- adds r7, r0, r6
- movs r0, 0x5
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- ldrb r4, [r5, 0x9]
- adds r0, r7, 0
- bl sub_81B353C
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_81B33B4
- ldrb r1, [r5, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0xC
- beq _081B4DE4
- movs r0, 0
- bl sub_81B31B0
- movs r0, 0x15
- bl display_pokemon_menu_message
- b _081B4E02
- .pool
-_081B4DE4:
- movs r0, 0x1
- bl sub_81B31B0
- adds r0, r7, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gStringVar2
- bl CopyItemName
- movs r0, 0x1A
- bl display_pokemon_menu_message
-_081B4E02:
- ldr r1, =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0xFF
- strh r1, [r0, 0x8]
- ldr r1, =sub_81B3730
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4D78
-
- thumb_func_start brm_shift_sendout
-brm_shift_sendout: @ 81B4E2C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r5, =gUnknown_0203CEC4
- ldr r0, [r5]
- adds r0, 0xC
- bl sub_81B302C
- bl sub_81B8A7C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B4E5C
- adds r0, r4, 0
- bl sub_81B12C0
- b _081B4E7A
- .pool
-_081B4E5C:
- ldr r0, [r5]
- adds r0, 0xD
- bl sub_81B302C
- ldr r0, =gStringVar4
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- str r1, [r0]
-_081B4E7A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end brm_shift_sendout
-
- thumb_func_start sub_81B4E8C
-sub_81B4E8C: @ 81B4E8C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- bl sub_81B8830
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- cmp r5, r6
- bcs _081B4F36
- ldr r2, =gUnknown_0203CEC8
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- mov r8, r0
-_081B4EC6:
- ldr r0, =gSelectedOrderFromParty
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0
- bne _081B4F2C
- movs r0, 0x5
- str r2, [sp]
- bl PlaySE
- ldr r2, [sp]
- ldrb r0, [r2, 0x9]
- adds r0, 0x1
- strb r0, [r4]
- adds r0, r5, 0x2
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203CEDC
- ldrb r2, [r2, 0x9]
- lsls r2, 24
- asrs r2, 24
- lsls r2, 4
- ldr r1, [r1]
- adds r1, r2
- movs r2, 0x1
- bl sub_81B2FA8
- subs r0, r6, 0x1
- cmp r5, r0
- bne _081B4F04
- bl sub_81B4F88
-_081B4F04:
- movs r0, 0
- bl display_pokemon_menu_message
- ldr r0, =sub_81B1370
- mov r1, r8
- str r0, [r1]
- b _081B4F68
- .pool
-_081B4F2C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r6
- bcc _081B4EC6
-_081B4F36:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r4, =gStringVar4
- ldr r1, =gText_NoMoreThanVar1Pkmn
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0x20
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- str r1, [r0]
-_081B4F68:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4E8C
-
- thumb_func_start sub_81B4F88
-sub_81B4F88: @ 81B4F88
- push {r4,lr}
- ldr r4, =gUnknown_0203CEC8
- ldrb r0, [r4, 0x9]
- movs r1, 0
- bl sub_81B0FCC
- movs r0, 0x6
- strb r0, [r4, 0x9]
- movs r1, 0x1
- bl sub_81B0FCC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4F88
-
- thumb_func_start sub_81B4FA8
-sub_81B4FA8: @ 81B4FA8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r0, 0x5
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- bl sub_81B8830
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _081B502A
- ldr r6, =gSelectedOrderFromParty
- subs r2, r5, 0x1
- adds r7, r6, 0
- ldr r3, =gUnknown_0203CEC8
-_081B4FE2:
- adds r0, r4, r6
- ldrb r1, [r0]
- movs r0, 0x9
- ldrsb r0, [r3, r0]
- adds r0, 0x1
- cmp r1, r0
- bne _081B5020
- adds r0, r4, 0
- adds r4, r2, 0
- cmp r0, r4
- bge _081B500C
- adds r3, r7, 0
-_081B4FFA:
- adds r2, r0, r3
- adds r1, r0, 0x1
- adds r0, r1, r3
- ldrb r0, [r0]
- strb r0, [r2]
- lsls r1, 24
- lsrs r0, r1, 24
- cmp r0, r4
- blt _081B4FFA
-_081B500C:
- adds r1, r0, r6
- movs r0, 0
- strb r0, [r1]
- b _081B502A
- .pool
-_081B5020:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _081B4FE2
-_081B502A:
- ldr r6, =gUnknown_0203CEDC
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 4
- ldr r1, [r6]
- adds r1, r0
- movs r0, 0x1
- movs r2, 0x1
- bl sub_81B2FA8
- movs r4, 0
- subs r5, 0x1
- mov r0, r8
- lsls r7, r0, 2
- cmp r4, r5
- bge _081B5078
-_081B504E:
- ldr r0, =gSelectedOrderFromParty
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _081B506E
- adds r0, r4, 0x2
- lsls r0, 24
- lsrs r0, 24
- ldrb r2, [r1]
- lsls r2, 4
- subs r2, 0x10
- ldr r1, [r6]
- adds r1, r2
- movs r2, 0x1
- bl sub_81B2FA8
-_081B506E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- blt _081B504E
-_081B5078:
- movs r0, 0
- bl display_pokemon_menu_message
- ldr r0, =gTasks
- mov r2, r8
- adds r1, r7, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1370
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B4FA8
-
- thumb_func_start sub_81B50AC
-sub_81B50AC: @ 81B50AC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81B12C0
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B50AC
-
- thumb_func_start sub_81B50C8
-sub_81B50C8: @ 81B50C8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gUnknown_0203CEC8
- mov r9, r0
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0x41
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- mov r1, r9
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r4
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r1, r9
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r4
- movs r1, 0x50
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_800F7DC
- ldr r0, [r0]
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_807A8D0
- cmp r0, 0x1
- beq _081B515C
- cmp r0, 0x2
- beq _081B5170
- movs r0, 0x5
- bl PlaySE
- adds r0, r7, 0
- bl sub_81B12C0
- b _081B51B0
- .pool
-_081B515C:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnCantBeTradedNow
- bl StringExpandPlaceholders
- b _081B5178
- .pool
-_081B5170:
- ldr r0, =gStringVar4
- ldr r1, =gText_EggCantBeTradedNow
- bl StringExpandPlaceholders
-_081B5178:
- movs r0, 0x20
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- ldr r4, =gStringVar4
- ldr r1, =gText_PauseUntilPress
- adds r0, r4, 0
- bl StringAppend
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- str r1, [r0]
-_081B51B0:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B50C8
-
- thumb_func_start brm_trade_1
-brm_trade_1: @ 81B51D4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gUnknown_0203CEC8
- mov r8, r0
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- movs r6, 0x64
- muls r0, r6
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0x41
- bl GetMonData
- mov r9, r0
- mov r1, r9
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- mov r1, r8
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- muls r0, r6
- adds r0, r4
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r1, r8
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- muls r0, r6
- adds r0, r4
- movs r1, 0x50
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_800F7DC
- ldr r0, [r0]
- ldr r1, =gUnknown_02022C38
- ldr r1, [r1]
- ldr r2, =gUnknown_02022C3C
- ldrh r3, [r2]
- ldr r2, =gUnknown_02022C3E
- ldrb r2, [r2]
- str r2, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- mov r2, r9
- bl sub_807A7E0
- cmp r0, 0
- beq _081B52C8
- ldr r5, =gStringVar4
- ldr r1, =gUnknown_08615E0C
- subs r0, 0x1
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x20
- bl PlaySE
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- ldr r1, =gText_PauseUntilPress
- adds r0, r5, 0
- bl StringAppend
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- str r1, [r0]
- b _081B52D4
- .pool
-_081B52C8:
- movs r0, 0x5
- bl PlaySE
- adds r0, r7, 0
- bl sub_81B12C0
-_081B52D4:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end brm_trade_1
-
- thumb_func_start sub_81B52E4
-sub_81B52E4: @ 81B52E4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r4]
- adds r0, 0xD
- bl sub_81B302C
- ldr r0, =gPlayerParty
- ldr r1, =gUnknown_0203CEC8
- ldrb r1, [r1, 0x9]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl sub_807A918
- cmp r0, 0x2
- beq _081B5340
- cmp r0, 0x2
- bgt _081B5328
- cmp r0, 0x1
- beq _081B532E
- b _081B5368
- .pool
-_081B5328:
- cmp r0, 0x3
- beq _081B5354
- b _081B5368
-_081B532E:
- ldr r0, =gStringVar4
- ldr r1, =gText_OnlyPkmnForBattle
- bl StringExpandPlaceholders
- b _081B53C0
- .pool
-_081B5340:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnCantBeTradedNow
- bl StringExpandPlaceholders
- b _081B53C0
- .pool
-_081B5354:
- ldr r0, =gStringVar4
- ldr r1, =gText_EggCantBeTradedNow
- bl StringExpandPlaceholders
- b _081B53C0
- .pool
-_081B5368:
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r4, =gStringVar4
- ldr r1, =gJPText_PutVar1IntoSpinner
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B53FC
- b _081B53E4
- .pool
-_081B53C0:
- movs r0, 0x20
- bl PlaySE
- ldr r4, =gStringVar4
- ldr r1, =gText_PauseUntilPress
- adds r0, r4, 0
- bl StringAppend
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
-_081B53E4:
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B52E4
-
- thumb_func_start sub_81B53FC
-sub_81B53FC: @ 81B53FC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B5420
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B5430
- str r0, [r1]
-_081B5420:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B53FC
-
- thumb_func_start sub_81B5430
-sub_81B5430: @ 81B5430
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B5456
- cmp r1, 0
- bgt _081B5450
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B545E
- b _081B546A
-_081B5450:
- cmp r1, 0x1
- beq _081B5464
- b _081B546A
-_081B5456:
- adds r0, r4, 0
- bl sub_81B12C0
- b _081B546A
-_081B545E:
- movs r0, 0x5
- bl PlaySE
-_081B5464:
- adds r0, r4, 0
- bl sub_81B1C1C
-_081B546A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B5430
-
- thumb_func_start sub_81B5470
-sub_81B5470: @ 81B5470
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- bl Menu_GetCursorPos
- ldr r5, =gUnknown_0203CEC4
- ldr r1, [r5]
- lsls r0, 24
- lsrs r0, 24
- adds r1, 0xF
- adds r1, r0
- ldrb r0, [r1]
- subs r0, 0x13
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r1, =gUnknown_08615D9C
- lsls r0, r4, 3
- adds r7, r0, r1
- ldr r0, [r7]
- cmp r0, 0
- bne _081B54A2
- b _081B5664
-_081B54A2:
- ldr r0, [r5]
- adds r0, 0xC
- bl sub_81B302C
- ldr r0, [r5]
- adds r0, 0xD
- bl sub_81B302C
- bl sub_81221AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B54C6
- bl InUnionRoom
- cmp r0, 0x1
- bne _081B54E8
-_081B54C6:
- adds r0, r4, 0
- subs r0, 0xB
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _081B54E4
- movs r0, 0xD
- bl display_pokemon_menu_message
- b _081B5656
- .pool
-_081B54E4:
- ldrb r0, [r7, 0x4]
- b _081B5652
-_081B54E8:
- cmp r4, 0x7
- bhi _081B5524
- ldr r1, =0x00000867
- adds r0, r4, r1
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B5524
- ldr r0, =gText_CantUseUntilNewBadge
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B1C1C
- str r1, [r0]
- b _081B5664
- .pool
-_081B5524:
- ldr r1, =gUnknown_08615D9C
- lsls r0, r4, 3
- adds r5, r0, r1
- ldr r0, [r5]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B553A
- b _081B563C
-_081B553A:
- subs r0, r4, 0x5
- cmp r0, 0x7
- bhi _081B5624
- lsls r0, 2
- ldr r1, =_081B5554
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B5554:
- .4byte _081B5614
- .4byte _081B5624
- .4byte _081B5624
- .4byte _081B557C
- .4byte _081B55B8
- .4byte _081B5624
- .4byte _081B5574
- .4byte _081B5574
-_081B5574:
- adds r0, r6, 0
- bl sub_8161560
- b _081B5664
-_081B557C:
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x1C
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x1D]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r1, r0, 0
- ldr r0, =gStringVar1
- ldrb r1, [r1, 0x14]
- bl sub_81245DC
- ldr r0, =gStringVar4
- ldr r1, =gText_ReturnToHealingSpot
- b _081B55E8
- .pool
-_081B55B8:
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x24
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0x25
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r1, r0, 0
- ldr r0, =gStringVar1
- ldrb r1, [r1, 0x14]
- bl sub_81245DC
- ldr r0, =gStringVar4
- ldr r1, =gText_EscapeFromHere
-_081B55E8:
- bl StringExpandPlaceholders
- adds r0, r6, 0
- bl sub_81B5674
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- movs r1, 0x86
- lsls r1, 2
- adds r0, r1
- strh r4, [r0]
- b _081B5664
- .pool
-_081B5614:
- ldr r1, =gUnknown_0203CEC8
- ldr r0, =MCB2_FlyMap
- b _081B5628
- .pool
-_081B5624:
- ldr r1, =gUnknown_0203CEC8
- ldr r0, =CB2_ReturnToField
-_081B5628:
- str r0, [r1]
- adds r0, r6, 0
- bl sub_81B12C0
- b _081B5664
- .pool
-_081B563C:
- cmp r4, 0x1
- beq _081B564A
- cmp r4, 0x4
- bne _081B5650
- bl sub_81B5864
- b _081B5656
-_081B564A:
- bl sub_81B57DC
- b _081B5656
-_081B5650:
- ldrb r0, [r5, 0x4]
-_081B5652:
- bl display_pokemon_menu_message
-_081B5656:
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =task_brm_cancel_1_on_keypad_a_or_b
- str r0, [r1]
-_081B5664:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5470
-
- thumb_func_start sub_81B5674
-sub_81B5674: @ 81B5674
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gStringVar4
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B56A4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5674
-
- thumb_func_start sub_81B56A4
-sub_81B56A4: @ 81B56A4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B56C8
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B56D8
- str r0, [r1]
-_081B56C8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B56A4
-
- thumb_func_start sub_81B56D8
-sub_81B56D8: @ 81B56D8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B56FE
- cmp r1, 0
- bgt _081B56F8
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B5714
- b _081B572A
-_081B56F8:
- cmp r1, 0x1
- beq _081B571A
- b _081B572A
-_081B56FE:
- ldr r1, =gUnknown_0203CEC8
- ldr r0, =CB2_ReturnToField
- str r0, [r1]
- adds r0, r4, 0
- bl sub_81B12C0
- b _081B572A
- .pool
-_081B5714:
- movs r0, 0x5
- bl PlaySE
-_081B571A:
- ldr r0, =gFieldCallback2
- movs r1, 0
- str r1, [r0]
- ldr r0, =gPostMenuFieldCallback
- str r1, [r0]
- adds r0, r4, 0
- bl sub_81B1C1C
-_081B572A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B56D8
-
- thumb_func_start FieldCallback_PrepareFadeInFromMenu
-FieldCallback_PrepareFadeInFromMenu: @ 81B5738
- push {lr}
- bl pal_fill_black
- ldr r0, =task_launch_hm_phase_2
- movs r1, 0x8
- bl CreateTask
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end FieldCallback_PrepareFadeInFromMenu
-
- thumb_func_start task_launch_hm_phase_2
-task_launch_hm_phase_2: @ 81B5750
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsWeatherNotFadingIn
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B577C
- bl brm_get_selected_species
- ldr r1, =gFieldEffectArguments
- lsls r0, 16
- lsrs r0, 16
- str r0, [r1]
- ldr r0, =gPostMenuFieldCallback
- ldr r0, [r0]
- bl _call_via_r0
- adds r0, r4, 0
- bl DestroyTask
-_081B577C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_launch_hm_phase_2
-
- thumb_func_start brm_get_selected_species
-brm_get_selected_species: @ 81B578C
- push {lr}
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end brm_get_selected_species
-
- thumb_func_start task_brm_cancel_1_on_keypad_a_or_b
-task_brm_cancel_1_on_keypad_a_or_b: @ 81B57B4
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081B57CE
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B57D4
-_081B57CE:
- adds r0, r2, 0
- bl brm_cancel_1
-_081B57D4:
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_brm_cancel_1_on_keypad_a_or_b
-
- thumb_func_start sub_81B57DC
-sub_81B57DC: @ 81B57DC
- push {lr}
- ldr r0, =0x00000888
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B57F8
- movs r0, 0xC
- bl display_pokemon_menu_message
- b _081B57FE
- .pool
-_081B57F8:
- movs r0, 0xD
- bl display_pokemon_menu_message
-_081B57FE:
- pop {r0}
- bx r0
- thumb_func_end sub_81B57DC
-
- thumb_func_start hm_surf_run_dp02scr
-hm_surf_run_dp02scr: @ 81B5804
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- movs r0, 0x9
- bl FieldEffectStart
- pop {r0}
- bx r0
- .pool
- thumb_func_end hm_surf_run_dp02scr
-
- thumb_func_start sub_81B5820
-sub_81B5820: @ 81B5820
- push {lr}
- bl PartyHasMonWithSurf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B585C
- bl IsPlayerFacingSurfableFishableWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B585C
- ldr r1, =gFieldCallback2
- ldr r0, =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, =gPostMenuFieldCallback
- ldr r0, =hm_surf_run_dp02scr
- str r0, [r1]
- movs r0, 0x1
- b _081B585E
- .pool
-_081B585C:
- movs r0, 0
-_081B585E:
- pop {r1}
- bx r1
- thumb_func_end sub_81B5820
-
- thumb_func_start sub_81B5864
-sub_81B5864: @ 81B5864
- push {lr}
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _081B587A
- movs r0, 0x9
- bl display_pokemon_menu_message
- b _081B5880
-_081B587A:
- movs r0, 0x8
- bl display_pokemon_menu_message
-_081B5880:
- pop {r0}
- bx r0
- thumb_func_end sub_81B5864
-
- thumb_func_start sub_81B5884
-sub_81B5884: @ 81B5884
- push {lr}
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x17]
- bl Overworld_MapTypeAllowsTeleportAndFly
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B58A0
- movs r0, 0
- b _081B58A2
- .pool
-_081B58A0:
- movs r0, 0x1
-_081B58A2:
- pop {r1}
- bx r1
- thumb_func_end sub_81B5884
-
- thumb_func_start sub_81B58A8
-sub_81B58A8: @ 81B58A8
- push {lr}
- sub sp, 0xC
- movs r0, 0
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =CB2_ReturnToFieldWithOpenMenu
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B58A8
-
- thumb_func_start hm2_waterfall
-hm2_waterfall: @ 81B58D4
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- movs r0, 0x2B
- bl FieldEffectStart
- pop {r0}
- bx r0
- .pool
- thumb_func_end hm2_waterfall
-
- thumb_func_start hm_prepare_waterfall
-hm_prepare_waterfall: @ 81B58F0
- 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 _081B594C
- bl IsPlayerSurfingNorth
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B594C
- ldr r1, =gFieldCallback2
- ldr r0, =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, =gPostMenuFieldCallback
- ldr r0, =hm2_waterfall
- str r0, [r1]
- movs r0, 0x1
- b _081B594E
- .pool
-_081B594C:
- movs r0, 0
-_081B594E:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end hm_prepare_waterfall
-
- thumb_func_start sub_81B5958
-sub_81B5958: @ 81B5958
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- movs r0, 0x2C
- bl FieldEffectStart
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5958
-
- thumb_func_start sub_81B5974
-sub_81B5974: @ 81B5974
- push {lr}
- bl TrySetDiveWarp
- ldr r1, =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1, 0x4]
- cmp r0, 0
- bne _081B5990
- movs r0, 0
- b _081B599E
- .pool
-_081B5990:
- ldr r1, =gFieldCallback2
- ldr r0, =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, =gPostMenuFieldCallback
- ldr r0, =sub_81B5958
- str r0, [r1]
- movs r0, 0x1
-_081B599E:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B5974
-
- thumb_func_start party_menu_icon_anim
-@ void party_menu_icon_anim(struct pokemon *mon, int a2, int a3)
-party_menu_icon_anim: @ 81B59B4
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r7, r1, 0
- adds r4, r2, 0
- movs r6, 0x1
- bl sub_81B1250
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B59EA
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B59EA
- ldr r0, =gUnknown_08616020
- adds r0, r4, r0
- ldrb r1, [r0]
- eors r1, r6
- negs r0, r1
- orrs r0, r1
- lsrs r6, r0, 31
-_081B59EA:
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0
- bl GetMonData
- adds r1, r0, 0
- str r6, [sp]
- adds r0, r4, 0
- adds r2, r7, 0
- movs r3, 0x1
- bl party_menu_link_mon_icon_anim
- ldrb r0, [r7, 0x9]
- adds r1, r5, 0
- bl sub_81B5B38
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_icon_anim
-
- thumb_func_start party_menu_link_mon_icon_anim
-@ void party_menu_link_mon_icon_anim(u16 speciesId, u32 personality, int a3, char a4, int a5)
-party_menu_link_mon_icon_anim: @ 81B5A2C
- push {r4-r7,lr}
- sub sp, 0xC
- adds r6, r1, 0
- adds r4, r2, 0
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r3, 24
- lsrs r7, r3, 24
- cmp r5, 0
- beq _081B5A7A
- ldr r1, =sub_80D3014
- ldr r0, [r4, 0x4]
- ldrb r2, [r0]
- ldrb r3, [r0, 0x1]
- movs r0, 0x4
- str r0, [sp]
- str r6, [sp, 0x4]
- ldr r0, [sp, 0x20]
- str r0, [sp, 0x8]
- adds r0, r5, 0
- bl CreateMonIcon
- strb r0, [r4, 0x9]
- ldr r2, =gSprites
- ldrb r0, [r4, 0x9]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- adds r2, r7, 0
- 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]
-_081B5A7A:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_link_mon_icon_anim
-
- thumb_func_start sub_81B5A8C
-sub_81B5A8C: @ 81B5A8C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- adds r0, r1, 0
- adds r1, r2, 0
- bl GetHPBarLevel
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _081B5AEC
- cmp r0, 0x2
- bgt _081B5AB4
- cmp r0, 0x1
- beq _081B5B04
- b _081B5B1C
-_081B5AB4:
- cmp r0, 0x3
- beq _081B5AD4
- cmp r0, 0x4
- bne _081B5B1C
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0
- bl sub_80D32C8
- b _081B5B2C
- .pool
-_081B5AD4:
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x1
- bl sub_80D32C8
- b _081B5B2C
- .pool
-_081B5AEC:
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x2
- bl sub_80D32C8
- b _081B5B2C
- .pool
-_081B5B04:
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x3
- bl sub_80D32C8
- b _081B5B2C
- .pool
-_081B5B1C:
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x4
- bl sub_80D32C8
-_081B5B2C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5A8C
-
- thumb_func_start sub_81B5B38
-sub_81B5B38: @ 81B5B38
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0x39
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r6, 0
- movs r1, 0x3A
- bl GetMonData
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81B5A8C
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81B5B38
-
- thumb_func_start sub_81B5B6C
-sub_81B5B6C: @ 81B5B6C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- ldr r5, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r6, r0, 2
- adds r2, r6, r5
- movs r7, 0
- movs r3, 0
- strh r3, [r2, 0x2E]
- mov r12, r5
- cmp r1, 0
- bne _081B5BC4
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- cmp r0, 0x10
- bne _081B5BA4
- strh r3, [r2, 0x24]
- ldr r0, =0x0000fffc
- strh r0, [r2, 0x26]
- b _081B5BAA
- .pool
-_081B5BA4:
- ldr r0, =0x0000fffc
- strh r0, [r2, 0x24]
- strh r3, [r2, 0x26]
-_081B5BAA:
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- mov r1, r12
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_81B5C08
- b _081B5BD0
- .pool
-_081B5BC4:
- strh r3, [r2, 0x24]
- strh r3, [r2, 0x26]
- adds r0, r5, 0
- adds r0, 0x1C
- adds r0, r6, r0
- ldr r1, =sub_81B5BDC
-_081B5BD0:
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5B6C
-
- thumb_func_start sub_81B5BDC
-sub_81B5BDC: @ 81B5BDC
- push {r4,lr}
- adds r4, r0, 0
- bl UpdateMonIconFrame
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081B5C02
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081B5C00
- ldr r0, =0x0000fffd
- strh r0, [r4, 0x26]
- b _081B5C02
- .pool
-_081B5C00:
- strh r1, [r4, 0x26]
-_081B5C02:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B5BDC
-
- thumb_func_start sub_81B5C08
-sub_81B5C08: @ 81B5C08
- push {lr}
- bl UpdateMonIconFrame
- pop {r0}
- bx r0
- thumb_func_end sub_81B5C08
-
- thumb_func_start party_menu_held_item_object
-party_menu_held_item_object: @ 81B5C14
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B5C3C
- ldr r0, =gSpriteTemplate_8615EC0
- ldr r2, [r4, 0x4]
- ldrb r1, [r2, 0x2]
- ldrb r2, [r2, 0x3]
- movs r3, 0
- bl CreateSprite
- strb r0, [r4, 0xA]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81B5C94
-_081B5C3C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_held_item_object
-
- thumb_func_start party_menu_link_mon_held_item_object
-party_menu_link_mon_held_item_object: @ 81B5C48
- push {r4,r5,lr}
- adds r4, r2, 0
- lsls r0, 16
- lsls r1, 16
- lsrs r5, r1, 16
- cmp r0, 0
- beq _081B5C84
- ldr r0, =gSpriteTemplate_8615EC0
- ldr r2, [r4, 0x4]
- ldrb r1, [r2, 0x2]
- ldrb r2, [r2, 0x3]
- movs r3, 0
- bl CreateSprite
- strb r0, [r4, 0xA]
- ldr r2, =gSprites
- ldrb r0, [r4, 0xA]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81B5CB0
-_081B5C84:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_link_mon_held_item_object
-
- thumb_func_start sub_81B5C94
-sub_81B5C94: @ 81B5C94
- push {r4,lr}
- adds r4, r1, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl sub_81B5CB0
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B5C94
-
- thumb_func_start sub_81B5CB0
-sub_81B5CB0: @ 81B5CB0
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _081B5CD8
- ldr r2, =gSprites
- ldrb r1, [r4, 0xA]
- 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
- b _081B5D24
- .pool
-_081B5CD8:
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081B5CFC
- ldrb r1, [r4, 0xA]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- b _081B5D0E
- .pool
-_081B5CFC:
- ldrb r1, [r4, 0xA]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
-_081B5D0E:
- ldr r2, =gSprites
- ldrb r1, [r4, 0xA]
- 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
-_081B5D24:
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5CB0
-
- thumb_func_start sub_81B5D30
-sub_81B5D30: @ 81B5D30
- push {lr}
- ldr r0, =gUnknown_08615EB0
- bl LoadSpriteSheet
- ldr r0, =gUnknown_08615EB8
- bl LoadSpritePalette
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5D30
-
- thumb_func_start sub_81B5D4C
-sub_81B5D4C: @ 81B5D4C
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r2, 24
- cmp r2, 0
- beq _081B5D60
- cmp r2, 0x1
- beq _081B5DA8
- b _081B5DE4
-_081B5D60:
- movs r5, 0
- ldrb r0, [r6]
- cmp r5, r0
- bcs _081B5DE4
-_081B5D68:
- movs r0, 0x64
- muls r0, r5
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _081B5D94
- adds r0, r7, r5
- ldrb r4, [r0]
- adds r0, r1, 0
- bl ItemIsMail
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_81B5DF0
-_081B5D94:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrb r0, [r6]
- cmp r5, r0
- bcc _081B5D68
- b _081B5DE4
- .pool
-_081B5DA8:
- movs r5, 0
- b _081B5DDE
-_081B5DAC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _081B5DD8
- adds r0, r5, r7
- ldrb r4, [r0, 0x6]
- adds r0, r1, 0
- bl ItemIsMail
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_81B5DF0
-_081B5DD8:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_081B5DDE:
- ldrb r0, [r6, 0x1]
- cmp r5, r0
- bcc _081B5DAC
-_081B5DE4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5D4C
-
- thumb_func_start sub_81B5DF0
-sub_81B5DF0: @ 81B5DF0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- adds r6, r0, 0
- mov r9, r1
- lsls r6, 24
- lsrs r6, 24
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gSprites
- mov r8, r0
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- add r0, r8
- adds r0, 0x43
- ldrb r3, [r0]
- ldr r0, =gSpriteTemplate_8615EC0
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0xFA
- movs r2, 0xAA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- mov r0, r8
- adds r5, r4, r0
- movs r0, 0x4
- strh r0, [r5, 0x24]
- movs r0, 0xA
- strh r0, [r5, 0x26]
- movs r0, 0x1C
- add r8, r0
- add r4, r8
- ldr r0, =sub_81B5E74
- str r0, [r4]
- strh r6, [r5, 0x3C]
- adds r0, r5, 0
- mov r1, r9
- bl StartSpriteAnim
- ldr r1, [r4]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5DF0
-
- thumb_func_start sub_81B5E74
-sub_81B5E74: @ 81B5E74
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x3C]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r2
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _081B5EA8
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _081B5EC6
- .pool
-_081B5EA8:
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldrh r0, [r2, 0x24]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x26]
- ldrh r2, [r2, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
-_081B5EC6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B5E74
-
- thumb_func_start party_menu_pokeball_object
-party_menu_pokeball_object: @ 81B5ECC
- push {r4,lr}
- adds r4, r1, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B5EEA
- ldr r0, =gSpriteTemplate_8615F08
- ldr r2, [r4, 0x4]
- ldrb r1, [r2, 0x6]
- ldrb r2, [r2, 0x7]
- movs r3, 0x8
- bl CreateSprite
- strb r0, [r4, 0xB]
-_081B5EEA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_pokeball_object
-
- thumb_func_start party_menu_link_mon_pokeball_object
-party_menu_link_mon_pokeball_object: @ 81B5EF4
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 16
- cmp r0, 0
- beq _081B5F24
- ldr r0, =gSpriteTemplate_8615F08
- ldr r2, [r4, 0x4]
- ldrb r1, [r2, 0x6]
- ldrb r2, [r2, 0x7]
- movs r3, 0x8
- bl CreateSprite
- strb r0, [r4, 0xB]
- ldr r2, =gSprites
- ldrb r0, [r4, 0xB]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
-_081B5F24:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_link_mon_pokeball_object
-
- thumb_func_start sub_81B5F34
-sub_81B5F34: @ 81B5F34
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 24
- lsrs r3, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, =gSpriteTemplate_8615F08
- adds r1, r3, 0
- movs r3, 0x8
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r3, [r1, 0x5]
- movs r2, 0xD
- negs r2, r2
- ands r2, r3
- movs r3, 0x8
- orrs r2, r3
- strb r2, [r1, 0x5]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B5F34
-
- thumb_func_start sub_81B5F74
-sub_81B5F74: @ 81B5F74
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 24
- lsrs r3, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, =gSpriteTemplate_8615F78
- adds r1, r3, 0
- movs r3, 0x8
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B5F74
-
- thumb_func_start sub_81B5F98
-sub_81B5F98: @ 81B5F98
- push {lr}
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r2, =gSprites
- adds r0, r2
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5F98
-
- thumb_func_start sub_81B5FBC
-sub_81B5FBC: @ 81B5FBC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- cmp r6, 0
- bne _081B6000
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, =gSprites
- mov r8, r0
- add r4, r8
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- lsls r5, r7, 4
- adds r5, r7
- lsls r5, 2
- add r5, r8
- adds r0, r5, 0
- movs r1, 0x4
- bl StartSpriteAnim
- strh r6, [r4, 0x26]
- strh r6, [r5, 0x26]
- b _081B602C
- .pool
-_081B6000:
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r0, =gSprites
- mov r8, r0
- add r5, r8
- adds r0, r5, 0
- movs r1, 0x3
- bl StartSpriteAnim
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- add r4, r8
- adds r0, r4, 0
- movs r1, 0x5
- bl StartSpriteAnim
- ldr r0, =0x0000fffc
- strh r0, [r5, 0x26]
- movs r0, 0x4
- strh r0, [r4, 0x26]
-_081B602C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B5FBC
-
- thumb_func_start sub_81B6040
-sub_81B6040: @ 81B6040
- push {lr}
- ldr r0, =gUnknown_08615EF8
- bl LoadCompressedSpriteSheet
- ldr r0, =gUnknown_08615F70
- bl LoadCompressedSpriteSheet
- ldr r0, =gUnknown_08615F00
- bl LoadCompressedSpritePalette
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6040
-
- thumb_func_start party_menu_status_condition_object
-party_menu_status_condition_object: @ 81B6064
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B608C
- ldr r0, =gSpriteTemplate_8616008
- ldr r2, [r4, 0x4]
- ldrb r1, [r2, 0x4]
- ldrb r2, [r2, 0x5]
- movs r3, 0
- bl CreateSprite
- strb r0, [r4, 0xC]
- adds r0, r5, 0
- adds r1, r4, 0
- bl party_menu_get_status_condition_and_update_object
-_081B608C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_status_condition_object
-
- thumb_func_start party_menu_link_mon_status_condition_object
-party_menu_link_mon_status_condition_object: @ 81B6098
- push {r4,r5,lr}
- adds r4, r2, 0
- lsls r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- cmp r0, 0
- beq _081B60D4
- ldr r0, =gSpriteTemplate_8616008
- ldr r2, [r4, 0x4]
- ldrb r1, [r2, 0x4]
- ldrb r2, [r2, 0x5]
- movs r3, 0
- bl CreateSprite
- strb r0, [r4, 0xC]
- adds r0, r5, 0
- adds r1, r4, 0
- bl party_menu_update_status_condition_object
- ldr r2, =gSprites
- ldrb r0, [r4, 0xC]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
-_081B60D4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_link_mon_status_condition_object
-
- thumb_func_start party_menu_get_status_condition_and_update_object
-@ void party_menu_get_status_condition_and_update_object(struct pokemon *mon, void *a2, void *a3)
-party_menu_get_status_condition_and_update_object: @ 81B60E4
- push {r4,lr}
- adds r4, r1, 0
- bl sub_81B205C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl party_menu_update_status_condition_object
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end party_menu_get_status_condition_and_update_object
-
- thumb_func_start party_menu_update_status_condition_object
-@ void party_menu_update_status_condition_object(u8 a1, void *a2)
-party_menu_update_status_condition_object: @ 81B60FC
- push {r4,r5,lr}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _081B610C
- cmp r2, 0x6
- bne _081B6128
-_081B610C:
- ldr r2, =gSprites
- ldrb r1, [r5, 0xC]
- 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
- b _081B6152
- .pool
-_081B6128:
- ldrb r1, [r5, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, =gSprites
- adds r0, r4
- subs r1, r2, 0x1
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- ldrb r1, [r5, 0xC]
- 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
-_081B6152:
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end party_menu_update_status_condition_object
-
- thumb_func_start sub_81B6160
-sub_81B6160: @ 81B6160
- push {lr}
- ldr r0, =gUnknown_08615FF8
- bl LoadCompressedSpriteSheet
- ldr r0, =gUnknown_08616000
- bl LoadCompressedSpritePalette
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6160
-
- thumb_func_start sub_81B617C
-sub_81B617C: @ 81B617C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r0, =c2_815ABFC
- mov r8, r0
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B61BC
- movs r7, 0x1
- bl sub_81B8984
- lsls r0, 24
- lsrs r6, r0, 24
- b _081B61C0
- .pool
-_081B61B0:
- ldr r0, =gUnknown_0203CEC8
- strb r5, [r0, 0x9]
- b _081B6204
- .pool
-_081B61BC:
- movs r7, 0
- movs r6, 0
-_081B61C0:
- ldr r4, =gSpecialVar_ItemId
- ldrh r0, [r4]
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA
- bne _081B621C
- ldr r1, =gUnknown_0203CEC8
- movs r0, 0
- strb r0, [r1, 0x9]
- movs r5, 0
-_081B61D8:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B61FA
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _081B61B0
-_081B61FA:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _081B61D8
-_081B6204:
- ldr r0, =sub_81B6280
- movs r1, 0x7F
- b _081B6230
- .pool
-_081B621C:
- ldrh r0, [r4]
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x5
- cmp r0, 0x3
- bne _081B622E
- movs r1, 0x4
-_081B622E:
- ldr r0, =sub_81B1370
-_081B6230:
- str r1, [sp]
- str r0, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- adds r0, r7, 0
- adds r1, r6, 0
- movs r2, 0x3
- movs r3, 0x1
- bl sub_81B0038
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B617C
-
- thumb_func_start c2_815ABFC
-c2_815ABFC: @ 81B6254
- push {lr}
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _081B626C
- movs r0, 0xC
- movs r1, 0x5
- movs r2, 0
- bl GoToBagMenu
- b _081B6276
-_081B626C:
- ldr r0, =gPyramidBagCursorData
- ldr r1, [r0]
- movs r0, 0x4
- bl sub_81C4F98
-_081B6276:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_815ABFC
-
- thumb_func_start sub_81B6280
-sub_81B6280: @ 81B6280
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B62B2
- ldr r0, =gUnknown_0203CEC8
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _081B62A6
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- ldr r0, =sub_81B9140
- str r0, [r1, 0x4]
-_081B62A6:
- ldr r0, =gUnknown_03006328
- ldr r1, =sub_81B6794
- ldr r2, [r0]
- adds r0, r3, 0
- bl _call_via_r2
-_081B62B2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6280
-
- thumb_func_start IsHPRecoveryItem
-@ bool8 IsHPRecoveryItem(u16 itemId)
-IsHPRecoveryItem: @ 81B62D0
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _081B62EC
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003214
- adds r0, r1
- b _081B62F6
- .pool
-_081B62EC:
- ldr r1, =gItemEffectTable
- subs r0, 0xD
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
-_081B62F6:
- ldrb r1, [r0, 0x4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _081B6308
- movs r0, 0
- b _081B630A
- .pool
-_081B6308:
- movs r0, 0x1
-_081B630A:
- pop {r1}
- bx r1
- thumb_func_end IsHPRecoveryItem
-
- thumb_func_start GetMedicineItemEffectMessage
-@ void GetMedicineItemEffectMessage(u16 itemId)
-GetMedicineItemEffectMessage: @ 81B6310
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x3
- cmp r0, 0x12
- bls _081B6326
- b _081B64BC
-_081B6326:
- lsls r0, 2
- ldr r1, =_081B6334
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B6334:
- .4byte _081B6380
- .4byte _081B6394
- .4byte _081B63A8
- .4byte _081B63BC
- .4byte _081B63D0
- .4byte _081B63E4
- .4byte _081B63F8
- .4byte _081B64BC
- .4byte _081B640C
- .4byte _081B6430
- .4byte _081B6420
- .4byte _081B6460
- .4byte _081B6470
- .4byte _081B6450
- .4byte _081B6440
- .4byte _081B64BC
- .4byte _081B6494
- .4byte _081B6494
- .4byte _081B64A8
-_081B6380:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnCuredOfPoison
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B6394:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnWokeUp2
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B63A8:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnBurnHealed
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B63BC:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnThawedOut
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B63D0:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnCuredOfParalysis
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B63E4:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnSnappedOutOfConfusion
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B63F8:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnGotOverInfatuation
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B640C:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnBecameHealthy
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B6420:
- ldr r0, =gStringVar2
- ldr r1, =gText_HP3
- b _081B6474
- .pool
-_081B6430:
- ldr r0, =gStringVar2
- ldr r1, =gText_Attack3
- b _081B6474
- .pool
-_081B6440:
- ldr r0, =gStringVar2
- ldr r1, =gText_Defense3
- b _081B6474
- .pool
-_081B6450:
- ldr r0, =gStringVar2
- ldr r1, =gText_Speed2
- b _081B6474
- .pool
-_081B6460:
- ldr r0, =gStringVar2
- ldr r1, =gText_SpAtk3
- b _081B6474
- .pool
-_081B6470:
- ldr r0, =gStringVar2
- ldr r1, =gText_SpDef3
-_081B6474:
- bl StringCopy
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnBaseVar2StatIncreased
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B6494:
- ldr r0, =gStringVar4
- ldr r1, =gText_MovesPPIncreased
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B64A8:
- ldr r0, =gStringVar4
- ldr r1, =gText_PPWasRestored
- bl StringExpandPlaceholders
- b _081B64C4
- .pool
-_081B64BC:
- ldr r0, =gStringVar4
- ldr r1, =gText_WontHaveEffect
- bl StringExpandPlaceholders
-_081B64C4:
- pop {r0}
- bx r0
- .pool
- thumb_func_end GetMedicineItemEffectMessage
-
- thumb_func_start UsingHPEVItemOnShedinja
-@ bool8 UsingHPEVItemOnShedinja(struct pokemon *mon, u16 itemId)
-UsingHPEVItemOnShedinja: @ 81B64D0
- push {r4,lr}
- adds r4, r0, 0
- lsls r0, r1, 16
- lsrs r0, 16
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD
- bne _081B64FC
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- ldr r1, =0x0000012f
- cmp r0, r1
- bne _081B64FC
- movs r0, 0
- b _081B64FE
- .pool
-_081B64FC:
- movs r0, 0x1
-_081B64FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end UsingHPEVItemOnShedinja
-
- thumb_func_start IsBlueYellowRedFlute
-@ bool8 IsBlueYellowRedFlute(u16 itemId)
-IsBlueYellowRedFlute: @ 81B6504
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x27
- beq _081B6516
- cmp r0, 0x29
- beq _081B6516
- cmp r0, 0x28
- bne _081B651A
-_081B6516:
- movs r0, 0x1
- b _081B651C
-_081B651A:
- movs r0, 0
-_081B651C:
- pop {r1}
- bx r1
- thumb_func_end IsBlueYellowRedFlute
-
- thumb_func_start ExecuteTableBasedItemEffect__
-@ bool8 ExecuteTableBasedItemEffect__(u8 partyMonIndex, u16 itemId, u8 monMoveIndex)
-ExecuteTableBasedItemEffect__: @ 81B6520
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081B6558
- movs r0, 0x64
- muls r0, r3
- ldr r1, =gPlayerParty
- adds r0, r1
- adds r1, r5, 0
- adds r2, r3, 0
- b _081B6572
- .pool
-_081B6558:
- movs r0, 0x64
- adds r4, r3, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r3, 0
- bl sub_81B8F38
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
-_081B6572:
- adds r3, r6, 0
- bl ExecuteTableBasedItemEffect
- lsls r0, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ExecuteTableBasedItemEffect__
-
- thumb_func_start ItemUseCB_Medicine
-ItemUseCB_Medicine: @ 81B6588
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- str r1, [sp, 0x4]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r0, 0
- mov r10, r0
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- ldr r0, =gSpecialVar_ItemId
- ldrh r6, [r0]
- adds r0, r5, 0
- adds r1, r6, 0
- bl UsingHPEVItemOnShedinja
- lsls r0, 24
- cmp r0, 0
- beq _081B6600
- adds r0, r6, 0
- bl IsHPRecoveryItem
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x1
- bne _081B65EE
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- cmp r10, r0
- bne _081B65EE
- movs r1, 0
- mov r8, r1
-_081B65EE:
- ldr r4, =gUnknown_0203CEC8
- ldrb r0, [r4, 0x9]
- adds r1, r6, 0
- movs r2, 0
- bl ExecuteTableBasedItemEffect__
- lsls r0, 24
- cmp r0, 0
- beq _081B6624
-_081B6600:
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gText_WontHaveEffect
- b _081B66F4
- .pool
-_081B6624:
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r6, 0
- bl IsBlueYellowRedFlute
- lsls r0, 24
- cmp r0, 0
- bne _081B6650
- movs r0, 0x1
- bl PlaySE
- ldrb r0, [r4, 0xB]
- cmp r0, 0xE
- beq _081B6656
- adds r0, r6, 0
- movs r1, 0x1
- bl RemoveBagItem
- b _081B6656
- .pool
-_081B6650:
- movs r0, 0x75
- bl PlaySE
-_081B6656:
- ldr r4, =gUnknown_0203CEDC
- ldr r7, =gUnknown_0203CEC8
- movs r0, 0x9
- ldrsb r0, [r7, r0]
- lsls r0, 4
- ldr r1, [r4]
- adds r1, r0
- adds r0, r5, 0
- bl party_menu_get_status_condition_and_update_object
- ldr r2, =gSprites
- movs r0, 0x9
- ldrsb r0, [r7, r0]
- ldr r1, [r4]
- lsls r0, 4
- adds r3, r0, r1
- ldrb r1, [r3, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _081B6694
- adds r0, r5, 0
- adds r1, r3, 0
- movs r2, 0x1
- bl sub_81B2AC8
-_081B6694:
- mov r2, r8
- cmp r2, 0x1
- bne _081B66E4
- mov r0, r10
- cmp r0, 0
- bne _081B66A8
- ldrb r0, [r7, 0x9]
- movs r1, 0x1
- bl sub_81B0FCC
-_081B66A8:
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- mov r1, r10
- subs r3, r1
- lsls r3, 16
- asrs r3, 16
- ldrb r1, [r7, 0x9]
- ldr r0, =sub_81B672C
- str r0, [sp]
- mov r0, r9
- movs r2, 0x1
- bl sub_81B1F18
- mov r0, r9
- movs r1, 0
- mov r2, r10
- bl sub_81B1FA8
- b _081B6710
- .pool
-_081B66E4:
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- adds r0, r6, 0
- bl GetMedicineItemEffectMessage
- ldr r0, =gStringVar4
-_081B66F4:
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldr r1, [sp, 0x4]
- str r1, [r0]
-_081B6710:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ItemUseCB_Medicine
-
- thumb_func_start sub_81B672C
-sub_81B672C: @ 81B672C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnHPRestoredByVar2
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- bl HandleBattleLowHpMusicChange
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6794
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B672C
-
- thumb_func_start sub_81B6794
-sub_81B6794: @ 81B6794
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B67BA
- ldr r0, =gUnknown_0203CEE8
- ldrb r1, [r0]
- cmp r1, 0
- bne _081B67B4
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- str r1, [r0, 0x4]
-_081B67B4:
- adds r0, r4, 0
- bl sub_81B12C0
-_081B67BA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6794
-
- thumb_func_start sub_81B67C8
-sub_81B67C8: @ 81B67C8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- str r1, [sp]
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r4, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r4, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- ldr r0, =gSpecialVar_ItemId
- ldrh r6, [r0]
- adds r0, r6, 0
- bl GetItemEffectType
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- movs r1, 0x20
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x4]
- adds r0, r5, 0
- adds r1, r7, 0
- bl sub_81B691C
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- ldrb r0, [r4, 0x9]
- adds r1, r6, 0
- movs r2, 0
- bl ExecuteTableBasedItemEffect__
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x20
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- adds r0, r5, 0
- adds r1, r7, 0
- bl sub_81B691C
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r4, 0
- bne _081B6850
- ldr r0, [sp, 0x4]
- cmp r0, r9
- bne _081B6874
- ldr r1, [sp, 0x8]
- cmp r1, r8
- bne _081B6874
-_081B6850:
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gText_WontHaveEffect
- b _081B68E2
- .pool
-_081B6874:
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
- bl PlaySE
- adds r0, r6, 0
- movs r1, 0x1
- bl RemoveBagItem
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r1, =gStringVar2
- adds r0, r7, 0
- bl option_menu_get_string
- ldr r2, [sp, 0x4]
- cmp r2, r9
- beq _081B68D8
- ldr r0, [sp, 0x8]
- cmp r0, r8
- beq _081B68C4
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnFriendlyBaseVar2Fell
- bl StringExpandPlaceholders
- b _081B68E0
- .pool
-_081B68C4:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnFriendlyBaseVar2CantFall
- bl StringExpandPlaceholders
- b _081B68E0
- .pool
-_081B68D8:
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnAdoresBaseVar2Fell
- bl StringExpandPlaceholders
-_081B68E0:
- ldr r0, =gStringVar4
-_081B68E2:
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- mov r2, r10
- lsls r0, r2, 2
- add r0, r10
- lsls r0, 3
- adds r0, r1
- ldr r1, [sp]
- str r1, [r0]
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B67C8
-
- thumb_func_start sub_81B691C
-sub_81B691C: @ 81B691C
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r1, 0
- subs r0, 0xC
- cmp r0, 0x5
- bhi _081B6992
- lsls r0, 2
- ldr r1, =_081B693C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B693C:
- .4byte _081B696C
- .4byte _081B6954
- .4byte _081B697E
- .4byte _081B6984
- .4byte _081B6978
- .4byte _081B6972
-_081B6954:
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- ldr r1, =0x0000012f
- cmp r0, r1
- beq _081B6992
- adds r0, r4, 0
- movs r1, 0x1A
- b _081B6988
- .pool
-_081B696C:
- adds r0, r4, 0
- movs r1, 0x1B
- b _081B6988
-_081B6972:
- adds r0, r4, 0
- movs r1, 0x1C
- b _081B6988
-_081B6978:
- adds r0, r4, 0
- movs r1, 0x1D
- b _081B6988
-_081B697E:
- adds r0, r4, 0
- movs r1, 0x1E
- b _081B6988
-_081B6984:
- adds r0, r4, 0
- movs r1, 0x1F
-_081B6988:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- b _081B6994
-_081B6992:
- movs r0, 0
-_081B6994:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B691C
-
- thumb_func_start option_menu_get_string
-option_menu_get_string: @ 81B699C
- push {lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0xC
- cmp r0, 0x5
- bhi _081B6A08
- lsls r0, 2
- ldr r1, =_081B69B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081B69B8:
- .4byte _081B69D8
- .4byte _081B69D0
- .4byte _081B69F0
- .4byte _081B6A00
- .4byte _081B69E8
- .4byte _081B69E0
-_081B69D0:
- ldr r1, =gText_HP3
- b _081B69F2
- .pool
-_081B69D8:
- ldr r1, =gText_Attack3
- b _081B69F2
- .pool
-_081B69E0:
- ldr r1, =gText_Defense3
- b _081B69F2
- .pool
-_081B69E8:
- ldr r1, =gText_Speed2
- b _081B69F2
- .pool
-_081B69F0:
- ldr r1, =gText_SpAtk3
-_081B69F2:
- adds r0, r2, 0
- bl StringCopy
- b _081B6A08
- .pool
-_081B6A00:
- ldr r1, =gText_SpDef3
- adds r0, r2, 0
- bl StringCopy
-_081B6A08:
- pop {r0}
- bx r0
- .pool
- thumb_func_end option_menu_get_string
-
- thumb_func_start sub_81B6A10
-sub_81B6A10: @ 81B6A10
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r7, 0
- movs r0, 0x1
- mov r10, r0
- movs r0, 0x3
- bl sub_81B31B0
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- movs r0, 0x64
- adds r1, r4, 0
- muls r1, r0
- mov r8, r1
- ldr r0, =gPlayerParty
- mov r9, r0
-_081B6A40:
- adds r1, r5, 0
- adds r1, 0xD
- mov r0, r8
- add r0, r9
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0xD
- adds r2, r4, 0
- muls r2, r0
- ldr r0, =gMoveNames
- adds r2, r0
- lsls r0, r5, 4
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- mov r1, r10
- movs r3, 0x8
- bl AddTextPrinterParameterized
- cmp r4, 0
- beq _081B6A82
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_081B6A82:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081B6A40
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0
- bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6A10
-
- thumb_func_start ether_effect_related_3
-ether_effect_related_3: @ 81B6AB4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl Menu_ProcessInput
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _081B6AF0
- adds r0, 0x1
- cmp r1, r0
- bne _081B6AE0
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81B6BB4
- b _081B6AF0
-_081B6AE0:
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- adds r0, 0xD
- bl sub_81B302C
- adds r0, r5, 0
- bl ether_effect_related_2
-_081B6AF0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ether_effect_related_3
-
- thumb_func_start dp05_ether
-dp05_ether: @ 81B6AFC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gSpecialVar_ItemId
- ldrh r0, [r0]
- cmp r0, 0xAF
- bne _081B6B20
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003214
- adds r0, r1
- b _081B6B2A
- .pool
-_081B6B20:
- ldr r1, =gItemEffectTable
- subs r0, 0xD
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
-_081B6B2A:
- ldrb r1, [r0, 0x4]
- movs r0, 0x10
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _081B6B4C
- ldr r0, =gUnknown_0203CEC8
- strh r1, [r0, 0xE]
- adds r0, r4, 0
- bl ether_effect_related
- b _081B6B6E
- .pool
-_081B6B4C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x16
- bl display_pokemon_menu_message
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x9]
- bl sub_81B6A10
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =ether_effect_related_3
- str r1, [r0]
-_081B6B6E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp05_ether
-
- thumb_func_start ether_effect_related_2
-ether_effect_related_2: @ 81B6B80
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- adds r0, 0xC
- bl sub_81B302C
- bl Menu_GetCursorPos
- ldr r1, =gUnknown_0203CEC8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0xE]
- adds r0, r4, 0
- bl ether_effect_related
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ether_effect_related_2
-
- thumb_func_start sub_81B6BB4
-sub_81B6BB4: @ 81B6BB4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, =sub_81B1370
- str r0, [r1]
- ldr r0, =gUnknown_0203CEC4
- ldr r0, [r0]
- movs r1, 0
- str r1, [r0, 0x4]
- adds r0, 0xC
- bl sub_81B302C
- movs r0, 0x5
- bl display_pokemon_menu_message
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6BB4
-
- thumb_func_start ether_effect_related
-ether_effect_related: @ 81B6BEC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- ldr r7, =gUnknown_0203CED6
- ldr r0, =gSpecialVar_ItemId
- ldrh r5, [r0]
- movs r0, 0xE
- negs r0, r0
- adds r0, r7
- mov r8, r0
- ldrb r0, [r0, 0x9]
- ldrb r2, [r7]
- adds r1, r5, 0
- bl ExecuteTableBasedItemEffect__
- lsls r0, 24
- cmp r0, 0
- beq _081B6C34
- ldr r0, =gUnknown_0203CEE8
- strb r4, [r0]
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gText_WontHaveEffect
- b _081B6C7E
- .pool
-_081B6C34:
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0x1
- strb r0, [r1]
- mov r0, r8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- movs r0, 0x1
- bl PlaySE
- adds r0, r5, 0
- movs r1, 0x1
- bl RemoveBagItem
- movs r0, 0
- ldrsh r1, [r7, r0]
- adds r1, 0xD
- adds r0, r4, 0
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =gStringVar1
- movs r1, 0xD
- muls r1, r4
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- adds r0, r5, 0
- bl GetMedicineItemEffectMessage
- ldr r0, =gStringVar4
-_081B6C7E:
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6794
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ether_effect_related
-
- thumb_func_start dp05_pp_up
-dp05_pp_up: @ 81B6CC0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x17
- bl display_pokemon_menu_message
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x9]
- bl sub_81B6A10
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =ether_effect_related_3
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp05_pp_up
-
- thumb_func_start ItemIdToBattleMoveId
-ItemIdToBattleMoveId: @ 81B6CFC
- lsls r0, 16
- ldr r1, =0xfedf0000
- adds r0, r1
- ldr r1, =gUnknown_08616040
- lsrs r0, 15
- adds r0, r1
- ldrh r0, [r0]
- bx lr
- .pool
- thumb_func_end ItemIdToBattleMoveId
-
- thumb_func_start sub_81B6D14
-sub_81B6D14: @ 81B6D14
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0
- ldr r3, =gUnknown_08616040
-_081B6D1E:
- adds r0, r1, 0
- adds r0, 0x32
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, r2
- bne _081B6D34
- movs r0, 0x1
- b _081B6D40
- .pool
-_081B6D34:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x7
- bls _081B6D1E
- movs r0, 0
-_081B6D40:
- pop {r1}
- bx r1
- thumb_func_end sub_81B6D14
-
- thumb_func_start pokemon_has_move
-pokemon_has_move: @ 81B6D44
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- movs r4, 0
-_081B6D4E:
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r6, 0
- bl GetMonData
- cmp r0, r5
- bne _081B6D60
- movs r0, 0x1
- b _081B6D6C
-_081B6D60:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081B6D4E
- movs r0, 0
-_081B6D6C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end pokemon_has_move
-
- thumb_func_start sub_81B6D74
-sub_81B6D74: @ 81B6D74
- push {r4,lr}
- adds r1, r0, 0
- ldr r4, =gStringVar4
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6D74
-
- thumb_func_start sub_81B6D98
-sub_81B6D98: @ 81B6D98
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_81B6D74
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6794
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6D98
-
- thumb_func_start sub_81B6DC4
-sub_81B6DC4: @ 81B6DC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r7, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r7, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- movs r0, 0xE
- adds r0, r7
- mov r8, r0
- ldr r0, =gSpecialVar_ItemId
- ldrh r4, [r0]
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- adds r0, r4, 0
- bl ItemIdToBattleMoveId
- strh r0, [r7, 0xE]
- ldr r0, =gStringVar2
- movs r1, 0xE
- ldrsh r2, [r7, r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- movs r0, 0
- mov r1, r8
- strh r0, [r1, 0x2]
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_81B22D8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B6E70
- cmp r0, 0x2
- beq _081B6E78
- ldrh r1, [r7, 0xE]
- adds r0, r5, 0
- bl GiveMoveToMon
- lsls r0, 16
- ldr r1, =0xffff0000
- cmp r0, r1
- beq _081B6E88
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B6EB4
- str r0, [r1]
- b _081B6E9C
- .pool
-_081B6E70:
- ldr r1, =gText_PkmnCantLearnMove
- b _081B6E7A
- .pool
-_081B6E78:
- ldr r1, =gText_PkmnAlreadyKnows
-_081B6E7A:
- adds r0, r6, 0
- bl sub_81B6D98
- b _081B6E9C
- .pool
-_081B6E88:
- ldr r0, =gText_PkmnNeedsToReplaceMove
- bl sub_81B6D74
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6FF4
- str r1, [r0]
-_081B6E9C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6DC4
-
- thumb_func_start sub_81B6EB4
-sub_81B6EB4: @ 81B6EB4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r2, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- adds r6, r2, 0
- adds r6, 0xE
- ldr r0, =gSpecialVar_ItemId
- ldrh r4, [r0]
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _081B6EF0
- adds r0, r5, 0
- movs r1, 0x4
- bl AdjustFriendship
- movs r0, 0xA9
- lsls r0, 1
- cmp r4, r0
- bhi _081B6EF0
- adds r0, r4, 0
- movs r1, 0x1
- bl RemoveBagItem
-_081B6EF0:
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r0, =gStringVar2
- movs r1, 0
- ldrsh r2, [r6, r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnLearnedMove3
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6F60
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6EB4
-
- thumb_func_start sub_81B6F60
-sub_81B6F60: @ 81B6F60
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B6F86
- ldr r0, =0x0000016f
- bl PlayFanfare
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6F98
- str r1, [r0]
-_081B6F86:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6F60
-
- thumb_func_start sub_81B6F98
-sub_81B6F98: @ 81B6F98
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _081B6FEA
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _081B6FC0
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B6FEA
-_081B6FC0:
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x10
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _081B6FDC
- adds r0, r4, 0
- bl sub_81B77AC
- b _081B6FEA
- .pool
-_081B6FDC:
- cmp r0, 0x2
- bne _081B6FE4
- ldr r0, =gSpecialVar_Result
- strh r2, [r0]
-_081B6FE4:
- adds r0, r5, 0
- bl sub_81B12C0
-_081B6FEA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6F98
-
- thumb_func_start sub_81B6FF4
-sub_81B6FF4: @ 81B6FF4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B7018
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B7028
- str r0, [r1]
-_081B7018:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B6FF4
-
- thumb_func_start sub_81B7028
-sub_81B7028: @ 81B7028
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B704E
- cmp r1, 0
- bgt _081B7048
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B7074
- b _081B7080
-_081B7048:
- cmp r1, 0x1
- beq _081B707A
- b _081B7080
-_081B704E:
- ldr r0, =gText_WhichMoveToForget
- movs r1, 0x1
- bl sub_81B1B5C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B7088
- str r1, [r0]
- b _081B7080
- .pool
-_081B7074:
- movs r0, 0x5
- bl PlaySE
-_081B707A:
- adds r0, r4, 0
- bl sub_81B7230
-_081B7080:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B7028
-
- thumb_func_start sub_81B7088
-sub_81B7088: @ 81B7088
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B70A8
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- ldr r0, =sub_81B70B8
- str r0, [r1, 0x4]
- adds r0, r4, 0
- bl sub_81B12C0
-_081B70A8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7088
-
- thumb_func_start sub_81B70B8
-sub_81B70B8: @ 81B70B8
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gPlayerParty
- ldr r4, =gUnknown_0203CEC8
- ldrb r1, [r4, 0x9]
- ldr r2, =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, =sub_81B70F0
- ldrh r4, [r4, 0xE]
- str r4, [sp]
- bl ShowSelectMovePokemonSummaryScreen
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B70B8
-
- thumb_func_start sub_81B70F0
-sub_81B70F0: @ 81B70F0
- push {lr}
- sub sp, 0xC
- movs r0, 0x7F
- str r0, [sp]
- ldr r0, =sub_81B711C
- str r0, [sp, 0x4]
- ldr r0, =gUnknown_0203CEC8
- ldr r0, [r0]
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B70F0
-
- thumb_func_start sub_81B711C
-sub_81B711C: @ 81B711C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B714E
- bl sub_81C1B94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _081B7148
- adds r0, r4, 0
- bl sub_81B7154
- b _081B714E
- .pool
-_081B7148:
- adds r0, r5, 0
- bl sub_81B7230
-_081B714E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81B711C
-
- thumb_func_start sub_81B7154
-sub_81B7154: @ 81B7154
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- adds r5, r1, 0
- muls r5, r0
- ldr r0, =gPlayerParty
- adds r5, r0
- bl sub_81C1B94
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r1, 0xD
- adds r0, r5, 0
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r0, =gStringVar2
- movs r1, 0xD
- muls r1, r4
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gText_12PoofForgotMove
- bl sub_81B6D74
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B71D4
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7154
-
- thumb_func_start sub_81B71D4
-sub_81B71D4: @ 81B71D4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B7220
- ldr r5, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r5, r1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- bl sub_81C1B94
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RemoveMonPPBonus
- ldrh r5, [r5, 0xE]
- bl sub_81C1B94
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl SetMonMoveSlot
- adds r0, r6, 0
- bl sub_81B6EB4
-_081B7220:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B71D4
-
- thumb_func_start sub_81B7230
-sub_81B7230: @ 81B7230
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gStringVar2
- ldr r1, =gUnknown_0203CEC8
- movs r3, 0xE
- ldrsh r2, [r1, r3]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_StopLearningMove2
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B7294
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7230
-
- thumb_func_start sub_81B7294
-sub_81B7294: @ 81B7294
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B72B8
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B72C8
- str r0, [r1]
-_081B72B8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7294
-
- thumb_func_start sub_81B72C8
-sub_81B72C8: @ 81B72C8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r7, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r5, r0, 24
- cmp r5, 0
- beq _081B7306
- cmp r5, 0
- bgt _081B7300
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _081B738C
- b _081B73C2
- .pool
-_081B7300:
- cmp r5, 0x1
- beq _081B7392
- b _081B73C2
-_081B7306:
- ldr r1, =gStringVar1
- adds r0, r4, 0
- bl GetMonNickname
- ldr r0, =gStringVar2
- movs r1, 0xE
- ldrsh r2, [r7, r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_MoveNotLearned
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- movs r3, 0x10
- ldrsh r0, [r7, r3]
- cmp r0, 0x1
- bne _081B7368
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B73E4
- str r0, [r1]
- b _081B73C2
- .pool
-_081B7368:
- cmp r0, 0x2
- bne _081B7370
- ldr r0, =gSpecialVar_Result
- strh r5, [r0]
-_081B7370:
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B6794
- str r0, [r1]
- b _081B73C2
- .pool
-_081B738C:
- movs r0, 0x5
- bl PlaySE
-_081B7392:
- ldr r1, =gStringVar1
- adds r0, r4, 0
- bl GetMonNickname
- ldr r0, =gStringVar2
- ldr r1, =gUnknown_0203CEC8
- movs r3, 0xE
- ldrsh r2, [r1, r3]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gText_PkmnNeedsToReplaceMove
- bl sub_81B6D74
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6FF4
- str r1, [r0]
-_081B73C2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B72C8
-
- thumb_func_start sub_81B73E4
-sub_81B73E4: @ 81B73E4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B73FC
- adds r0, r4, 0
- bl sub_81B77AC
-_081B73FC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B73E4
-
- thumb_func_start dp05_rare_candy
-dp05_rare_candy: @ 81B7404
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r10, r1
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gUnknown_0203CEC8
- mov r9, r0
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- ldr r0, =gUnknown_0203CEC4
- ldr r6, [r0]
- movs r1, 0x86
- lsls r1, 2
- adds r4, r6, r1
- ldr r2, =gSpecialVar_ItemId
- mov r8, r2
- adds r0, r5, 0
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- beq _081B7478
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81B79A0
- mov r1, r9
- ldrb r0, [r1, 0x9]
- mov r2, r8
- ldrh r1, [r2]
- movs r2, 0
- bl ExecuteTableBasedItemEffect__
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x89
- lsls r0, 2
- adds r1, r6, r0
- adds r0, r5, 0
- bl sub_81B79A0
- b _081B747A
- .pool
-_081B7478:
- movs r4, 0x1
-_081B747A:
- movs r0, 0x5
- bl PlaySE
- cmp r4, 0
- beq _081B74B4
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gText_WontHaveEffect
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- mov r1, r10
- b _081B7516
- .pool
-_081B74B4:
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0
- bl PlayFanfareByFanfareNum
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0x9]
- adds r1, r5, 0
- bl sub_81B754C
- ldr r0, =gSpecialVar_ItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl RemoveBagItem
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r4, =gStringVar2
- adds r0, r5, 0
- movs r1, 0x38
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnElevatedToLvVar2
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B75D4
-_081B7516:
- str r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp05_rare_candy
-
- thumb_func_start sub_81B754C
-sub_81B754C: @ 81B754C
- push {r4-r7,lr}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r0, 24
- adds r7, r0, 0
- ldr r6, =gUnknown_0203CEDC
- lsls r4, r7, 4
- ldr r1, [r6]
- adds r1, r4
- adds r0, r5, 0
- bl party_menu_get_status_condition_and_update_object
- ldr r2, =gSprites
- ldr r0, [r6]
- adds r3, r4, r0
- ldrb r1, [r3, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _081B7588
- adds r0, r5, 0
- adds r1, r3, 0
- movs r2, 0x1
- bl sub_81B2AC8
-_081B7588:
- ldr r1, [r6]
- adds r1, r4
- adds r0, r5, 0
- movs r2, 0x1
- bl sub_81B2CD4
- ldr r1, [r6]
- adds r1, r4
- adds r0, r5, 0
- movs r2, 0x1
- bl sub_81B2D74
- ldr r1, [r6]
- adds r1, r4
- adds r0, r5, 0
- bl sub_81B2E28
- ldr r0, [r6]
- adds r0, r4, r0
- ldrb r0, [r0, 0x9]
- adds r1, r5, 0
- bl sub_81B5B38
- adds r0, r7, 0
- movs r1, 0x1
- bl sub_81B0FCC
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B754C
-
- thumb_func_start sub_81B75D4
-sub_81B75D4: @ 81B75D4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- bl WaitFanfare
- lsls r0, 24
- cmp r0, 0
- beq _081B7620
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B7620
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081B7606
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B7620
-_081B7606:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81B767C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B7634
- str r0, [r1]
-_081B7620:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B75D4
-
- thumb_func_start sub_81B7634
-sub_81B7634: @ 81B7634
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081B764E
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B7668
-_081B764E:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81B76C8
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B7704
- str r0, [r1]
-_081B7668:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7634
-
- thumb_func_start sub_81B767C
-sub_81B767C: @ 81B767C
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203CEC4
- ldr r5, [r0]
- movs r0, 0x86
- lsls r0, 2
- adds r4, r5, r0
- bl sub_81B3364
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x18]
- ldrh r0, [r4, 0x18]
- movs r1, 0x89
- lsls r1, 2
- adds r2, r5, r1
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0x3
- str r1, [sp, 0x4]
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_81D3640
- ldrb r0, [r4, 0x18]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B767C
-
- thumb_func_start sub_81B76C8
-sub_81B76C8: @ 81B76C8
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- movs r0, 0x86
- lsls r0, 2
- adds r4, r1, r0
- ldrh r0, [r4, 0x18]
- movs r2, 0x89
- lsls r2, 2
- adds r1, r2
- movs r2, 0x3
- str r2, [sp]
- movs r2, 0x1
- movs r3, 0x2
- bl sub_81D3784
- ldrb r0, [r4, 0x18]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B76C8
-
- thumb_func_start sub_81B7704
-sub_81B7704: @ 81B7704
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0
- bl WaitFanfare
- lsls r0, 24
- cmp r0, 0
- beq _081B77A6
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r6, 0x1
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- bne _081B772C
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B77A6
-_081B772C:
- bl sub_81B3394
- ldr r4, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r4, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x1
- bl MonTryLearningNewMove
- lsls r0, 16
- lsrs r1, r0, 16
- strh r6, [r4, 0x10]
- ldr r0, =0x0000fffe
- cmp r1, r0
- beq _081B7788
- cmp r1, r0
- bgt _081B776C
- cmp r1, 0
- beq _081B7778
- b _081B77A0
- .pool
-_081B776C:
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _081B7780
- b _081B77A0
- .pool
-_081B7778:
- adds r0, r5, 0
- bl sub_81B7810
- b _081B77A6
-_081B7780:
- adds r0, r5, 0
- bl sub_81B787C
- b _081B77A6
-_081B7788:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B77AC
- str r0, [r1]
- b _081B77A6
- .pool
-_081B77A0:
- adds r0, r5, 0
- bl sub_81B7910
-_081B77A6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81B7704
-
- thumb_func_start sub_81B77AC
-sub_81B77AC: @ 81B77AC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0
- bl MonTryLearningNewMove
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, =0x0000fffe
- cmp r1, r0
- beq _081B780A
- cmp r1, r0
- bgt _081B77E8
- cmp r1, 0
- beq _081B77F4
- b _081B7804
- .pool
-_081B77E8:
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _081B77FC
- b _081B7804
- .pool
-_081B77F4:
- adds r0, r4, 0
- bl sub_81B7810
- b _081B780A
-_081B77FC:
- adds r0, r4, 0
- bl sub_81B787C
- b _081B780A
-_081B7804:
- adds r0, r4, 0
- bl sub_81B7910
-_081B780A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81B77AC
-
- thumb_func_start sub_81B7810
-sub_81B7810: @ 81B7810
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r6, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r7, r1, r0
- adds r0, r7, 0
- movs r1, 0
- movs r2, 0
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _081B7860
- bl sub_81B06F4
- ldr r0, =gCB2_AfterEvolution
- ldr r1, [r6]
- str r1, [r0]
- ldrb r3, [r6, 0x9]
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl BeginEvolutionScene
- adds r0, r5, 0
- bl DestroyTask
- b _081B786E
- .pool
-_081B7860:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B6794
- str r0, [r1]
-_081B786E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7810
-
- thumb_func_start sub_81B787C
-sub_81B787C: @ 81B787C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gUnknown_0203CEC8
- mov r8, r0
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r0, =gStringVar2
- ldr r6, =gMoveToLearn
- ldrh r2, [r6]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnNeedsToReplaceMove
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldrh r0, [r6]
- mov r1, r8
- strh r0, [r1, 0xE]
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6FF4
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B787C
-
- thumb_func_start sub_81B7910
-sub_81B7910: @ 81B7910
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r6, r0, 0
- adds r5, r1, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 16
- lsrs r5, 16
- ldr r0, =gUnknown_0203CEC8
- mov r8, r0
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r0, =gStringVar2
- movs r1, 0xD
- muls r1, r5
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnLearnedMove3
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- mov r0, r8
- strh r5, [r0, 0xE]
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6F60
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7910
-
- thumb_func_start sub_81B79A0
-sub_81B79A0: @ 81B79A0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r1, 0x3A
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x3B
- bl GetMonData
- strh r0, [r5, 0x2]
- adds r0, r4, 0
- movs r1, 0x3C
- bl GetMonData
- strh r0, [r5, 0x4]
- adds r0, r4, 0
- movs r1, 0x3E
- bl GetMonData
- strh r0, [r5, 0x8]
- adds r0, r4, 0
- movs r1, 0x3F
- bl GetMonData
- strh r0, [r5, 0xA]
- adds r0, r4, 0
- movs r1, 0x3D
- bl GetMonData
- strh r0, [r5, 0x6]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81B79A0
-
- thumb_func_start sub_81B79E8
-sub_81B79E8: @ 81B79E8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203CEC4
- ldr r2, [r1]
- movs r3, 0x86
- lsls r3, 2
- adds r1, r2, r3
- movs r3, 0
- strh r3, [r1]
- ldr r4, =0x0000021a
- adds r1, r2, r4
- strh r3, [r1]
- ldr r1, =gUnknown_0203CEC8
- ldrb r1, [r1, 0x9]
- lsls r1, 24
- asrs r1, 24
- movs r3, 0x87
- lsls r3, 2
- adds r2, r3
- strh r1, [r2]
- bl sub_81B7A28
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B79E8
-
- thumb_func_start sub_81B7A28
-sub_81B7A28: @ 81B7A28
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- mov r8, r4
- ldr r6, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r6, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B7A6E
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- ldrb r0, [r6, 0x9]
- ldr r1, =gSpecialVar_ItemId
- ldrh r1, [r1]
- movs r2, 0
- bl ExecuteTableBasedItemEffect__
- lsls r0, 24
- cmp r0, 0
- beq _081B7A94
-_081B7A6E:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =task_intro_gamefreak
- str r0, [r1]
- b _081B7B2A
- .pool
-_081B7A94:
- movs r0, 0x1
- bl PlaySE
- ldr r4, =gUnknown_0203CEDC
- movs r0, 0x9
- ldrsb r0, [r6, r0]
- lsls r0, 4
- ldr r1, [r4]
- adds r1, r0
- adds r0, r5, 0
- bl party_menu_get_status_condition_and_update_object
- ldr r2, =gSprites
- movs r0, 0x9
- ldrsb r0, [r6, r0]
- ldr r1, [r4]
- lsls r0, 4
- adds r3, r0, r1
- ldrb r1, [r3, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _081B7AD6
- adds r0, r5, 0
- adds r1, r3, 0
- movs r2, 0x1
- bl sub_81B2AC8
-_081B7AD6:
- ldr r4, =gUnknown_0203CEC4
- ldr r0, [r4]
- movs r1, 0x87
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_81B0FCC
- ldrb r0, [r6, 0x9]
- movs r1, 0x1
- bl sub_81B0FCC
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- subs r3, r7
- lsls r3, 16
- asrs r3, 16
- ldrb r1, [r6, 0x9]
- ldr r0, =sub_81B7C10
- str r0, [sp]
- mov r0, r8
- movs r2, 0x1
- bl sub_81B1F18
- mov r0, r8
- movs r1, 0
- adds r2, r7, 0
- bl sub_81B1FA8
- ldr r0, [r4]
- movs r2, 0x86
- lsls r2, 2
- adds r1, r0, r2
- movs r2, 0x1
- strh r2, [r1]
- ldr r1, =0x0000021a
- adds r0, r1
- strh r2, [r0]
-_081B7B2A:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7A28
-
- thumb_func_start task_intro_gamefreak
-task_intro_gamefreak: @ 81B7B4C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B7C0A
- ldr r5, =gUnknown_0203CEC4
- ldr r2, [r5]
- movs r0, 0x86
- lsls r0, 2
- adds r1, r2, r0
- movs r3, 0
- ldrsh r0, [r1, r3]
- ldr r3, =gUnknown_0203CEC8
- cmp r0, 0x1
- bne _081B7B82
- movs r0, 0
- strh r0, [r1]
- movs r1, 0x9
- ldrsb r1, [r3, r1]
- movs r6, 0x87
- lsls r6, 2
- adds r0, r2, r6
- strh r1, [r0]
-_081B7B82:
- ldrb r0, [r3, 0x9]
- adds r0, 0x1
- strb r0, [r3, 0x9]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x6
- bne _081B7C04
- ldr r0, [r5]
- ldr r1, =0x0000021a
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- cmp r1, 0
- bne _081B7BC8
- ldr r0, =gUnknown_0203CEE8
- strb r1, [r0]
- ldr r0, =gText_WontHaveEffect
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- b _081B7BD8
- .pool
-_081B7BC8:
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, =gSpecialVar_ItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl RemoveBagItem
-_081B7BD8:
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6794
- str r1, [r0]
- ldr r1, =gUnknown_0203CEC8
- movs r0, 0
- strb r0, [r1, 0x9]
- b _081B7C0A
- .pool
-_081B7C04:
- adds r0, r4, 0
- bl sub_81B7A28
-_081B7C0A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end task_intro_gamefreak
-
- thumb_func_start sub_81B7C10
-sub_81B7C10: @ 81B7C10
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r4, =gStringVar4
- ldr r1, =gText_PkmnHPRestoredByVar2
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =task_intro_gamefreak
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7C10
-
- thumb_func_start sub_81B7C74
-sub_81B7C74: @ 81B7C74
- push {r4-r6,lr}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r2, =gCB2_AfterEvolution
- ldr r1, =gUnknown_0203CEC8
- ldr r0, [r1]
- str r0, [r2]
- ldrb r0, [r1, 0x9]
- ldr r4, =gSpecialVar_ItemId
- ldrh r1, [r4]
- movs r2, 0
- bl ExecuteTableBasedItemEffect__
- lsls r0, 24
- cmp r0, 0
- beq _081B7CD8
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gText_WontHaveEffect
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- str r6, [r0]
- b _081B7CE4
- .pool
-_081B7CD8:
- ldrh r0, [r4]
- movs r1, 0x1
- bl RemoveBagItem
- bl sub_81B06F4
-_081B7CE4:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81B7C74
-
- thumb_func_start GetItemEffectType
-@ u8 GetItemEffectType(u16 itemId)
-GetItemEffectType: @ 81B7CEC
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r1, r0, 16
- adds r2, r1, 0
- subs r2, 0xD
- lsls r0, r2, 16
- lsrs r0, 16
- cmp r0, 0xA5
- bls _081B7D00
- b _081B7E40
-_081B7D00:
- cmp r1, 0xAF
- bne _081B7D18
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003214
- adds r4, r0, r1
- b _081B7D20
- .pool
-_081B7D18:
- ldr r1, =gItemEffectTable
- lsls r0, r2, 2
- adds r0, r1
- ldr r4, [r0]
-_081B7D20:
- ldrb r1, [r4]
- movs r5, 0x3F
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _081B7D42
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _081B7D42
- ldrb r0, [r4, 0x2]
- cmp r0, 0
- bne _081B7D42
- ldrb r3, [r4, 0x3]
- movs r0, 0x80
- ands r0, r3
- cmp r0, 0
- beq _081B7D4C
-_081B7D42:
- movs r0, 0
- b _081B7E46
- .pool
-_081B7D4C:
- movs r2, 0x40
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081B7D5A
- movs r0, 0xA
- b _081B7E46
-_081B7D5A:
- adds r0, r2, 0
- ands r0, r3
- cmp r0, 0
- beq _081B7D66
- movs r0, 0x1
- b _081B7E46
-_081B7D66:
- adds r2, r5, 0
- ands r2, r3
- cmp r2, 0
- bne _081B7D74
- lsrs r0, r1, 7
- cmp r0, 0
- beq _081B7DB6
-_081B7D74:
- cmp r2, 0x20
- bne _081B7D7C
- movs r0, 0x4
- b _081B7E46
-_081B7D7C:
- cmp r2, 0x10
- bne _081B7D84
- movs r0, 0x3
- b _081B7E46
-_081B7D84:
- cmp r2, 0x8
- bne _081B7D8C
- movs r0, 0x5
- b _081B7E46
-_081B7D8C:
- cmp r2, 0x4
- bne _081B7D94
- movs r0, 0x6
- b _081B7E46
-_081B7D94:
- cmp r2, 0x2
- bne _081B7D9C
- movs r0, 0x7
- b _081B7E46
-_081B7D9C:
- cmp r2, 0x1
- bne _081B7DA4
- movs r0, 0x8
- b _081B7E46
-_081B7DA4:
- lsrs r0, r1, 7
- cmp r0, 0
- beq _081B7DB2
- cmp r2, 0
- bne _081B7DB2
- movs r0, 0x9
- b _081B7E46
-_081B7DB2:
- movs r0, 0xB
- b _081B7E46
-_081B7DB6:
- ldrb r1, [r4, 0x4]
- movs r0, 0x44
- ands r0, r1
- adds r2, r1, 0
- cmp r0, 0
- beq _081B7DC6
- movs r0, 0x2
- b _081B7E46
-_081B7DC6:
- movs r5, 0x2
- adds r0, r5, 0
- ands r0, r2
- cmp r0, 0
- beq _081B7DD4
- movs r0, 0xC
- b _081B7E46
-_081B7DD4:
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r2
- cmp r0, 0
- beq _081B7DE2
- movs r0, 0xD
- b _081B7E46
-_081B7DE2:
- ldrb r1, [r4, 0x5]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _081B7DF0
- movs r0, 0xE
- b _081B7E46
-_081B7DF0:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081B7DFC
- movs r0, 0xF
- b _081B7E46
-_081B7DFC:
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _081B7E08
- movs r0, 0x10
- b _081B7E46
-_081B7E08:
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _081B7E14
- movs r0, 0x11
- b _081B7E46
-_081B7E14:
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _081B7E20
- movs r0, 0x12
- b _081B7E46
-_081B7E20:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _081B7E2C
- movs r0, 0x13
- b _081B7E46
-_081B7E2C:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081B7E38
- movs r0, 0x14
- b _081B7E46
-_081B7E38:
- movs r0, 0x18
- ands r0, r2
- cmp r0, 0
- bne _081B7E44
-_081B7E40:
- movs r0, 0x16
- b _081B7E46
-_081B7E44:
- movs r0, 0x15
-_081B7E46:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetItemEffectType
-
- thumb_func_start sub_81B7E4C
-sub_81B7E4C: @ 81B7E4C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B7F1C
- ldr r7, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r7, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- movs r0, 0xE
- adds r0, r7
- mov r8, r0
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r4, =gSpecialVar_0x8005
- ldrb r0, [r4]
- bl sub_81B2360
- strh r0, [r7, 0xE]
- ldr r0, =gStringVar2
- movs r1, 0xE
- ldrsh r2, [r7, r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- movs r0, 0x2
- mov r1, r8
- strh r0, [r1, 0x2]
- ldrb r2, [r4]
- adds r0, r5, 0
- movs r1, 0
- bl sub_81B22D8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B7EF0
- cmp r0, 0x2
- beq _081B7EF8
- ldrh r1, [r7, 0xE]
- adds r0, r5, 0
- bl GiveMoveToMon
- lsls r0, 16
- ldr r1, =0xffff0000
- cmp r0, r1
- beq _081B7F08
- adds r0, r6, 0
- bl sub_81B6EB4
- b _081B7F1C
- .pool
-_081B7EF0:
- ldr r1, =gText_PkmnCantLearnMove
- b _081B7EFA
- .pool
-_081B7EF8:
- ldr r1, =gText_PkmnAlreadyKnows
-_081B7EFA:
- adds r0, r6, 0
- bl sub_81B6D98
- b _081B7F1C
- .pool
-_081B7F08:
- ldr r0, =gText_PkmnNeedsToReplaceMove
- bl sub_81B6D74
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B6FF4
- str r1, [r0]
-_081B7F1C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7E4C
-
- thumb_func_start CB2_PartyMenuFromStartMenu
-CB2_PartyMenuFromStartMenu: @ 81B7F34
- push {lr}
- sub sp, 0xC
- movs r0, 0
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =CB2_ReturnToFieldWithOpenMenu
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end CB2_PartyMenuFromStartMenu
-
- thumb_func_start sub_81B7F60
-sub_81B7F60: @ 81B7F60
- push {lr}
- sub sp, 0xC
- bl InBattlePyramid
- lsls r0, 24
- ldr r1, =sub_81C4F84
- cmp r0, 0
- bne _081B7F72
- ldr r1, =c2_815ABFC
-_081B7F72:
- movs r0, 0x6
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x5
- movs r3, 0
- bl sub_81B0038
- ldr r1, =gUnknown_0203CEC8
- ldr r0, =gSpecialVar_ItemId
- ldrh r0, [r0]
- strh r0, [r1, 0xC]
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7F60
-
- thumb_func_start sub_81B7FAC
-sub_81B7FAC: @ 81B7FAC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- ldr r5, =gUnknown_0203CEFC
- ldr r0, =gUnknown_0203CEC8
- mov r9, r0
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r7, =gPlayerParty
- adds r0, r7
- movs r1, 0xC
- bl GetMonData
- strh r0, [r5]
- lsls r0, 16
- cmp r0, 0
- bne _081B7FF8
- adds r0, r4, 0
- bl sub_81B8044
- b _081B8030
- .pool
-_081B7FF8:
- ldrh r0, [r5]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081B800C
- adds r0, r4, 0
- bl sub_81B83B8
- b _081B8030
-_081B800C:
- mov r1, r9
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- ldrh r1, [r5]
- movs r2, 0x1
- bl sub_81B1D1C
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B82A0
- str r1, [r0]
-_081B8030:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B7FAC
-
- thumb_func_start sub_81B8044
-sub_81B8044: @ 81B8044
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, =gUnknown_0203CEC8
- ldrh r0, [r5, 0xC]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081B807C
- ldrh r0, [r5, 0xC]
- bl sub_81B83F0
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- ldr r0, =sub_81B814C
- str r0, [r1, 0x4]
- adds r0, r4, 0
- bl sub_81B12C0
- b _081B8082
- .pool
-_081B807C:
- adds r0, r4, 0
- bl sub_81B8088
-_081B8082:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81B8044
-
- thumb_func_start sub_81B8088
-sub_81B8088: @ 81B8088
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B80E4
- ldr r4, =gUnknown_0203CEC8
- ldrh r5, [r4, 0xC]
- movs r0, 0x9
- ldrsb r0, [r4, r0]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r6, =gPlayerParty
- adds r0, r6
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81B1C84
- movs r0, 0x9
- ldrsb r0, [r4, r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- adds r1, r5, 0
- bl sub_81B1DB8
- adds r0, r5, 0
- bl sub_81B83F0
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B8104
- str r1, [r0]
-_081B80E4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8088
-
- thumb_func_start sub_81B8104
-sub_81B8104: @ 81B8104
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gUnknown_0203CEC8
- ldrb r4, [r0, 0x9]
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B8138
- lsls r2, r4, 24
- asrs r2, 24
- movs r0, 0x64
- muls r0, r2
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gUnknown_0203CEDC
- lsls r2, 4
- ldr r1, [r1]
- adds r1, r2
- bl sub_81B5C94
- adds r0, r5, 0
- bl sub_81B12C0
-_081B8138:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8104
-
- thumb_func_start sub_81B814C
-sub_81B814C: @ 81B814C
- push {r4-r6,lr}
- ldr r4, =gUnknown_0203CEC8
- movs r0, 0x9
- ldrsb r0, [r4, r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- ldrh r1, [r4, 0xC]
- bl sub_81B1DB8
- movs r0, 0x9
- ldrsb r0, [r4, r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0x40
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- ldr r0, =0x00002be0
- adds r2, r0
- ldr r1, [r1]
- adds r1, r2
- ldr r2, =sub_81B81A8
- movs r0, 0x4
- movs r3, 0x3
- bl sub_811A20C
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B814C
-
- thumb_func_start sub_81B81A8
-sub_81B81A8: @ 81B81A8
- push {r4-r7,lr}
- sub sp, 0xC
- ldr r6, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r6, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r0, =gSpecialVar_Result
- ldrh r0, [r0]
- cmp r0, 0
- bne _081B8208
- adds r0, r5, 0
- bl TakeMailFromMon
- ldr r4, =gUnknown_0203CEFC
- adds r0, r5, 0
- movs r1, 0xC
- adds r2, r4, 0
- bl SetMonData
- ldrh r0, [r4]
- movs r1, 0x1
- bl RemoveBagItem
- adds r0, r7, 0
- bl sub_81B841C
- ldr r0, [r6]
- bl SetMainCallback2
- b _081B8224
- .pool
-_081B8208:
- ldrb r0, [r6, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r6, 0xB]
- movs r1, 0x7F
- str r1, [sp]
- ldr r1, =sub_81B8230
- str r1, [sp, 0x4]
- ldr r1, [r6]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl sub_81B0038
-_081B8224:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B81A8
-
- thumb_func_start sub_81B8230
-sub_81B8230: @ 81B8230
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B828A
- ldr r1, =gUnknown_0203CEFC
- ldrh r0, [r1]
- cmp r0, 0
- beq _081B8264
- ldr r0, =gUnknown_0203CEC8
- ldrh r0, [r0, 0xC]
- ldrh r1, [r1]
- movs r2, 0
- bl sub_81B1D68
- b _081B827C
- .pool
-_081B8264:
- ldr r2, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r2, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldrh r1, [r2, 0xC]
- movs r2, 0
- movs r3, 0x1
- bl sub_81B1C84
-_081B827C:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B8104
- str r0, [r1]
-_081B828A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8230
-
- thumb_func_start sub_81B82A0
-sub_81B82A0: @ 81B82A0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81B1BD4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B82C4
- bl sub_81B334C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B82D4
- str r0, [r1]
-_081B82C4:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B82A0
-
- thumb_func_start sub_81B82D4
-sub_81B82D4: @ 81B82D4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081B82FA
- cmp r1, 0
- bgt _081B82F4
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081B8394
- b _081B83A8
-_081B82F4:
- cmp r1, 0x1
- beq _081B839A
- b _081B83A8
-_081B82FA:
- ldr r7, =gUnknown_0203CEC8
- ldrh r4, [r7, 0xC]
- adds r0, r4, 0
- bl sub_81B83F0
- ldr r6, =gUnknown_0203CEFC
- ldrh r0, [r6]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- bne _081B8338
- adds r0, r4, 0
- bl sub_81B841C
- ldrh r0, [r6]
- bl pokemon_item_not_removed
- ldr r0, =gStringVar4
- movs r1, 0
- bl sub_81B1B5C
- b _081B8378
- .pool
-_081B8338:
- adds r0, r4, 0
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081B835C
- ldr r0, =gUnknown_0203CEC4
- ldr r1, [r0]
- ldr r0, =sub_81B814C
- str r0, [r1, 0x4]
- adds r0, r5, 0
- bl sub_81B12C0
- b _081B83A8
- .pool
-_081B835C:
- movs r1, 0x9
- ldrsb r1, [r7, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_81B1DB8
- ldrh r1, [r6]
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_81B1D68
-_081B8378:
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B8104
- str r1, [r0]
- b _081B83A8
- .pool
-_081B8394:
- movs r0, 0x5
- bl PlaySE
-_081B839A:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B8104
- str r0, [r1]
-_081B83A8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B82D4
-
- thumb_func_start sub_81B83B8
-sub_81B83B8: @ 81B83B8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gText_RemoveMailBeforeItem
- movs r1, 0x1
- bl sub_81B1B5C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81B8104
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B83B8
-
- thumb_func_start sub_81B83F0
-sub_81B83F0: @ 81B83F0
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0xB]
- cmp r0, 0x6
- bne _081B8410
- lsls r0, r1, 24
- lsrs r0, 24
- movs r1, 0x1
- bl RemovePCItem
- b _081B8418
- .pool
-_081B8410:
- adds r0, r1, 0
- movs r1, 0x1
- bl RemoveBagItem
-_081B8418:
- pop {r0}
- bx r0
- thumb_func_end sub_81B83F0
-
- thumb_func_start sub_81B841C
-sub_81B841C: @ 81B841C
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0xB]
- cmp r0, 0x5
- beq _081B8438
- adds r0, r1, 0
- movs r1, 0x1
- bl AddPCItem
- b _081B8440
- .pool
-_081B8438:
- adds r0, r1, 0
- movs r1, 0x1
- bl AddBagItem
-_081B8440:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_81B841C
-
- thumb_func_start sub_81B8448
-sub_81B8448: @ 81B8448
- push {lr}
- sub sp, 0xC
- movs r0, 0x6
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =Mailbox_ReturnToMailListAfterDeposit
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x7
- movs r3, 0
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8448
-
- thumb_func_start sub_81B8474
-sub_81B8474: @ 81B8474
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gUnknown_0203CEC8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0
- strb r0, [r1]
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =playerPCItemPageInfo
- ldrh r1, [r0]
- adds r1, 0x6
- ldrh r0, [r0, 0x2]
- adds r1, r0
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x00002be0
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- cmp r0, 0
- beq _081B84DC
- ldr r0, =gText_PkmnHoldingItemCantHoldMail
- movs r1, 0x1
- bl sub_81B1B5C
- b _081B84F2
- .pool
-_081B84DC:
- adds r0, r5, 0
- adds r1, r4, 0
- bl GiveMailToMon2
- adds r0, r4, 0
- bl ClearMailStruct
- ldr r0, =gText_MailTransferredFromMailbox
- movs r1, 0x1
- bl sub_81B1B5C
-_081B84F2:
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B8104
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8474
-
- thumb_func_start sub_81B8518
-sub_81B8518: @ 81B8518
- push {lr}
- sub sp, 0xC
- bl sub_81B8558
- movs r0, 0
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- str r0, [sp, 0x8]
- movs r0, 0x4
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_81B0038
- ldr r1, =gUnknown_0203CEC8
- ldr r0, =sub_81B879C
- str r0, [r1, 0x4]
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8518
-
- thumb_func_start sub_81B8558
-sub_81B8558: @ 81B8558
- push {lr}
- ldr r0, =gSelectedOrderFromParty
- movs r1, 0
- movs r2, 0x4
- bl memset
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8558
-
- thumb_func_start sub_81B856C
-sub_81B856C: @ 81B856C
- push {r4,lr}
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- bl sub_81B85AC
- lsls r0, 24
- cmp r0, 0
- bne _081B858C
- movs r0, 0x2
- b _081B85A4
- .pool
-_081B858C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r0, 24
- bl sub_81B8770
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B85A2
- movs r0, 0
- b _081B85A4
-_081B85A2:
- movs r0, 0x1
-_081B85A4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B856C
-
- thumb_func_start sub_81B85AC
-sub_81B85AC: @ 81B85AC
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r6, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _081B8608
- adds r0, r5, 0
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- bl sub_81B8888
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bhi _081B8608
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- ldr r0, =0x0000191a
- cmp r1, r0
- bne _081B85EA
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- cmp r0, 0
- bne _081B8608
-_081B85EA:
- ldr r0, =0x000040cf
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- beq _081B864A
- cmp r0, 0x9
- bne _081B8618
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _081B864A
-_081B8608:
- movs r0, 0
- b _081B864C
- .pool
-_081B8618:
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r3, =gFrontierBannedSpecies
- lsls r1, r6, 1
- adds r0, r1, r3
- ldrh r0, [r0]
- ldr r2, =0x0000ffff
- cmp r0, r2
- beq _081B864A
-_081B8632:
- adds r0, r1, r3
- ldrh r0, [r0]
- cmp r0, r4
- beq _081B8608
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, r6, 1
- adds r0, r1, r3
- ldrh r0, [r0]
- cmp r0, r2
- bne _081B8632
-_081B864A:
- movs r0, 0x1
-_081B864C:
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B85AC
-
- thumb_func_start sub_81B865C
-sub_81B865C: @ 81B865C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- bl sub_81B885C
- lsls r0, 24
- lsrs r2, r0, 24
- adds r1, r2, 0
- ldr r3, =gSelectedOrderFromParty
- adds r0, r2, r3
- subs r0, 0x1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081B869C
- cmp r2, 0x1
- bne _081B8688
- movs r0, 0xE
- b _081B8758
- .pool
-_081B8688:
- ldr r0, =gStringVar1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- movs r0, 0x11
- b _081B8758
- .pool
-_081B869C:
- ldr r0, =0x000040cf
- bl VarGet
- lsls r0, 24
- movs r1, 0xF8
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bhi _081B86C0
- b _081B8756
- .pool
-_081B86B8:
- movs r0, 0x12
- b _081B8758
-_081B86BC:
- movs r0, 0x13
- b _081B8758
-_081B86C0:
- bl sub_81B8830
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r5, 0
- b _081B8750
-_081B86CE:
- ldr r3, =gSelectedOrderFromParty
- adds r4, r3, r5
- ldrb r0, [r4]
- movs r1, 0x64
- muls r0, r1
- subs r0, 0x64
- ldr r3, =gPlayerParty
- adds r0, r3, r0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- ldrb r0, [r4]
- movs r1, 0x64
- muls r0, r1
- subs r0, 0x64
- ldr r3, =gPlayerParty
- adds r0, r3, r0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r1, r5, 0x1
- lsls r0, r1, 24
- lsrs r4, r0, 24
- mov r9, r1
- cmp r4, r8
- bcs _081B8748
- movs r7, 0x64
-_081B870E:
- ldr r0, =gSelectedOrderFromParty
- adds r5, r0, r4
- ldrb r0, [r5]
- muls r0, r7
- subs r0, 0x64
- ldr r1, =gPlayerParty
- adds r0, r1, r0
- movs r1, 0xB
- bl GetMonData
- cmp r10, r0
- beq _081B86B8
- cmp r6, 0
- beq _081B873E
- ldrb r0, [r5]
- muls r0, r7
- subs r0, 0x64
- ldr r3, =gPlayerParty
- adds r0, r3, r0
- movs r1, 0xC
- bl GetMonData
- cmp r6, r0
- beq _081B86BC
-_081B873E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r8
- bcc _081B870E
-_081B8748:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r5, r0, 24
- mov r0, r8
-_081B8750:
- subs r0, 0x1
- cmp r5, r0
- blt _081B86CE
-_081B8756:
- movs r0, 0xFF
-_081B8758:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B865C
-
- thumb_func_start sub_81B8770
-sub_81B8770: @ 81B8770
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r3, =gSelectedOrderFromParty
-_081B877A:
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _081B878C
- movs r0, 0x1
- b _081B8798
- .pool
-_081B878C:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bls _081B877A
- movs r0, 0
-_081B8798:
- pop {r1}
- bx r1
- thumb_func_end sub_81B8770
-
- thumb_func_start sub_81B879C
-sub_81B879C: @ 81B879C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_81B865C
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- beq _081B87D4
- movs r0, 0x20
- bl PlaySE
- adds r0, r4, 0
- bl display_pokemon_menu_message
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B87E8
- str r0, [r1]
- b _081B87E0
- .pool
-_081B87D4:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81B12C0
-_081B87E0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81B879C
-
- thumb_func_start sub_81B87E8
-sub_81B87E8: @ 81B87E8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081B8802
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081B881C
-_081B8802:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl display_pokemon_menu_message
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B1370
- str r0, [r1]
-_081B881C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B87E8
-
- thumb_func_start sub_81B8830
-sub_81B8830: @ 81B8830
- push {lr}
- ldr r0, =0x000040cf
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- beq _081B884C
- cmp r0, 0x9
- bne _081B8850
- movs r0, 0x3
- b _081B8854
- .pool
-_081B884C:
- movs r0, 0x2
- b _081B8854
-_081B8850:
- ldr r0, =gSpecialVar_0x8005
- ldrb r0, [r0]
-_081B8854:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B8830
-
- thumb_func_start sub_81B885C
-sub_81B885C: @ 81B885C
- push {lr}
- ldr r0, =0x000040cf
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- beq _081B8878
- cmp r0, 0x9
- bne _081B887C
- movs r0, 0x1
- b _081B8880
- .pool
-_081B8878:
- movs r0, 0x2
- b _081B8880
-_081B887C:
- ldr r0, =gSpecialVar_0x8005
- ldrb r0, [r0]
-_081B8880:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B885C
-
- thumb_func_start sub_81B8888
-sub_81B8888: @ 81B8888
- push {lr}
- ldr r0, =0x000040cf
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- beq _081B88A4
- cmp r0, 0x9
- bne _081B88A8
-_081B889C:
- movs r0, 0x64
- b _081B88B2
- .pool
-_081B88A4:
- movs r0, 0x1E
- b _081B88B2
-_081B88A8:
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _081B889C
- movs r0, 0x32
-_081B88B2:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B8888
-
- thumb_func_start sub_81B88BC
-sub_81B88BC: @ 81B88BC
- push {lr}
- ldr r0, =0x000040cf
- bl VarGet
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xF8
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x1
- bhi _081B88E0
- ldr r0, =gText_CancelBattle
- b _081B88FA
- .pool
-_081B88E0:
- cmp r1, 0x1
- bne _081B88F8
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- cmp r0, 0x2
- bne _081B88F8
- ldr r0, =gText_ReturnToWaitingRoom
- b _081B88FA
- .pool
-_081B88F8:
- ldr r0, =gText_CancelChallenge
-_081B88FA:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B88BC
-
- thumb_func_start sub_81B8904
-sub_81B8904: @ 81B8904
- push {lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- str r2, [sp]
- ldr r2, =sub_81B1370
- str r2, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8904
-
- thumb_func_start sub_81B892C
-sub_81B892C: @ 81B892C
- push {lr}
- sub sp, 0xC
- movs r0, 0x4
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0xC
- movs r3, 0
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B892C
-
- thumb_func_start sub_81B8958
-sub_81B8958: @ 81B8958
- push {lr}
- sub sp, 0xC
- movs r0, 0x1
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic
- str r0, [sp, 0x8]
- movs r0, 0xB
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8958
-
- thumb_func_start sub_81B8984
-sub_81B8984: @ 81B8984
- push {lr}
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _081B8994
- movs r0, 0
- b _081B89A6
-_081B8994:
- bl sub_81B1250
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081B89A4
- movs r0, 0x1
- b _081B89A6
-_081B89A4:
- movs r0, 0x2
-_081B89A6:
- pop {r1}
- bx r1
- thumb_func_end sub_81B8984
-
- thumb_func_start OpenPartyMenuInBattle
-OpenPartyMenuInBattle: @ 81B89AC
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_81B8984
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =SetCB2ToReshowScreenAfterMenu
- str r0, [sp, 0x8]
- movs r0, 0x1
- adds r2, r4, 0
- movs r3, 0
- bl sub_81B0038
- bl nullsub_35
- bl pokemon_change_order
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end OpenPartyMenuInBattle
-
- thumb_func_start sub_81B89F0
-sub_81B89F0: @ 81B89F0
- push {lr}
- sub sp, 0xC
- bl sub_81B8984
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x5
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =c2_815ABFC
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r2, 0x3
- movs r3, 0
- bl sub_81B0038
- bl nullsub_35
- bl pokemon_change_order
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B89F0
-
- thumb_func_start sub_81B8A2C
-sub_81B8A2C: @ 81B8A2C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gPlayerParty + 0x64
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B8A74
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _081B8A74
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0xB]
- cmp r0, 0x1
- bne _081B8A5C
- movs r0, 0x3
- b _081B8A76
- .pool
-_081B8A5C:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- bne _081B8A74
- movs r0, 0x2
- b _081B8A76
- .pool
-_081B8A74:
- movs r0, 0x7
-_081B8A76:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81B8A2C
-
- thumb_func_start sub_81B8A7C
-sub_81B8A7C: @ 81B8A7C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_81B1250
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B8AC4
- cmp r5, 0x1
- beq _081B8AA2
- cmp r5, 0x4
- beq _081B8AA2
- cmp r5, 0x5
- bne _081B8AC4
-_081B8AA2:
- ldr r4, =gStringVar1
- bl GetTrainerPartnerName
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, =gStringVar4
- ldr r1, =gText_CantSwitchWithAlly
- b _081B8C42
- .pool
-_081B8AC4:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _081B8AF8
- ldr r1, =gStringVar1
- adds r0, r4, 0
- bl GetMonNickname
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnHasNoEnergy
- b _081B8C42
- .pool
-_081B8AF8:
- movs r4, 0
- b _081B8B24
-_081B8AFC:
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _081B8B1E
- adds r0, r5, 0
- bl sub_81B8F38
- lsls r0, 24
- ldr r2, =gBattlerPartyIndexes
- lsls r1, r4, 1
- adds r1, r2
- lsrs r0, 24
- ldrh r1, [r1]
- cmp r0, r1
- beq _081B8BFC
-_081B8B1E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_081B8B24:
- ldr r0, =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _081B8AFC
- movs r7, 0x64
- adds r0, r5, 0
- muls r0, r7
- ldr r1, =gPlayerParty
- mov r8, r1
- adds r6, r0, r1
- adds r0, r6, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _081B8B60
- ldr r0, =gStringVar4
- ldr r1, =gText_EggCantBattle
- b _081B8C42
- .pool
-_081B8B60:
- adds r0, r5, 0
- bl sub_81B8F38
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r1, 0x8B
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bne _081B8B94
- ldr r1, =gStringVar1
- adds r0, r6, 0
- bl GetMonNickname
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnAlreadySelected
- b _081B8C42
- .pool
-_081B8B94:
- ldr r0, =gUnknown_0203CEC8
- ldrb r0, [r0, 0xB]
- cmp r0, 0x4
- bne _081B8BA8
- bl SetMonPreventsSwitchingString
- b _081B8C46
- .pool
-_081B8BA8:
- cmp r0, 0x2
- beq _081B8C20
- adds r0, r5, 0
- bl sub_81B8F38
- ldr r1, =gUnknown_0203CEE9
- strb r0, [r1]
- ldr r1, =gUnknown_0203CEE8
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerInMenuId
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- bl pokemon_order_func
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_81B8FB0
- adds r0, r4, 0
- muls r0, r7
- add r0, r8
- adds r1, r6, 0
- bl sub_81B1288
- movs r0, 0x1
- b _081B8C48
- .pool
-_081B8BFC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnAlreadyInBattle
- b _081B8C42
- .pool
-_081B8C20:
- ldr r0, =gBattlerInMenuId
- ldrb r0, [r0]
- ldr r1, =gBattlerPartyIndexes
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- bl pokemon_order_func
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- add r0, r8
- ldr r1, =gStringVar1
- bl GetMonNickname
- ldr r0, =gStringVar4
- ldr r1, =gText_PkmnCantSwitchOut
-_081B8C42:
- bl StringExpandPlaceholders
-_081B8C46:
- movs r0, 0
-_081B8C48:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B8A7C
-
- thumb_func_start sub_81B8C68
-sub_81B8C68: @ 81B8C68
- push {r4,lr}
- ldr r4, =gUnknown_0203CF00
- bl sub_806D7EC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_81B8C88
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8C68
-
- thumb_func_start sub_81B8C88
-sub_81B8C88: @ 81B8C88
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- bl sub_81B1250
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B8CBE
- cmp r4, 0
- beq _081B8CB0
- movs r0, 0x30
- strb r0, [r6]
- movs r0, 0x45
- strb r0, [r6, 0x1]
- movs r0, 0x12
- strb r0, [r6, 0x2]
- b _081B8D58
-_081B8CB0:
- movs r0, 0x3
- strb r0, [r6]
- movs r0, 0x12
- strb r0, [r6, 0x1]
- movs r0, 0x45
- strb r0, [r6, 0x2]
- b _081B8D58
-_081B8CBE:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _081B8CFC
- movs r5, 0x1
- movs r0, 0
- bl GetBattlerAtPosition
- mov r2, sp
- ldr r1, =gBattlerPartyIndexes
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r0, [r0]
- strb r0, [r2]
- movs r4, 0
- mov r1, sp
-_081B8CE2:
- ldrb r0, [r1]
- cmp r4, r0
- beq _081B8CF0
- mov r2, sp
- adds r0, r2, r5
- strb r4, [r0]
- adds r5, 0x1
-_081B8CF0:
- adds r4, 0x1
- cmp r4, 0x5
- ble _081B8CE2
- b _081B8D40
- .pool
-_081B8CFC:
- movs r5, 0x2
- movs r0, 0
- bl GetBattlerAtPosition
- mov r1, sp
- ldr r4, =gBattlerPartyIndexes
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r0, [r0]
- strb r0, [r1]
- movs r0, 0x2
- bl GetBattlerAtPosition
- mov r1, sp
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r0, [r0]
- strb r0, [r1, 0x1]
- movs r4, 0
-_081B8D26:
- ldrb r0, [r1]
- cmp r4, r0
- beq _081B8D3A
- ldrb r0, [r1, 0x1]
- cmp r4, r0
- beq _081B8D3A
- mov r2, sp
- adds r0, r2, r5
- strb r4, [r0]
- adds r5, 0x1
-_081B8D3A:
- adds r4, 0x1
- cmp r4, 0x5
- ble _081B8D26
-_081B8D40:
- movs r4, 0
- mov r3, sp
-_081B8D44:
- adds r0, r6, r4
- ldrb r1, [r3]
- lsls r1, 4
- ldrb r2, [r3, 0x1]
- orrs r1, r2
- strb r1, [r0]
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x2
- ble _081B8D44
-_081B8D58:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8C88
-
- thumb_func_start sub_81B8D64
-sub_81B8D64: @ 81B8D64
- push {lr}
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, =gBattleStruct
- lsls r3, r2, 1
- adds r3, r2
- adds r3, 0x60
- ldr r0, [r0]
- adds r0, r3
- bl sub_81B8D88
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8D64
-
- thumb_func_start sub_81B8D88
-sub_81B8D88: @ 81B8D88
- push {r4-r7,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r0, r2, 0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _081B8DB0
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- b _081B8DBC
-_081B8DB0:
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x3
-_081B8DBC:
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r6, r0, 24
- bl sub_81B1250
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081B8DF0
- cmp r7, 0
- beq _081B8DE2
- movs r0, 0x30
- strb r0, [r5]
- movs r0, 0x45
- strb r0, [r5, 0x1]
- movs r0, 0x12
- strb r0, [r5, 0x2]
- b _081B8E72
-_081B8DE2:
- movs r0, 0x3
- strb r0, [r5]
- movs r0, 0x12
- strb r0, [r5, 0x1]
- movs r0, 0x45
- strb r0, [r5, 0x2]
- b _081B8E72
-_081B8DF0:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _081B8E28
- movs r3, 0x1
- mov r2, sp
- ldr r1, =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- strb r0, [r2]
- movs r4, 0
- mov r1, sp
-_081B8E0C:
- ldrb r0, [r1]
- cmp r4, r0
- beq _081B8E1A
- mov r2, sp
- adds r0, r2, r3
- strb r4, [r0]
- adds r3, 0x1
-_081B8E1A:
- adds r4, 0x1
- cmp r4, 0x5
- ble _081B8E0C
- b _081B8E5A
- .pool
-_081B8E28:
- movs r3, 0x2
- mov r1, sp
- ldr r2, =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- lsls r0, r6, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x1]
- movs r4, 0
-_081B8E40:
- ldrb r0, [r1]
- cmp r4, r0
- beq _081B8E54
- ldrb r0, [r1, 0x1]
- cmp r4, r0
- beq _081B8E54
- mov r2, sp
- adds r0, r2, r3
- strb r4, [r0]
- adds r3, 0x1
-_081B8E54:
- adds r4, 0x1
- cmp r4, 0x5
- ble _081B8E40
-_081B8E5A:
- movs r4, 0
- mov r3, sp
-_081B8E5E:
- adds r0, r5, r4
- ldrb r1, [r3]
- lsls r1, 4
- ldrb r2, [r3, 0x1]
- orrs r1, r2
- strb r1, [r0]
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x2
- ble _081B8E5E
-_081B8E72:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8D88
-
- thumb_func_start sub_81B8E80
-sub_81B8E80: @ 81B8E80
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- movs r7, 0
- bl sub_81B1250
- lsls r0, 24
- cmp r0, 0
- beq _081B8F2E
- ldr r0, =gBattleStruct
- lsls r1, r4, 1
- adds r1, r4
- adds r1, 0x60
- ldr r0, [r0]
- adds r4, r0, r1
- movs r2, 0
- add r6, sp
- mov r12, r6
- movs r6, 0xF
- mov r3, sp
-_081B8EB2:
- adds r1, r4, r2
- ldrb r0, [r1]
- lsrs r0, 4
- strb r0, [r3]
- adds r3, 0x1
- ldrb r1, [r1]
- adds r0, r6, 0
- ands r0, r1
- strb r0, [r3]
- adds r3, 0x1
- adds r2, 0x1
- cmp r2, 0x2
- ble _081B8EB2
- mov r0, r12
- ldrb r3, [r0]
- movs r2, 0
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, r5
- bne _081B8EE8
- mov r0, sp
- ldrb r7, [r0]
- strb r3, [r0]
- b _081B8EFC
- .pool
-_081B8EE8:
- adds r2, 0x1
- cmp r2, 0x5
- bgt _081B8EFC
- mov r0, sp
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, r5
- bne _081B8EE8
- adds r7, r0, 0
- strb r3, [r1]
-_081B8EFC:
- cmp r2, 0x6
- beq _081B8F2E
- mov r0, r12
- strb r7, [r0]
- mov r0, sp
- ldrb r0, [r0]
- lsls r0, 4
- mov r1, sp
- ldrb r1, [r1, 0x1]
- orrs r0, r1
- strb r0, [r4]
- mov r0, sp
- ldrb r0, [r0, 0x2]
- lsls r0, 4
- mov r1, sp
- ldrb r1, [r1, 0x3]
- orrs r0, r1
- strb r0, [r4, 0x1]
- mov r0, sp
- ldrb r0, [r0, 0x4]
- lsls r0, 4
- mov r1, sp
- ldrb r1, [r1, 0x5]
- orrs r0, r1
- strb r0, [r4, 0x2]
-_081B8F2E:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B8E80
-
- thumb_func_start sub_81B8F38
-sub_81B8F38: @ 81B8F38
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0x1
- ands r1, r2
- lsrs r2, r0, 25
- cmp r1, 0
- beq _081B8F58
- ldr r0, =gUnknown_0203CF00
- adds r0, r2, r0
- ldrb r0, [r0]
- movs r1, 0xF
- ands r1, r0
- b _081B8F60
- .pool
-_081B8F58:
- ldr r0, =gUnknown_0203CF00
- adds r0, r2, r0
- ldrb r0, [r0]
- lsrs r1, r0, 4
-_081B8F60:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81B8F38
-
- thumb_func_start sub_81B8F6C
-sub_81B8F6C: @ 81B8F6C
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- movs r1, 0x1
- ands r1, r3
- lsrs r3, r0, 25
- cmp r1, 0
- beq _081B8F94
- ldr r0, =gUnknown_0203CF00
- adds r0, r3, r0
- ldrb r2, [r0]
- movs r1, 0xF0
- ands r1, r2
- orrs r1, r4
- strb r1, [r0]
- b _081B8FA4
- .pool
-_081B8F94:
- ldr r2, =gUnknown_0203CF00
- adds r2, r3, r2
- ldrb r1, [r2]
- movs r0, 0xF
- ands r0, r1
- lsls r1, r4, 4
- orrs r0, r1
- strb r0, [r2]
-_081B8FA4:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B8F6C
-
- thumb_func_start sub_81B8FB0
-sub_81B8FB0: @ 81B8FB0
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- adds r0, r5, 0
- bl sub_81B8F38
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- bl sub_81B8F38
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl sub_81B8F6C
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_81B8F6C
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81B8FB0
-
- thumb_func_start pokemon_order_func
-pokemon_order_func: @ 81B8FEC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r3, 0
- movs r2, 0
- ldr r5, =gUnknown_0203CF00
-_081B8FF8:
- adds r0, r3, r5
- ldrb r1, [r0]
- lsrs r0, r1, 4
- cmp r0, r4
- beq _081B9010
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- movs r0, 0xF
- ands r0, r1
- cmp r0, r4
- bne _081B9018
-_081B9010:
- adds r0, r2, 0
- b _081B902A
- .pool
-_081B9018:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x2
- bls _081B8FF8
- movs r0, 0
-_081B902A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end pokemon_order_func
-
- thumb_func_start pokemon_change_order
-pokemon_change_order: @ 81B9030
- push {r4-r6,lr}
- movs r4, 0x96
- lsls r4, 2
- adds r0, r4, 0
- bl Alloc
- adds r5, r0, 0
- ldr r1, =gPlayerParty
- adds r2, r4, 0
- bl memcpy
- movs r4, 0
- movs r6, 0x64
-_081B904A:
- adds r0, r4, 0
- bl pokemon_order_func
- lsls r0, 24
- lsrs r0, 24
- muls r0, r6
- ldr r1, =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- muls r1, r6
- adds r1, r5
- movs r2, 0x64
- bl memcpy
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _081B904A
- adds r0, r5, 0
- bl Free
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end pokemon_change_order
-
- thumb_func_start sub_81B9080
-sub_81B9080: @ 81B9080
- push {r4-r6,lr}
- movs r4, 0x96
- lsls r4, 2
- adds r0, r4, 0
- bl Alloc
- adds r5, r0, 0
- ldr r1, =gPlayerParty
- adds r2, r4, 0
- bl memcpy
- movs r4, 0
- movs r6, 0x64
-_081B909A:
- adds r0, r4, 0
- bl sub_81B8F38
- lsls r0, 24
- lsrs r0, 24
- muls r0, r6
- ldr r1, =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- muls r1, r6
- adds r1, r5
- movs r2, 0x64
- bl memcpy
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _081B909A
- adds r0, r5, 0
- bl Free
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9080
-
- thumb_func_start sub_81B90D0
-sub_81B90D0: @ 81B90D0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0x1
- movs r7, 0x64
- ldr r0, =gPlayerParty
- mov r8, r0
-_081B90DE:
- adds r0, r6, 0
- bl sub_81B8F38
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- mov r1, r8
- adds r5, r0, r1
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081B912C
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _081B912C
- movs r0, 0
- bl sub_81B8F38
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- adds r1, r6, 0
- bl sub_81B8FB0
- adds r0, r4, 0
- muls r0, r7
- add r0, r8
- adds r1, r5, 0
- bl sub_81B1288
- b _081B9136
- .pool
-_081B912C:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x5
- bls _081B90DE
-_081B9136:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81B90D0
-
- thumb_func_start sub_81B9140
-sub_81B9140: @ 81B9140
- push {lr}
- ldr r0, =SetCB2ToReshowScreenAfterMenu
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9140
-
- thumb_func_start sub_81B9150
-sub_81B9150: @ 81B9150
- push {lr}
- sub sp, 0xC
- movs r0, 0x7F
- str r0, [sp]
- ldr r0, =sub_81B917C
- str r0, [sp, 0x4]
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- str r0, [sp, 0x8]
- movs r0, 0x5
- movs r1, 0x3
- movs r2, 0
- movs r3, 0
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9150
-
- thumb_func_start sub_81B917C
-sub_81B917C: @ 81B917C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r1, 0x80
- lsls r1, 1
- strh r1, [r4, 0x8]
- bl sub_81B9294
- movs r1, 0x80
- lsls r1, 9
- movs r0, 0x2
- movs r2, 0
- bl ChangeBgX
- ldr r0, =sub_81B91B4
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B917C
-
- thumb_func_start sub_81B91B4
-sub_81B91B4: @ 81B91B4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r6, r5, 2
- adds r0, r6, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081B9220
- ldrh r0, [r4]
- subs r0, 0x8
- strh r0, [r4]
- adds r0, r5, 0
- bl sub_81B9294
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081B9220
- movs r4, 0x3
- ldr r7, =gUnknown_02022FF8
-_081B91E8:
- subs r0, r4, 0x3
- lsls r0, 5
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, 0
- beq _081B9204
- ldr r0, =gUnknown_0203CEDC
- ldr r1, [r0]
- lsls r0, r4, 4
- adds r0, r1
- ldrb r0, [r0, 0x9]
- movs r1, 0
- bl sub_81B5B6C
-_081B9204:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _081B91E8
- movs r0, 0x78
- bl PlaySE
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81B9240
- str r0, [r1]
-_081B9220:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B91B4
-
- thumb_func_start sub_81B9240
-sub_81B9240: @ 81B9240
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- strh r1, [r0]
- lsls r1, 16
- movs r0, 0x80
- lsls r0, 17
- cmp r1, r0
- bne _081B9266
- adds r0, r2, 0
- bl sub_81B12C0
-_081B9266:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9240
-
- thumb_func_start sub_81B9270
-sub_81B9270: @ 81B9270
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 16
- lsrs r3, r1, 16
- cmp r1, 0
- blt _081B928A
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- strh r3, [r0, 0x24]
-_081B928A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9270
-
- thumb_func_start sub_81B9294
-sub_81B9294: @ 81B9294
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r5, r1, r0
- movs r6, 0x3
- ldr r7, =gUnknown_0203CEDC
-_081B92A8:
- ldr r0, =gUnknown_02022FF8
- subs r1, r6, 0x3
- lsls r1, 5
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _081B9300
- ldr r0, [r7]
- lsls r4, r6, 4
- adds r0, r4, r0
- ldrb r0, [r0, 0x9]
- ldrh r1, [r5]
- subs r1, 0x8
- lsls r1, 16
- asrs r1, 16
- bl sub_81B9270
- ldr r0, [r7]
- adds r0, r4, r0
- ldrb r0, [r0, 0xA]
- ldrh r1, [r5]
- subs r1, 0x8
- lsls r1, 16
- asrs r1, 16
- bl sub_81B9270
- ldr r0, [r7]
- adds r0, r4, r0
- ldrb r0, [r0, 0xB]
- ldrh r1, [r5]
- subs r1, 0x8
- lsls r1, 16
- asrs r1, 16
- bl sub_81B9270
- ldr r0, [r7]
- adds r4, r0
- ldrb r0, [r4, 0xC]
- ldrh r1, [r5]
- subs r1, 0x8
- lsls r1, 16
- asrs r1, 16
- bl sub_81B9270
-_081B9300:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x5
- bls _081B92A8
- movs r1, 0x80
- lsls r1, 4
- movs r0, 0x2
- movs r2, 0x1
- bl ChangeBgX
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9294
-
- thumb_func_start sub_81B9328
-sub_81B9328: @ 81B9328
- push {lr}
- sub sp, 0xC
- movs r0, 0xF
- str r0, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =sub_81B9390
- str r0, [sp, 0x8]
- movs r0, 0x6
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9328
-
- thumb_func_start sub_81B9354
-sub_81B9354: @ 81B9354
- push {lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gFieldCallback2
- ldr r1, =hm_add_c3_without_phase_2
- str r1, [r2]
- movs r1, 0
- str r1, [sp]
- ldr r1, =sub_81B1370
- str r1, [sp, 0x4]
- ldr r1, =CB2_ReturnToField
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0xB
- movs r3, 0
- bl sub_81B0038
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9354
-
- thumb_func_start sub_81B9390
-sub_81B9390: @ 81B9390
- push {r4,lr}
- ldr r4, =gSpecialVar_0x8004
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- cmp r0, 0x5
- bls _081B93A6
- movs r0, 0xFF
- strh r0, [r4]
-_081B93A6:
- ldr r0, =gFieldCallback2
- ldr r1, =hm_add_c3_without_phase_2
- str r1, [r0]
- ldr r0, =CB2_ReturnToField
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9390
-
- thumb_func_start hm_add_c3_without_phase_2
-hm_add_c3_without_phase_2: @ 81B93C8
- push {lr}
- bl pal_fill_black
- ldr r0, =task_hm_without_phase_2
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end hm_add_c3_without_phase_2
-
- thumb_func_start task_hm_without_phase_2
-task_hm_without_phase_2: @ 81B93E0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsWeatherNotFadingIn
- lsls r0, 24
- cmp r0, 0
- beq _081B93FE
- adds r0, r4, 0
- bl DestroyTask
- bl ScriptContext2_Disable
- bl EnableBothScriptContexts
-_081B93FE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task_hm_without_phase_2
-
- thumb_func_start sub_81B9404
-sub_81B9404: @ 81B9404
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0x1
- movs r1, 0
- bl FadeScreen
- ldr r0, =sub_81B9424
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9404
-
- thumb_func_start sub_81B9424
-sub_81B9424: @ 81B9424
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081B945C
- bl overworld_free_bg_tilemaps
- str r4, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =sub_81B9470
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0xB
- movs r3, 0
- bl sub_81B0038
- adds r0, r5, 0
- bl DestroyTask
-_081B945C:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9424
-
- thumb_func_start sub_81B9470
-sub_81B9470: @ 81B9470
- push {lr}
- bl GetCursorSelectionMonId
- ldr r2, =gUnknown_02039F24
- strb r0, [r2]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _081B9486
- movs r0, 0xFF
- strb r0, [r2]
-_081B9486:
- ldr r1, =gSpecialVar_0x8004
- ldrb r0, [r2]
- strh r0, [r1]
- ldr r1, =gFieldCallback2
- ldr r0, =hm_add_c3_without_phase_2
- str r0, [r1]
- ldr r0, =CB2_ReturnToField
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9470
-
- thumb_func_start sub_81B94B0
-sub_81B94B0: @ 81B94B0
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0x1
- movs r1, 0
- bl FadeScreen
- ldr r0, =sub_81B94D0
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B94B0
-
- thumb_func_start sub_81B94D0
-sub_81B94D0: @ 81B94D0
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081B9508
- bl overworld_free_bg_tilemaps
- str r4, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =sub_81B9390
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0xB
- movs r3, 0
- bl sub_81B0038
- adds r0, r5, 0
- bl DestroyTask
-_081B9508:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B94D0
-
- thumb_func_start sub_81B951C
-sub_81B951C: @ 81B951C
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0x1
- movs r1, 0
- bl FadeScreen
- ldr r0, =sub_81B953C
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B951C
-
- thumb_func_start sub_81B953C
-sub_81B953C: @ 81B953C
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081B9574
- bl overworld_free_bg_tilemaps
- str r4, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =sub_81B9588
- str r0, [sp, 0x8]
- movs r0, 0x7
- movs r1, 0
- movs r2, 0xB
- movs r3, 0
- bl sub_81B0038
- adds r0, r5, 0
- bl DestroyTask
-_081B9574:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B953C
-
- thumb_func_start sub_81B9588
-sub_81B9588: @ 81B9588
- push {r4,r5,lr}
- ldr r5, =gSpecialVar_0x8004
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- cmp r0, 0x5
- bls _081B95A4
- movs r0, 0xFF
- strh r0, [r5]
- b _081B95BA
- .pool
-_081B95A4:
- ldr r4, =gSpecialVar_0x8005
- ldrh r1, [r5]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- bl GetNumberOfRelearnableMoves
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
-_081B95BA:
- ldr r0, =gFieldCallback2
- ldr r1, =hm_add_c3_without_phase_2
- str r1, [r0]
- ldr r0, =CB2_ReturnToField
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9588
-
- thumb_func_start sub_81B95E0
-sub_81B95E0: @ 81B95E0
- push {r4,r5,lr}
- ldr r1, =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- movs r4, 0
- adds r5, r1, 0
- b _081B95FA
- .pool
-_081B95F4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_081B95FA:
- cmp r4, 0x2
- bhi _081B9614
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- cmp r0, 0
- beq _081B95F4
- movs r0, 0x1
- strh r0, [r5]
-_081B9614:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B95E0
-
- thumb_func_start sub_81B9620
-sub_81B9620: @ 81B9620
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0x1
- movs r1, 0
- bl FadeScreen
- ldr r0, =sub_81B9640
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9620
-
- thumb_func_start sub_81B9640
-sub_81B9640: @ 81B9640
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081B9678
- bl overworld_free_bg_tilemaps
- str r4, [sp]
- ldr r0, =sub_81B1370
- str r0, [sp, 0x4]
- ldr r0, =sub_81B9390
- str r0, [sp, 0x8]
- movs r0, 0xC
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_81B0038
- adds r0, r5, 0
- bl DestroyTask
-_081B9678:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9640
-
- thumb_func_start sub_81B968C
-sub_81B968C: @ 81B968C
- push {lr}
- sub sp, 0x4
- ldr r1, =gPlayerParty
- ldr r0, =gSpecialVar_0x8004
- ldrb r2, [r0]
- ldr r0, =gPlayerPartyCount
- ldrb r3, [r0]
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =CB2_ReturnToField
- str r0, [sp]
- movs r0, 0x3
- bl ShowPokemonSummaryScreen
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF168
- str r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B968C
-
- thumb_func_start sub_81B96D0
-sub_81B96D0: @ 81B96D0
- push {r4,r5,lr}
- ldr r1, =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- movs r4, 0
- adds r5, r1, 0
-_081B96DC:
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0xD
- bl GetMonData
- cmp r0, 0
- beq _081B96FA
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_081B96FA:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081B96DC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B96D0
-
- thumb_func_start sub_81B9718
-sub_81B9718: @ 81B9718
- push {r4,r5,lr}
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- adds r5, r1, 0
- muls r5, r0
- ldr r0, =gPlayerParty
- adds r5, r0
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- adds r1, 0xD
- adds r0, r5, 0
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r0, =gStringVar2
- movs r1, 0xD
- muls r1, r4
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9718
-
- thumb_func_start sub_81B9770
-sub_81B9770: @ 81B9770
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, =gSpecialVar_0x8004
- mov r8, r0
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- ldr r4, =gSpecialVar_0x8005
- ldrb r2, [r4]
- movs r1, 0
- bl SetMonMoveSlot
- mov r1, r8
- ldrh r0, [r1]
- muls r0, r6
- adds r0, r5
- ldrb r1, [r4]
- bl RemoveMonPPBonus
- ldrh r4, [r4]
- cmp r4, 0x2
- bhi _081B97C4
-_081B97A2:
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- lsls r1, r4, 24
- lsrs r1, 24
- adds r4, 0x1
- lsls r2, r4, 24
- lsrs r2, 24
- bl sub_81B97DC
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x2
- bls _081B97A2
-_081B97C4:
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9770
-
- thumb_func_start sub_81B97DC
-sub_81B97DC: @ 81B97DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- mov r8, r0
- adds r5, r1, 0
- adds r4, r2, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r0, 0xD
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r1, [sp, 0x8]
- bl GetMonData
- mov r1, sp
- adds r1, 0x2
- str r1, [sp, 0x14]
- strh r0, [r1]
- adds r3, r4, 0
- adds r3, 0xD
- str r3, [sp, 0xC]
- mov r0, r8
- adds r1, r3, 0
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- adds r7, r5, 0
- adds r7, 0x11
- str r7, [sp, 0x10]
- mov r0, r8
- adds r1, r7, 0
- bl GetMonData
- mov r1, sp
- adds r1, 0x5
- str r1, [sp, 0x18]
- strb r0, [r1]
- adds r3, r4, 0
- adds r3, 0x11
- str r3, [sp, 0x1C]
- mov r0, r8
- adds r1, r3, 0
- bl GetMonData
- add r7, sp, 0x4
- mov r10, r7
- strb r0, [r7]
- mov r0, r8
- movs r1, 0x15
- bl GetMonData
- mov r6, sp
- adds r6, 0x6
- strb r0, [r6]
- ldr r1, =gUnknown_08329D22
- adds r0, r5, r1
- ldrb r0, [r0]
- mov r9, r0
- ldrb r0, [r6]
- adds r2, r0, 0
- mov r3, r9
- ands r2, r3
- lsls r5, 1
- asrs r2, r5
- lsls r2, 24
- lsrs r2, 24
- adds r1, r4, r1
- ldrb r3, [r1]
- adds r1, r0, 0
- ands r1, r3
- lsls r4, 1
- asrs r1, r4
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- bics r0, r7
- strb r0, [r6]
- ldrb r0, [r6]
- bics r0, r3
- strb r0, [r6]
- lsls r2, r4
- lsls r1, r5
- adds r2, r1
- ldrb r0, [r6]
- orrs r0, r2
- strb r0, [r6]
- mov r0, r8
- ldr r1, [sp, 0x8]
- mov r2, sp
- bl SetMonData
- mov r0, r8
- ldr r1, [sp, 0xC]
- ldr r2, [sp, 0x14]
- bl SetMonData
- mov r0, r8
- ldr r1, [sp, 0x10]
- mov r2, r10
- bl SetMonData
- mov r0, r8
- ldr r1, [sp, 0x1C]
- ldr r2, [sp, 0x18]
- bl SetMonData
- mov r0, r8
- movs r1, 0x15
- adds r2, r6, 0
- bl SetMonData
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B97DC
-
- thumb_func_start sub_81B98DC
-sub_81B98DC: @ 81B98DC
- push {lr}
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0
- beq _081B990C
- ldr r1, =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
- b _081B9910
- .pool
-_081B990C:
- ldr r0, =gSpecialVar_Result
- strh r1, [r0]
-_081B9910:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B98DC
-
- thumb_func_start sub_81B9918
-sub_81B9918: @ 81B9918
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gSpecialVar_0x8005
- ldrh r1, [r1]
- adds r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r0, 0x39
- bne _081B999C
- movs r6, 0
- b _081B9980
- .pool
-_081B9958:
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r6, r0
- beq _081B997E
- movs r4, 0
- movs r0, 0x64
- adds r5, r6, 0
- muls r5, r0
- ldr r7, =gPlayerParty
-_081B996A:
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r5, r7
- bl GetMonData
- cmp r0, 0x39
- beq _081B999C
- adds r4, 0x1
- cmp r4, 0x3
- bls _081B996A
-_081B997E:
- adds r6, 0x1
-_081B9980:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- bcc _081B9958
- mov r0, r8
- bl AnyStorageMonWithMove
- cmp r0, 0x1
- beq _081B999C
- ldr r1, =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
-_081B999C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B9918
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/psychic.s b/asm/psychic.s
index ef1915241..a900d3fcc 100644
--- a/asm/psychic.s
+++ b/asm/psychic.s
@@ -46,7 +46,7 @@ _0810F22E:
lsrs r4, r0, 24
adds r7, r4, 0
adds r0, r4, 0
- bl sub_80A8364
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -423,7 +423,7 @@ sub_810F524: @ 810F524
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
- bl sub_80A8364
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -514,13 +514,13 @@ _0810F5EE:
bne _0810F608
adds r0, r4, 0
adds r1, r6, 0
- bl InitAnimSpritePos
+ bl InitSpritePosToAnimAttacker
b _0810F610
.pool
_0810F608:
adds r0, r4, 0
adds r1, r6, 0
- bl sub_80A6980
+ bl InitSpritePosToAnimTarget
_0810F610:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
@@ -535,7 +535,7 @@ _0810F618:
cmp r0, 0
beq _0810F62C
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_0810F62C:
pop {r4-r6}
pop {r0}
@@ -589,7 +589,7 @@ _0810F692:
ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67D8
+ ldr r0, =RunStoredCallbackWhenAnimEnds
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
@@ -656,7 +656,7 @@ _0810F722:
ldr r1, =sub_810F740
adds r0, r5, 0
bl StoreSpriteCallbackInData6
- ldr r0, =sub_80A67D8
+ ldr r0, =RunStoredCallbackWhenAnimEnds
str r0, [r5, 0x1C]
pop {r4-r7}
pop {r0}
@@ -760,7 +760,7 @@ sub_810F7D4: @ 810F7D4
strh r1, [r4, 0x8]
ldr r2, =gUnknown_0859675C
adds r0, r4, 0
- bl sub_80A7CFC
+ bl PrepareAffineAnimInTaskData
ldr r0, =sub_810F810
str r0, [r4]
pop {r4}
@@ -779,7 +779,7 @@ sub_810F810: @ 810F810
lsls r0, 3
ldr r1, =gTasks
adds r0, r1
- bl sub_80A7D34
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _0810F830
@@ -823,7 +823,7 @@ _0810F870:
ldrb r1, [r4, 0x8]
ldr r2, =gUnknown_0859677C
adds r0, r4, 0
- bl sub_80A7CFC
+ bl PrepareAffineAnimInTaskData
ldr r0, =sub_810F898
str r0, [r4]
pop {r4}
@@ -852,7 +852,7 @@ sub_810F898: @ 810F898
.pool
_0810F8BC:
adds r0, r4, 0
- bl sub_80A7D34
+ bl RunAffineAnimFromTaskData
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
@@ -907,7 +907,7 @@ _0810F900:
lsls r1, 1
strh r1, [r0, 0x20]
ldrb r0, [r4, 0x8]
- bl sub_80A7344
+ bl ResetSpriteRotScale
adds r0, r5, 0
bl DestroyAnimVisualTask
_0810F936:
@@ -1572,7 +1572,7 @@ _0810FE86:
_0810FE92:
ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_80A8364
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1805,7 +1805,7 @@ sub_8110034: @ 8110034
_0811006C:
ldr r1, =gBattleAnimArgs
ldrb r0, [r1]
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ bl CloneBattlerSpriteWithBlend
lsls r0, 16
lsrs r1, r0, 16
mov r9, r1
@@ -1860,7 +1860,7 @@ _08110094:
lsls r2, 1
adds r1, r2, 0
movs r3, 0
- bl obj_id_set_rotscale
+ bl SetSpriteRotScale
ldrb r3, [r4, 0x1]
lsrs r1, r3, 6
ldrb r2, [r4, 0x3]
@@ -1942,14 +1942,14 @@ _08110166:
ldrsh r2, [r4, r1]
adds r1, r2, 0
movs r3, 0
- bl obj_id_set_rotscale
+ bl SetSpriteRotScale
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x22]
lsls r1, 24
lsrs r1, 24
- bl sub_80A7EC0
+ bl SetBattlerSpriteYOffsetFromOtherYScale
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0x30
@@ -1980,14 +1980,14 @@ _081101B8:
ldrsh r2, [r4, r1]
adds r1, r2, 0
movs r3, 0
- bl obj_id_set_rotscale
+ bl SetSpriteRotScale
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x22]
lsls r1, 24
lsrs r1, 24
- bl sub_80A7EC0
+ bl SetBattlerSpriteYOffsetFromOtherYScale
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
diff --git a/asm/trade.s b/asm/trade.s
index e1e8588bf..e8ce28810 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -725,7 +725,7 @@ _080777B8:
b _08077B22
.pool
_080777E8:
- bl sub_81B5D30
+ bl LoadHeldItemIcons
ldr r0, =gUnknown_0203229C
ldr r1, [r0]
adds r0, r1, 0
@@ -1343,7 +1343,7 @@ _08077D80:
b _080780D8
.pool
_08077DB0:
- bl sub_81B5D30
+ bl LoadHeldItemIcons
ldr r0, =gUnknown_0203229C
ldr r1, [r0]
adds r0, r1, 0
@@ -3590,7 +3590,7 @@ _08079138:
cmp r0, 0
bne _08079158
adds r0, r4, 0
- bl sub_806E3F8
+ bl IsSpeciesInHoennDex
cmp r0, 0
bne _08079164
_08079158:
@@ -6160,7 +6160,7 @@ _0807A62E:
_0807A64C:
lsls r0, r1, 16
lsrs r0, 16
- bl sub_806E3F8
+ bl IsSpeciesInHoennDex
cmp r0, 0
bne _0807A65C
movs r0, 0x2
@@ -6200,7 +6200,7 @@ _0807A65C:
_0807A6A0:
lsls r0, r1, 16
lsrs r0, 16
- bl sub_806E3F8
+ bl IsSpeciesInHoennDex
cmp r0, 0
beq _0807A6D2
_0807A6AC:
@@ -6471,7 +6471,7 @@ _0807A87C:
b _0807A8C0
_0807A88E:
adds r0, r7, 0
- bl sub_806E3F8
+ bl IsSpeciesInHoennDex
cmp r0, 0
bne _0807A89C
_0807A898:
@@ -6479,7 +6479,7 @@ _0807A898:
b _0807A8C0
_0807A89C:
mov r0, r8
- bl sub_806E3F8
+ bl IsSpeciesInHoennDex
cmp r0, 0
bne _0807A8AA
movs r0, 0x5
@@ -6489,7 +6489,7 @@ _0807A8AA:
cmp r0, 0
bne _0807A8BE
adds r0, r7, 0
- bl sub_806E3F8
+ bl IsSpeciesInHoennDex
cmp r0, 0
bne _0807A8BE
movs r0, 0x7
@@ -6533,7 +6533,7 @@ sub_807A8D0: @ 807A8D0
b _0807A910
_0807A900:
adds r0, r6, 0
- bl sub_806E3F8
+ bl IsSpeciesInHoennDex
cmp r0, 0
bne _0807A90E
_0807A90A:
@@ -6645,7 +6645,7 @@ _0807A9B4:
mov r1, sp
adds r4, r1, r0
ldrh r0, [r4]
- bl sub_806E3F8
+ bl IsSpeciesInHoennDex
cmp r0, 0
bne _0807A9E0
movs r0, 0x2
diff --git a/asm/water.s b/asm/water.s
deleted file mode 100644
index 6965d6371..000000000
--- a/asm/water.s
+++ /dev/null
@@ -1,3607 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start AnimTask_CreateRaindrops
-AnimTask_CreateRaindrops: @ 8107188
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _081071B0
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r5, 0xA]
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0xC]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0xE]
-_081071B0:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r2, 0x8
- ldrsh r0, [r5, r2]
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- bl __modsi3
- cmp r0, 0x1
- bne _081071F8
- bl Random2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF0
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x50
- bl __umodsi3
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, =gUnknown_08595020
- adds r1, r4, 0
- movs r3, 0x4
- bl CreateSprite
-_081071F8:
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bne _0810720A
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_0810720A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_CreateRaindrops
-
- thumb_func_start sub_810721C
-sub_810721C: @ 810721C
- ldr r1, =sub_8107228
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_810721C
-
- thumb_func_start sub_8107228
-sub_8107228: @ 8107228
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- bgt _08107246
- ldrh r0, [r2, 0x24]
- adds r0, 0x1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x26]
- adds r0, 0x4
- strh r0, [r2, 0x26]
-_08107246:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0810725A
- adds r0, r2, 0
- bl DestroySprite
-_0810725A:
- pop {r0}
- bx r0
- thumb_func_end sub_8107228
-
- thumb_func_start sub_8107260
-sub_8107260: @ 8107260
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08107290
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gBattleAnimArgs
- ldrh r1, [r4]
- subs r0, r1
- b _081072A2
- .pool
-_08107290:
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
-_081072A2:
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r6, 0x22]
- adds r2, r6, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _081072D8
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_081072D8:
- ldr r5, =gBattleAnimArgs
- ldrh r0, [r5, 0xC]
- strh r0, [r6, 0x2E]
- ldrh r0, [r6, 0x20]
- strh r0, [r6, 0x30]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x32]
- ldrh r0, [r6, 0x22]
- strh r0, [r6, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x36]
- adds r0, r6, 0
- bl InitAnimLinearTranslation
- ldr r0, =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- strh r4, [r6, 0x38]
- ldrb r0, [r5, 0x8]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl Sin
- ldrh r1, [r6, 0x20]
- subs r1, r0
- strh r1, [r6, 0x20]
- ldrb r0, [r5, 0x8]
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- bl Cos
- ldrh r1, [r6, 0x22]
- subs r1, r0
- strh r1, [r6, 0x22]
- ldr r0, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r5, 0x4]
- strh r0, [r1, 0x2E]
- ldrh r0, [r5, 0x6]
- strh r0, [r1, 0x30]
- ldrh r0, [r5, 0xA]
- strh r0, [r1, 0x32]
- ldrb r0, [r5, 0x8]
- lsls r0, 8
- strh r0, [r1, 0x34]
- ldrh r0, [r5, 0xC]
- strh r0, [r1, 0x36]
- ldr r1, =sub_8107380
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107260
-
- thumb_func_start sub_8107380
-sub_8107380: @ 8107380
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r1, [r5, 0x38]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r7, r0, r2
- ldrh r4, [r7, 0x36]
- lsls r4, 24
- lsrs r4, 24
- ldrh r0, [r7, 0x34]
- mov r8, r0
- movs r0, 0x1
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- bl TranslateAnimLinear
- mov r1, r8
- lsrs r6, r1, 8
- movs r0, 0x2E
- ldrsh r1, [r7, r0]
- adds r0, r6, 0
- bl Sin
- ldrh r1, [r5, 0x24]
- adds r0, r1
- strh r0, [r5, 0x24]
- movs r0, 0x30
- ldrsh r1, [r7, r0]
- adds r0, r6, 0
- bl Cos
- ldrh r1, [r5, 0x26]
- adds r0, r1
- strh r0, [r5, 0x26]
- ldrh r0, [r7, 0x32]
- mov r1, r8
- adds r1, r0
- strh r1, [r7, 0x34]
- subs r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- cmp r4, 0
- beq _081073EC
- strh r4, [r7, 0x36]
- b _081073F6
- .pool
-_081073EC:
- ldr r0, =sub_8107408
- str r0, [r5, 0x1C]
- adds r0, r7, 0
- bl DestroySprite
-_081073F6:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107380
-
- thumb_func_start sub_8107408
-sub_8107408: @ 8107408
- push {lr}
- adds r3, r0, 0
- adds r3, 0x2C
- ldrb r2, [r3]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- strb r1, [r3]
- ldr r1, =sub_80A67D8
- str r1, [r0, 0x1C]
- ldr r1, =sub_8107430
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107408
-
- thumb_func_start sub_8107430
-sub_8107430: @ 8107430
- push {lr}
- movs r1, 0xA
- strh r1, [r0, 0x2E]
- ldr r1, =WaitAnimForDuration
- str r1, [r0, 0x1C]
- ldr r1, =move_anim_8074EE0
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107430
-
- thumb_func_start sub_810744C
-sub_810744C: @ 810744C
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810747C
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- lsls r0, 16
- lsrs r6, r0, 16
- adds r7, r1, 0
- b _08107482
- .pool
-_0810747C:
- ldr r0, =gBattleAnimArgs
- ldrh r6, [r0, 0x4]
- adds r7, r0, 0
-_08107482:
- ldrh r0, [r7, 0x8]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r7, [r7, 0x6]
- adds r0, r7
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl InitAnimLinearTranslation
- ldr r0, =sub_81074E4
- str r0, [r5, 0x1C]
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810744C
-
- thumb_func_start sub_81074E4
-sub_81074E4: @ 81074E4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08107506
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
-_08107506:
- adds r0, r4, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _08107518
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08107518:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81074E4
-
- thumb_func_start sub_8107528
-sub_8107528: @ 8107528
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r4, 0x8]
- ldr r0, =0x0000279c
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r4, 0xC]
- ldr r0, =sub_810756C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107528
-
- thumb_func_start sub_810756C
-sub_810756C: @ 810756C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x1C]
- adds r0, 0x1
- strh r0, [r2, 0x1C]
- lsls r0, 16
- asrs r0, 16
- mov r12, r1
- cmp r0, 0x3
- bne _081075BE
- movs r0, 0
- strh r0, [r2, 0x1C]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, =gPlttBufferFaded
- lsls r0, r5, 1
- adds r0, r1
- ldrh r6, [r0]
- adds r7, r1, 0
- adds r3, r0, 0x2
- movs r1, 0x6
- adds r2, r0, 0
-_081075A8:
- ldrh r0, [r3]
- strh r0, [r2]
- adds r3, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _081075A8
- adds r0, r5, 0x7
- lsls r0, 1
- adds r0, r7
- strh r6, [r0]
-_081075BE:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r12
- ldrh r1, [r0, 0x1E]
- adds r1, 0x1
- strh r1, [r0, 0x1E]
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- cmp r1, r0
- bne _081075DE
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_081075DE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810756C
-
- thumb_func_start sub_81075EC
-sub_81075EC: @ 81075EC
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- movs r0, 0x1E
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl InitAnimLinearTranslation
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- movs r0, 0xD2
- lsls r0, 8
- bl __divsi3
- strh r0, [r5, 0x38]
- ldr r0, =gBattleAnimArgs
- ldrh r2, [r0, 0x6]
- strh r2, [r5, 0x3C]
- ldrh r1, [r0, 0xE]
- movs r3, 0xE
- ldrsh r0, [r0, r3]
- cmp r0, 0x7F
- ble _0810765C
- adds r0, r1, 0
- subs r0, 0x7F
- lsls r0, 8
- strh r0, [r5, 0x3A]
- negs r0, r2
- strh r0, [r5, 0x3C]
- b _08107660
- .pool
-_0810765C:
- lsls r0, r1, 8
- strh r0, [r5, 0x3A]
-_08107660:
- ldr r1, =sub_8107674
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81075EC
-
- thumb_func_start sub_8107674
-sub_8107674: @ 8107674
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _08107688
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08107688:
- ldrh r0, [r4, 0x3A]
- lsls r0, 16
- asrs r0, 24
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- adds r0, r1
- asrs r0, 8
- cmp r0, 0x7F
- ble _081076B8
- movs r0, 0
- strh r0, [r4, 0x3A]
- ldrh r0, [r4, 0x3C]
- negs r0, r0
- strh r0, [r4, 0x3C]
- b _081076C0
-_081076B8:
- ldrh r0, [r4, 0x38]
- ldrh r1, [r4, 0x3A]
- adds r0, r1
- strh r0, [r4, 0x3A]
-_081076C0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8107674
-
- thumb_func_start sub_81076C8
-sub_81076C8: @ 81076C8
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r3, =gBattleAnimArgs
- ldrh r0, [r3]
- movs r2, 0
- strh r0, [r1, 0x8]
- strh r2, [r3, 0xE]
- ldr r0, =sub_81076F4
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_81076C8
-
- thumb_func_start sub_81076F4
-sub_81076F4: @ 81076F4
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r2, 0xE]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r2, 0xE]
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- subs r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- cmp r1, 0
- bne _08107722
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_08107722:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81076F4
-
- thumb_func_start sub_8107730
-sub_8107730: @ 8107730
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r7, =gBattleAnimAttacker
- ldrb r0, [r7]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r7]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r6, =0x0000fff6
- strh r6, [r4, 0x26]
- ldrb r0, [r7]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r5, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0810778A
- ldrb r0, [r7]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08107784
- movs r0, 0xA
- strh r0, [r4, 0x24]
- b _0810778C
- .pool
-_08107784:
- strh r6, [r4, 0x24]
- subs r0, r5, 0x2
- b _0810778E
-_0810778A:
- strh r6, [r4, 0x24]
-_0810778C:
- adds r0, r5, 0x2
-_0810778E:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldr r0, =sub_81077A4
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107730
-
- thumb_func_start sub_81077A4
-sub_81077A4: @ 81077A4
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081077BA
- adds r0, r2, 0
- bl DestroyAnimSprite
-_081077BA:
- pop {r0}
- bx r0
- thumb_func_end sub_81077A4
-
- thumb_func_start sub_81077C0
-sub_81077C0: @ 81077C0
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _0810780A
- ldr r4, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4]
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- beq _08107802
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810780A
-_08107802:
- movs r1, 0
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4]
-_0810780A:
- ldr r5, =gBattleAnimArgs
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0
- cmp r0, 0
- bne _0810781E
- movs r1, 0x1
-_0810781E:
- ldrb r0, [r5, 0xA]
- movs r7, 0x1
- cmp r0, 0
- bne _08107828
- movs r7, 0x3
-_08107828:
- adds r0, r6, 0
- bl InitAnimSpritePos
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08107842
- ldrh r0, [r5, 0x4]
- negs r0, r0
- strh r0, [r5, 0x4]
-_08107842:
- ldrh r0, [r5, 0x8]
- strh r0, [r6, 0x2E]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r4]
- adds r1, r7, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- strh r0, [r6, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r6, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81077C0
-
- thumb_func_start sub_8107894
-sub_8107894: @ 8107894
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_80A6980
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0x8]
- strh r1, [r4, 0x2E]
- ldrh r0, [r0, 0x4]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- adds r1, r0
- strh r1, [r4, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r4, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107894
-
- thumb_func_start sub_81078D0
-sub_81078D0: @ 81078D0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _081078EC
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A6980
- b _081078F4
- .pool
-_081078EC:
- adds r0, r4, 0
- movs r1, 0x1
- bl InitAnimSpritePos
-_081078F4:
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x3C]
- ldr r0, =sub_810790C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81078D0
-
- thumb_func_start sub_810790C
-sub_810790C: @ 810790C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0xB
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x30
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0810794C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0810794C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810790C
-
- thumb_func_start AnimTask_CreateSurfWave
-AnimTask_CreateSurfWave: @ 8107954
- 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 r10, r0
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x1
- bl SetAnimBgAttribute
- mov r0, sp
- bl sub_80A6B30
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _081079E0
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081079D0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08D95E00
- bl sub_80A6D48
- b _081079EA
- .pool
-_081079D0:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08D960D0
- bl sub_80A6D48
- b _081079EA
- .pool
-_081079E0:
- ldr r1, =gUnknown_08D963A4
- mov r0, sp
- movs r2, 0x1
- bl sub_80A6D60
-_081079EA:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gBattleAnimBackgroundImage_Surf
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80A6CC0
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08107A24
- ldr r0, =gBattleAnimBackgroundPalette_Surf
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- b _08107A32
- .pool
-_08107A24:
- ldr r0, =gBattleAnimBackgroundImageMuddyWater_Pal
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
-_08107A32:
- ldr r0, =sub_8107D58
- ldr r4, =gTasks
- mov r2, r10
- lsls r5, r2, 2
- adds r1, r5, r2
- lsls r1, 3
- adds r6, r1, r4
- ldrb r1, [r6, 0x7]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r0, 0
- mov r9, r0
- mov r1, r8
- strh r1, [r6, 0x26]
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r7, r0, r4
- mov r0, r9
- strh r0, [r7, 0x8]
- movs r0, 0x80
- lsls r0, 5
- strh r0, [r7, 0xA]
- strh r0, [r7, 0xC]
- bl IsContest
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _08107AB4
- ldr r1, =0x0000ffb0
- adds r0, r1, 0
- ldr r2, =gBattle_BG1_X
- strh r0, [r2]
- adds r1, 0x20
- adds r0, r1, 0
- ldr r2, =gBattle_BG1_Y
- strh r0, [r2]
- movs r0, 0x2
- strh r0, [r6, 0x8]
- movs r0, 0x1
- strh r0, [r6, 0xA]
- mov r0, r9
- strh r0, [r7, 0xE]
- b _08107B0E
- .pool
-_08107AB4:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- bne _08107AF8
- ldr r2, =0x0000ff20
- adds r0, r2, 0
- ldr r2, =gBattle_BG1_X
- strh r0, [r2]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ldr r2, =gBattle_BG1_Y
- strh r0, [r2]
- movs r0, 0x2
- strh r0, [r6, 0x8]
- ldr r0, =0x0000ffff
- strh r0, [r6, 0xA]
- strh r1, [r7, 0xE]
- b _08107B0E
- .pool
-_08107AF8:
- ldr r0, =gBattle_BG1_X
- strh r4, [r0]
- ldr r1, =0x0000ffd0
- adds r0, r1, 0
- ldr r2, =gBattle_BG1_Y
- strh r0, [r2]
- ldr r0, =0x0000fffe
- strh r0, [r6, 0x8]
- movs r0, 0x1
- strh r0, [r6, 0xA]
- strh r4, [r7, 0xE]
-_08107B0E:
- ldr r0, =gBattle_BG1_X
- ldrh r1, [r0]
- movs r0, 0x14
- bl SetGpuReg
- ldr r2, =gBattle_BG1_Y
- ldrh r1, [r2]
- movs r0, 0x16
- bl SetGpuReg
- ldr r1, =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r1
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08107B54
- movs r0, 0x30
- strh r0, [r1, 0x10]
- movs r0, 0x70
- b _08107B58
- .pool
-_08107B54:
- movs r0, 0
- strh r0, [r1, 0x10]
-_08107B58:
- strh r0, [r1, 0x12]
- ldr r1, =gTasks
- mov r2, r10
- adds r0, r5, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0x14]
- ldr r1, =sub_8107B84
- str r1, [r0]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_CreateSurfWave
-
- thumb_func_start sub_8107B84
-sub_8107B84: @ 8107B84
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gBattle_BG1_X
- ldr r2, =gBattle_BG1_Y
- ldr r0, =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x8]
- ldrh r3, [r1]
- adds r0, r3
- strh r0, [r1]
- ldrh r0, [r4, 0xA]
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- mov r0, sp
- bl sub_80A6B30
- ldrh r0, [r4, 0xA]
- ldrh r3, [r4, 0xC]
- adds r0, r3
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _08107C18
- ldr r1, =gPlttBufferFaded
- mov r0, sp
- ldrb r0, [r0, 0x8]
- lsls r0, 4
- adds r0, 0x7
- lsls r0, 1
- adds r0, r1
- ldrh r6, [r0]
- movs r2, 0x6
- adds r7, r1, 0
- adds r3, r7, 0
- mov r4, sp
-_08107BDE:
- ldrb r0, [r4, 0x8]
- lsls r0, 4
- adds r1, r2, 0x1
- adds r0, r1
- lsls r1, r0, 1
- adds r1, r3
- subs r0, 0x1
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- subs r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _08107BDE
- mov r0, sp
- ldrb r0, [r0, 0x8]
- lsls r0, 4
- adds r0, 0x1
- lsls r0, 1
- adds r0, r7
- strh r6, [r0]
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0x12]
-_08107C18:
- ldr r1, =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r3, r0, r1
- ldrh r0, [r3, 0x14]
- adds r0, 0x1
- strh r0, [r3, 0x14]
- lsls r0, 16
- asrs r0, 16
- adds r4, r1, 0
- adds r6, r2, 0
- cmp r0, 0x1
- ble _08107C86
- movs r0, 0
- strh r0, [r3, 0x14]
- ldrh r0, [r3, 0xE]
- adds r2, r0, 0x1
- strh r2, [r3, 0xE]
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xD
- bgt _08107C62
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x10
- subs r0, r2
- lsls r0, 8
- orrs r2, r0
- strh r2, [r1, 0xA]
- ldrh r0, [r3, 0x10]
- adds r0, 0x1
- strh r0, [r3, 0x10]
-_08107C62:
- movs r1, 0xE
- ldrsh r0, [r3, r1]
- cmp r0, 0x36
- ble _08107C86
- ldrh r2, [r3, 0x10]
- subs r2, 0x1
- strh r2, [r3, 0x10]
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x10
- subs r0, r2
- lsls r0, 8
- orrs r2, r0
- strh r2, [r1, 0xA]
-_08107C86:
- adds r0, r6, r5
- lsls r0, 3
- adds r2, r0, r4
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- ldrh r0, [r0, 0xA]
- movs r3, 0x1F
- ands r3, r0
- cmp r3, 0
- bne _08107CA8
- strh r3, [r2, 0x8]
- ldr r0, =sub_8107CC4
- str r0, [r2]
-_08107CA8:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107B84
-
- thumb_func_start sub_8107CC4
-sub_8107CC4: @ 8107CC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r7, =gBattle_BG1_X
- ldr r0, =gBattle_BG1_Y
- mov r8, r0
- ldr r6, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r6
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08107D08
- movs r0, 0x1
- bl sub_80A6C68
- movs r0, 0x2
- bl sub_80A6C68
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08107D4A
- .pool
-_08107D08:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _08107D1C
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_08107D1C:
- movs r0, 0
- strh r0, [r7]
- mov r1, r8
- strh r0, [r1]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldr r1, =0x0000ffff
- strh r1, [r0, 0x26]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08107D4A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107CC4
-
- thumb_func_start sub_8107D58
-sub_8107D58: @ 8107D58
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _08107D74
- b _08107EAC
-_08107D74:
- cmp r0, 0x1
- bgt _08107D84
- cmp r0, 0
- beq _08107D8C
- b _08108022
- .pool
-_08107D84:
- cmp r0, 0x2
- bne _08107D8A
- b _08107F78
-_08107D8A:
- b _08108022
-_08107D8C:
- movs r3, 0
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- ldr r1, =gScanlineEffectRegBuffers
- mov r12, r1
- cmp r3, r0
- bge _08107DCA
- mov r7, r12
- movs r5, 0xF0
- lsls r5, 3
- add r5, r12
- ldr r6, =0x0000ffff
-_08107DA4:
- lsls r2, r3, 16
- asrs r2, 16
- lsls r1, r2, 1
- adds r3, r1, r7
- adds r1, r5
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- ldrh r1, [r4, 0xC]
- adds r0, r6, 0
- ands r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- lsrs r3, r2, 16
- asrs r2, 16
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r2, r0
- blt _08107DA4
-_08107DCA:
- ldrh r3, [r4, 0x10]
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _08107E04
- ldr r5, =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
- ldr r7, =0x0000ffff
-_08107DE2:
- asrs r2, 16
- lsls r1, r2, 1
- adds r3, r1, r5
- adds r1, r6
- ldrh r0, [r4, 0xA]
- strh r0, [r1]
- ldrh r1, [r4, 0xA]
- adds r0, r7, 0
- ands r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _08107DE2
-_08107E04:
- ldrh r3, [r4, 0x12]
- lsls r2, r3, 16
- asrs r0, r2, 16
- cmp r0, 0x9F
- bgt _08107E3A
- ldr r5, =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
- ldr r7, =0x0000ffff
-_08107E18:
- asrs r2, 16
- lsls r1, r2, 1
- adds r3, r1, r5
- adds r1, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- ldrh r1, [r4, 0xC]
- adds r0, r7, 0
- ands r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- lsrs r3, r2, 16
- lsls r2, r3, 16
- asrs r0, r2, 16
- cmp r0, 0x9F
- ble _08107E18
-_08107E3A:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08107E64
- lsls r0, r3, 16
- asrs r0, 15
- mov r3, r12
- adds r2, r0, r3
- movs r1, 0xF0
- lsls r1, 3
- add r1, r12
- adds r0, r1
- ldrh r1, [r4, 0xA]
- strh r1, [r0]
- ldrh r0, [r4, 0xA]
- b _08107E7A
- .pool
-_08107E64:
- lsls r0, r3, 16
- asrs r0, 15
- mov r1, r12
- adds r2, r0, r1
- movs r1, 0xF0
- lsls r1, 3
- add r1, r12
- adds r0, r1
- ldrh r1, [r4, 0xC]
- strh r1, [r0]
- ldrh r0, [r4, 0xC]
-_08107E7A:
- strh r0, [r2]
- ldr r0, =0x04000052
- str r0, [sp]
- ldr r0, =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08108022
- .pool
-_08107EAC:
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _08107EC4
- ldrh r0, [r4, 0x10]
- subs r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bgt _08107ED8
- strh r1, [r4, 0x10]
- b _08107ED2
-_08107EC4:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6F
- ble _08107ED8
-_08107ED2:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08107ED8:
- movs r3, 0
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- bge _08107F0C
- ldr r6, =gScanlineEffectRegBuffers
- ldr r5, =gScanlineEffect
-_08107EE6:
- lsls r1, r3, 16
- asrs r1, 16
- lsls r3, r1, 1
- ldrb r2, [r5, 0x14]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 7
- adds r3, r0
- adds r3, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r3]
- adds r1, 0x1
- lsls r1, 16
- lsrs r3, r1, 16
- asrs r1, 16
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _08107EE6
-_08107F0C:
- ldrh r3, [r4, 0x10]
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _08107F40
- ldr r6, =gScanlineEffectRegBuffers
- ldr r5, =gScanlineEffect
-_08107F1E:
- asrs r3, r2, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xA]
- strh r0, [r2]
- adds r3, 0x1
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _08107F1E
-_08107F40:
- ldrh r3, [r4, 0x12]
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- bgt _08108022
- ldr r6, =gScanlineEffectRegBuffers
- ldr r5, =gScanlineEffect
-_08107F4E:
- asrs r3, r1, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- ble _08107F4E
- b _08108022
- .pool
-_08107F78:
- movs r3, 0
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- bge _08107FAC
- ldr r6, =gScanlineEffectRegBuffers
- ldr r5, =gScanlineEffect
-_08107F86:
- lsls r1, r3, 16
- asrs r1, 16
- lsls r3, r1, 1
- ldrb r2, [r5, 0x14]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 7
- adds r3, r0
- adds r3, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r3]
- adds r1, 0x1
- lsls r1, 16
- lsrs r3, r1, 16
- asrs r1, 16
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _08107F86
-_08107FAC:
- ldrh r3, [r4, 0x10]
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _08107FE0
- ldr r6, =gScanlineEffectRegBuffers
- ldr r5, =gScanlineEffect
-_08107FBE:
- asrs r3, r2, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xA]
- strh r0, [r2]
- adds r3, 0x1
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _08107FBE
-_08107FE0:
- ldrh r3, [r4, 0x12]
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- bgt _0810800C
- ldr r6, =gScanlineEffectRegBuffers
- ldr r5, =gScanlineEffect
-_08107FEE:
- asrs r3, r1, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- ble _08107FEE
-_0810800C:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _08108022
- bl ScanlineEffect_Stop
- adds r0, r7, 0
- bl DestroyTask
-_08108022:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8107D58
-
- thumb_func_start sub_8108034
-sub_8108034: @ 8108034
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r3, =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A6980
- bl Random2
- movs r5, 0xFF
- ands r5, r0
- movs r0, 0x80
- lsls r0, 1
- adds r6, r0, 0
- orrs r5, r6
- bl Random2
- ldr r1, =0x000001ff
- ands r1, r0
- adds r0, r1, 0
- cmp r0, 0xFF
- ble _0810807A
- subs r0, r6, r0
- lsls r0, 16
- lsrs r1, r0, 16
-_0810807A:
- strh r5, [r4, 0x30]
- strh r1, [r4, 0x32]
- ldr r0, =sub_8108098
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8108034
-
- thumb_func_start sub_8108098
-sub_8108098: @ 8108098
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r3, r0, r1
- strh r3, [r2, 0x34]
- ldrh r1, [r2, 0x32]
- ldrh r4, [r2, 0x36]
- adds r1, r4
- strh r1, [r2, 0x36]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _081080BC
- lsls r0, r3, 16
- asrs r0, 24
- negs r0, r0
- b _081080C0
-_081080BC:
- lsls r0, r3, 16
- asrs r0, 24
-_081080C0:
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _081080DE
- adds r0, r2, 0
- bl DestroyAnimSprite
-_081080DE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8108098
-
- thumb_func_start sub_81080E4
-sub_81080E4: @ 81080E4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x12]
- bl sub_8108384
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80A7270
- ldr r0, =sub_8108140
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81080E4
-
- thumb_func_start sub_8108140
-sub_8108140: @ 8108140
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bls _0810815C
- b _0810837A
-_0810815C:
- lsls r0, 2
- ldr r1, =_08108170
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08108170:
- .4byte _08108190
- .4byte _081081B6
- .4byte _08108248
- .4byte _0810827E
- .4byte _08108292
- .4byte _081082A0
- .4byte _08108320
- .4byte _0810836C
-_08108190:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 1
- movs r0, 0xE0
- str r0, [sp]
- movs r0, 0x80
- lsls r0, 2
- str r0, [sp, 0x4]
- movs r0, 0x20
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r2, r3, 0
- bl sub_80A805C
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_081081B6:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08108212
- movs r0, 0
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08108200
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x3
- strh r1, [r0, 0x24]
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x1
- strh r1, [r0, 0x22]
- b _08108212
- .pool
-_08108200:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000fffd
- strh r1, [r0, 0x24]
-_08108212:
- adds r0, r4, 0
- bl sub_80A80C8
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _08108222
- b _0810837A
-_08108222:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A7E6C
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
- strh r5, [r4, 0xE]
- b _0810835C
- .pool
-_08108248:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bgt _08108258
- b _0810837A
-_08108258:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 2
- movs r0, 0xC0
- lsls r0, 1
- str r0, [sp]
- movs r0, 0xE0
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r2, 0xE0
- bl sub_80A805C
- movs r0, 0
- strh r0, [r4, 0xE]
- b _0810835E
-_0810827E:
- adds r0, r4, 0
- bl sub_80A80C8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0810837A
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- b _0810835E
-_08108292:
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_8108408
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_081082A0:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0810837A
- movs r0, 0
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081082D8
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x2
- b _081082EA
- .pool
-_081082D8:
- ldr r2, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x2
-_081082EA:
- strh r1, [r0, 0x26]
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _0810837A
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0xC0
- lsls r2, 1
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r3, 0xE0
- bl sub_80A805C
- movs r0, 0
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- b _0810835E
- .pool
-_08108320:
- ldr r6, =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
- adds r0, r4, 0
- bl sub_80A80C8
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0810837A
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A7344
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r4, 0x12]
- strh r1, [r0, 0x22]
-_0810835C:
- strh r5, [r4, 0x10]
-_0810835E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0810837A
- .pool
-_0810836C:
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0810837A
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0810837A:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8108140
-
- thumb_func_start sub_8108384
-sub_8108384: @ 8108384
- push {r4,r5,lr}
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _081083B8
- ldr r1, =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- b _081083C8
- .pool
-_081083B4:
- adds r0, r2, 0
- b _081083FA
-_081083B8:
- ldr r1, =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gEnemyParty
-_081083C8:
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- lsrs r4, 18
- movs r2, 0
-_081083E6:
- adds r1, r2, 0x1
- adds r0, r4, 0
- muls r0, r1
- cmp r3, r0
- blt _081083B4
- lsls r0, r1, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _081083E6
- movs r0, 0x3
-_081083FA:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8108384
-
- thumb_func_start sub_8108408
-sub_8108408: @ 8108408
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0xAC
- ldrb r0, [r4]
- bl sub_80A82E4
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- ldrh r1, [r7, 0xA]
- movs r0, 0x4
- subs r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r0, 0
- bgt _08108458
- movs r1, 0x1
-_08108458:
- movs r0, 0
- str r0, [sp, 0x4]
- lsls r0, r1, 16
- mov r10, r8
- mov r9, r6
- mov r1, r10
- lsls r1, 4
- str r1, [sp, 0xC]
- mov r1, r9
- lsls r1, 4
- str r1, [sp, 0x10]
- asrs r0, 16
- mov r8, r0
-_08108472:
- ldr r0, =gUnknown_08595268
- mov r1, r10
- mov r2, r9
- ldr r3, [sp, 0x8]
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r6, r5, 16
- cmp r2, 0x40
- beq _081084DA
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r1
- mov r0, sp
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x30]
- mov r1, sp
- ldrh r1, [r1, 0xC]
- strh r1, [r5, 0x32]
- mov r0, sp
- ldrh r0, [r0, 0x10]
- strh r0, [r5, 0x34]
- asrs r4, r6, 16
- adds r0, r4, 0
- movs r1, 0x40
- bl Cos
- strh r0, [r5, 0x36]
- adds r0, r4, 0
- movs r1, 0x40
- bl Sin
- strh r0, [r5, 0x38]
- mov r1, sp
- ldrh r1, [r1]
- strh r1, [r5, 0x3A]
- movs r0, 0x2
- strh r0, [r5, 0x3C]
- ldrh r1, [r7, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081084D4
- adds r0, r5, 0
- bl sub_810851C
-_081084D4:
- ldrh r0, [r7, 0xC]
- adds r0, 0x1
- strh r0, [r7, 0xC]
-_081084DA:
- mov r1, r8
- lsls r0, r1, 1
- asrs r1, r6, 16
- adds r1, r0
- lsls r1, 16
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r5, r0, 16
- ldr r1, [sp, 0x4]
- lsls r0, r1, 16
- asrs r0, 16
- add r0, r8
- lsls r0, 16
- lsrs r1, r0, 16
- str r1, [sp, 0x4]
- asrs r0, 16
- cmp r0, 0x13
- ble _08108472
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8108408
-
- thumb_func_start sub_810851C
-sub_810851C: @ 810851C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0810852E
- cmp r0, 0x1
- beq _08108564
- b _081085BE
-_0810852E:
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- movs r1, 0x6
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- ldrh r0, [r4, 0x36]
- adds r1, r0
- strh r1, [r4, 0x36]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- ldrh r2, [r4, 0x38]
- adds r1, r2
- strh r1, [r4, 0x38]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_08108564:
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x38]
- ldrh r2, [r4, 0x34]
- adds r1, r2
- strh r1, [r4, 0x34]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x20]
- lsls r1, 16
- asrs r2, r1, 20
- strh r2, [r4, 0x22]
- adds r0, 0x8
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 17
- cmp r0, r1
- bhi _0810859A
- adds r1, r2, 0
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _0810859A
- cmp r1, 0x78
- ble _081085BE
-_0810859A:
- ldr r3, =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_081085BE:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810851C
-
- thumb_func_start sub_81085C8
-sub_81085C8: @ 81085C8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r4, r1, r0
- bl sub_8108384
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08108600
- movs r0, 0x88
- strh r0, [r4, 0x10]
- movs r0, 0x28
- b _08108606
- .pool
-_08108600:
- movs r0, 0x10
- strh r0, [r4, 0x10]
- movs r0, 0x50
-_08108606:
- strh r0, [r4, 0x14]
- movs r0, 0x62
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0x10]
- adds r0, 0x31
- strh r0, [r4, 0x16]
- movs r0, 0xA
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, 0x5
- strh r0, [r4, 0x20]
- ldr r0, =sub_810862C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81085C8
-
- thumb_func_start sub_810862C
-sub_810862C: @ 810862C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r7, =gTasks
- adds r4, r0, r7
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- cmp r2, 0
- beq _08108654
- cmp r2, 0x1
- beq _08108704
- b _08108712
- .pool
-_08108654:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _0810866A
- strh r2, [r4, 0xC]
- adds r0, r4, 0
- bl sub_810871C
-_0810866A:
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _081086E4
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _081086E4
- ldr r5, =gBattleAnimArgs
- movs r1, 0x1
- mov r8, r1
- mov r2, r8
- strh r2, [r5]
- strh r0, [r5, 0x2]
- movs r0, 0xC
- strh r0, [r5, 0x4]
- ldr r6, =sub_81152DC
- adds r0, r6, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _081086B4
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r7
- ldr r1, [r0]
- adds r0, r2, 0
- bl _call_via_r1
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081086B4:
- movs r0, 0x3
- strh r0, [r5]
- adds r0, r6, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _081086E0
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r7
- ldr r1, [r0]
- adds r0, r2, 0
- bl _call_via_r1
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081086E0:
- mov r0, r8
- strh r0, [r4, 0x22]
-_081086E4:
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _08108712
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08108712
- .pool
-_08108704:
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08108712
- adds r0, r1, 0
- bl DestroyAnimVisualTask
-_08108712:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810862C
-
- thumb_func_start sub_810871C
-sub_810871C: @ 810871C
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r1, =gSineTable
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r0, 0x3
- asrs r0, 4
- ldrh r2, [r4, 0x14]
- adds r0, r2
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, =gUnknown_08595268
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08108776
- ldr r3, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r1, r0, r1
- ldr r2, =sub_81087C0
- str r2, [r1]
- adds r0, r3
- strh r5, [r0, 0x38]
- strh r6, [r0, 0x3A]
- movs r1, 0x9
- strh r1, [r0, 0x3C]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
-_08108776:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- ldrh r0, [r4, 0x18]
- adds r0, 0x27
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x18]
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- ldr r0, =0x41c64e6d
- muls r0, r1
- ldr r1, =0x00003039
- adds r0, r1
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl __modsi3
- ldrh r1, [r4, 0x10]
- adds r1, r0
- strh r1, [r4, 0x16]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810871C
-
- thumb_func_start sub_81087C0
-sub_81087C0: @ 81087C0
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08108856
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x38
- ldrsh r1, [r5, r2]
- cmp r0, r1
- blt _08108856
- ldr r2, =gTasks
- movs r3, 0x3A
- ldrsh r1, [r5, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x1
- strh r1, [r0, 0x1C]
- ldr r0, =gUnknown_08597388
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- movs r3, 0x22
- ldrsh r2, [r5, r3]
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x30]
- cmp r0, 0x40
- beq _08108850
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, =gSprites
- adds r0, r4
- movs r1, 0x3
- bl StartSpriteAffineAnim
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x3A]
- strh r1, [r0, 0x3A]
- movs r3, 0x30
- ldrsh r1, [r5, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x3C]
- strh r1, [r0, 0x3C]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, =sub_810886C
- str r1, [r0]
-_08108850:
- adds r0, r5, 0
- bl DestroySprite
-_08108856:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81087C0
-
- thumb_func_start sub_810886C
-sub_810886C: @ 810886C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _081088D8
- movs r0, 0
- strh r0, [r4, 0x30]
- 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, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _081088D8
- ldr r3, =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_081088D8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810886C
-
- thumb_func_start sub_81088E4
-sub_81088E4: @ 81088E4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks
- adds r5, r1, r0
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- strh r0, [r5, 0xE]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x10]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _08108928
- movs r1, 0x1
-_08108928:
- strh r1, [r5, 0x16]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0810893C
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- negs r0, r0
- strh r0, [r5, 0x16]
-_0810893C:
- movs r2, 0x16
- ldrsh r0, [r5, r2]
- lsls r0, 3
- ldrh r1, [r5, 0xE]
- adds r0, r1
- strh r0, [r5, 0x12]
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- lsls r1, 3
- ldrh r0, [r5, 0x10]
- subs r0, r1
- strh r0, [r5, 0x14]
- ldr r0, =0x0000ffe0
- strh r0, [r5, 0x1A]
- strh r6, [r5, 0xA]
- strh r6, [r5, 0x8]
- ldr r0, =sub_8108978
- str r0, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81088E4
-
- thumb_func_start sub_8108978
-sub_8108978: @ 8108978
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bls _08108992
- b _08108AB2
-_08108992:
- lsls r0, 2
- ldr r1, =_081089A4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081089A4:
- .4byte _081089C0
- .4byte _081089D0
- .4byte _081089EA
- .4byte _08108A2C
- .4byte _08108A4E
- .4byte _08108A7C
- .4byte _08108AA2
-_081089C0:
- adds r0, r4, 0
- bl sub_8108AC0
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08108AB8
- b _08108AAA
-_081089D0:
- adds r0, r4, 0
- bl sub_8108AC0
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _08108AB8
- movs r0, 0
- strh r0, [r4, 0xA]
- b _08108AAA
-_081089EA:
- adds r0, r4, 0
- bl sub_8108AC0
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4, 0x12]
- adds r1, r0
- movs r2, 0
- strh r1, [r4, 0x12]
- adds r1, 0x10
- lsls r1, 16
- movs r0, 0x88
- lsls r0, 17
- cmp r1, r0
- bls _08108AB8
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _08108A28
- movs r0, 0x1
- strh r0, [r4, 0x22]
- movs r0, 0x6
- strh r0, [r4, 0x8]
- strh r2, [r4, 0xA]
- b _08108AB8
-_08108A28:
- strh r2, [r4, 0xA]
- b _08108AAA
-_08108A2C:
- adds r0, r4, 0
- bl sub_8108AC0
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- lsls r1, 1
- ldrh r0, [r4, 0x14]
- subs r0, r1
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _08108AB8
- b _08108AAA
-_08108A4E:
- adds r0, r4, 0
- bl sub_8108AC0
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x12]
- adds r0, 0x10
- lsls r0, 16
- movs r1, 0x88
- lsls r1, 17
- cmp r0, r1
- bls _08108AB8
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- movs r0, 0
- strh r0, [r4, 0xA]
- b _08108AAA
-_08108A7C:
- adds r0, r4, 0
- bl sub_8108AC0
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- lsls r1, 1
- ldrh r0, [r4, 0x14]
- subs r0, r1
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _08108AB8
- movs r0, 0x2
- strh r0, [r4, 0x8]
- b _08108AB8
-_08108AA2:
- movs r1, 0x18
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08108AB8
-_08108AAA:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08108AB8
-_08108AB2:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_08108AB8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8108978
-
- thumb_func_start sub_8108AC0
-sub_8108AC0: @ 8108AC0
- push {r4-r6,lr}
- adds r6, r0, 0
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08108B1A
- movs r0, 0
- strh r0, [r6, 0xC]
- ldr r0, =gUnknown_08595268
- movs r2, 0xE
- ldrsh r1, [r6, r2]
- movs r3, 0x10
- ldrsh r2, [r6, r3]
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08108B1A
- ldr r5, =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- movs r1, 0x10
- strh r1, [r0, 0x2E]
- ldrh r1, [r6, 0x12]
- strh r1, [r0, 0x32]
- ldrh r1, [r6, 0x14]
- strh r1, [r0, 0x36]
- ldrh r1, [r6, 0x1A]
- strh r1, [r0, 0x38]
- bl InitAnimArcTranslation
- adds r5, 0x1C
- adds r4, r5
- ldr r0, =sub_8108B2C
- str r0, [r4]
- ldrh r0, [r6, 0x18]
- adds r0, 0x1
- strh r0, [r6, 0x18]
-_08108B1A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8108AC0
-
- thumb_func_start sub_8108B2C
-sub_8108B2C: @ 8108B2C
- push {r4-r6,lr}
- adds r6, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _08108B86
- ldrh r0, [r6, 0x24]
- ldrh r1, [r6, 0x20]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrh r0, [r6, 0x26]
- ldrh r1, [r6, 0x22]
- adds r0, r1
- strh r0, [r6, 0x22]
- movs r0, 0x6
- strh r0, [r6, 0x2E]
- bl Random2
- movs r4, 0x1F
- adds r1, r4, 0
- ands r1, r0
- ldr r5, =0x0000fff0
- adds r1, r5
- ldrh r0, [r6, 0x20]
- adds r1, r0
- strh r1, [r6, 0x32]
- bl Random2
- ands r4, r0
- adds r4, r5
- ldrh r1, [r6, 0x22]
- adds r4, r1
- strh r4, [r6, 0x36]
- bl Random2
- movs r1, 0x7
- ands r1, r0
- mvns r1, r1
- strh r1, [r6, 0x38]
- adds r0, r6, 0
- bl InitAnimArcTranslation
- ldr r0, =sub_8108B94
- str r0, [r6, 0x1C]
-_08108B86:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8108B2C
-
- thumb_func_start sub_8108B94
-sub_8108B94: @ 8108B94
- push {r4-r6,lr}
- adds r5, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _08108BD0
- movs r4, 0
- ldr r6, =gTasks
-_08108BA6:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r6
- ldr r1, [r2]
- ldr r0, =sub_8108978
- cmp r1, r0
- bne _08108BC6
- movs r0, 0x1
- strh r0, [r2, 0x1C]
- ldrh r0, [r2, 0x18]
- subs r0, 0x1
- strh r0, [r2, 0x18]
- adds r0, r5, 0
- bl DestroySprite
-_08108BC6:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _08108BA6
-_08108BD0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8108B94
-
- thumb_func_start sub_8108BE0
-sub_8108BE0: @ 8108BE0
- ldr r2, =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r0, 0x20]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x22]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0x2E]
- ldrh r1, [r2, 0x6]
- strh r1, [r0, 0x30]
- ldrh r1, [r2, 0x8]
- strh r1, [r0, 0x32]
- ldrh r1, [r2, 0xA]
- strh r1, [r0, 0x34]
- ldr r1, =sub_8108C08
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_8108BE0
-
- thumb_func_start sub_8108C08
-sub_8108C08: @ 8108C08
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x2E]
- subs r0, r1
- strh r0, [r4, 0x36]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _08108C4C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08108C4C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8108C08
-
- thumb_func_start sub_8108C54
-sub_8108C54: @ 8108C54
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r1, r2
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 23
- strh r0, [r4, 0x24]
- lsls r1, 16
- asrs r1, 23
- strh r1, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _08108C8C
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_08108C8C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8108C54
-
- thumb_func_start sub_8108C94
-sub_8108C94: @ 8108C94
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x30]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldr r0, =sub_8108CDC
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8108C94
-
- thumb_func_start sub_8108CDC
-sub_8108CDC: @ 8108CDC
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- subs r6, r1, r0
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- subs r5, r1, r0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- muls r0, r6
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- muls r0, r5
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _08108D34
- movs r0, 0
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl sub_8108D54
-_08108D34:
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08108D46
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08108D46:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8108CDC
-
- thumb_func_start sub_8108D54
-sub_8108D54: @ 8108D54
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r4, r1, 0
- adds r5, r2, 0
- movs r2, 0x2E
- ldrsh r1, [r0, r2]
- lsrs r2, r1, 31
- adds r1, r2
- lsls r1, 15
- lsrs r1, 16
- str r1, [sp]
- ldrh r1, [r0, 0x24]
- ldrh r3, [r0, 0x20]
- adds r1, r3
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- bl Random2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- adds r0, r5, r0
- subs r0, 0x5
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- bl Random2
- negs r4, r4
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- adds r4, r0
- subs r4, 0x5
- lsls r4, 16
- lsrs r7, r4, 16
- movs r6, 0
- mov r0, r8
- lsls r0, 16
- mov r8, r0
- mov r1, r10
- lsls r1, 16
- str r1, [sp, 0xC]
- ldr r2, [sp]
- lsls r2, 16
- str r2, [sp, 0x10]
- asrs r1, 16
- lsls r0, r7, 16
- asrs r5, r0, 16
- str r0, [sp, 0x14]
- negs r3, r5
- str r3, [sp, 0x4]
- asrs r0, r2, 16
- adds r1, r0
- lsls r1, 16
- mov r10, r1
-_08108DE2:
- ldr r0, =gUnknown_08595310
- mov r2, r8
- asrs r1, r2, 16
- mov r3, r10
- asrs r2, r3, 16
- movs r3, 0x82
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r4, r0, r1
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- mov r0, r9
- strh r0, [r4, 0x30]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A82E4
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- cmp r5, 0
- bge _08108E30
- mov r1, sp
- ldrh r1, [r1, 0x4]
- strh r1, [r4, 0x32]
- b _08108E32
- .pool
-_08108E30:
- strh r7, [r4, 0x32]
-_08108E32:
- lsls r0, r6, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- lsrs r6, r0, 16
- cmp r0, 0
- ble _08108DE2
- movs r6, 0
- ldr r3, [sp, 0xC]
- asrs r1, r3, 16
- ldr r0, [sp, 0x14]
- asrs r5, r0, 16
- negs r2, r5
- str r2, [sp, 0x8]
- ldr r3, [sp, 0x10]
- asrs r0, r3, 16
- subs r1, r0
- lsls r1, 16
- mov r10, r1
-_08108E58:
- ldr r0, =gUnknown_08595310
- mov r2, r8
- asrs r1, r2, 16
- mov r3, r10
- asrs r2, r3, 16
- movs r3, 0x82
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r4, r0, r1
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- mov r0, r9
- strh r0, [r4, 0x30]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A82E4
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- cmp r5, 0
- ble _08108EA8
- mov r1, sp
- ldrh r1, [r1, 0x8]
- strh r1, [r4, 0x32]
- b _08108EAA
- .pool
-_08108EA8:
- strh r7, [r4, 0x32]
-_08108EAA:
- lsls r0, r6, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- lsrs r6, r0, 16
- cmp r0, 0
- ble _08108E58
- 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_8108D54
-
- .align 2, 0
diff --git a/common_syms/battle_anim_8170478.txt b/common_syms/battle_anim_8170478.txt
new file mode 100755
index 000000000..2fc194df7
--- /dev/null
+++ b/common_syms/battle_anim_8170478.txt
@@ -0,0 +1,3 @@
+gUnknown_030062DC
+gUnknown_030062E0
+gUnknown_030062E4
diff --git a/constants/battle_frontier_constants.inc b/constants/battle_frontier_constants.inc
deleted file mode 100644
index a6c069723..000000000
--- a/constants/battle_frontier_constants.inc
+++ /dev/null
@@ -1,70 +0,0 @@
- .set F_EV_SPREAD_HP, 1 << 0
- .set F_EV_SPREAD_ATTACK, 1 << 1
- .set F_EV_SPREAD_DEFENSE, 1 << 2
- .set F_EV_SPREAD_SPEED, 1 << 3
- .set F_EV_SPREAD_SP_ATTACK, 1 << 4
- .set F_EV_SPREAD_SP_DEFENSE, 1 << 5
-
- .set BATTLE_FRONTIER_ITEM_NONE, 0
- .set BATTLE_FRONTIER_ITEM_KINGS_ROCK, 1
- .set BATTLE_FRONTIER_ITEM_SITRUS_BERRY, 2
- .set BATTLE_FRONTIER_ITEM_ORAN_BERRY, 3
- .set BATTLE_FRONTIER_ITEM_CHESTO_BERRY, 4
- .set BATTLE_FRONTIER_ITEM_HARD_STONE, 5
- .set BATTLE_FRONTIER_ITEM_FOCUS_BAND, 6
- .set BATTLE_FRONTIER_ITEM_PERSIM_BERRY, 7
- .set BATTLE_FRONTIER_ITEM_MIRACLE_SEED, 8
- .set BATTLE_FRONTIER_ITEM_BERRY_JUICE, 9
- .set BATTLE_FRONTIER_ITEM_MACHO_BRACE, 10
- .set BATTLE_FRONTIER_ITEM_SILVER_POWDER, 11
- .set BATTLE_FRONTIER_ITEM_CHERI_BERRY, 12
- .set BATTLE_FRONTIER_ITEM_BLACK_GLASSES, 13
- .set BATTLE_FRONTIER_ITEM_BLACK_BELT, 14
- .set BATTLE_FRONTIER_ITEM_SOUL_DEW, 15
- .set BATTLE_FRONTIER_ITEM_CHOICE_BAND, 16
- .set BATTLE_FRONTIER_ITEM_MAGNET, 17
- .set BATTLE_FRONTIER_ITEM_SILK_SCARF, 18
- .set BATTLE_FRONTIER_ITEM_WHITE_HERB, 19
- .set BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE, 20
- .set BATTLE_FRONTIER_ITEM_DEEP_SEA_TOOTH, 21
- .set BATTLE_FRONTIER_ITEM_MYSTIC_WATER, 22
- .set BATTLE_FRONTIER_ITEM_SHARP_BEAK, 23
- .set BATTLE_FRONTIER_ITEM_QUICK_CLAW, 24
- .set BATTLE_FRONTIER_ITEM_LEFTOVERS, 25
- .set BATTLE_FRONTIER_ITEM_RAWST_BERRY, 26
- .set BATTLE_FRONTIER_ITEM_LIGHT_BALL, 27
- .set BATTLE_FRONTIER_ITEM_POISON_BARB, 28
- .set BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, 29
- .set BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, 30
- .set BATTLE_FRONTIER_ITEM_SPELL_TAG, 31
- .set BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, 32
- .set BATTLE_FRONTIER_ITEM_LEPPA_BERRY, 33
- .set BATTLE_FRONTIER_ITEM_SCOPE_LENS, 34
- .set BATTLE_FRONTIER_ITEM_TWISTED_SPOON, 35
- .set BATTLE_FRONTIER_ITEM_METAL_COAT, 36
- .set BATTLE_FRONTIER_ITEM_MENTAL_HERB, 37
- .set BATTLE_FRONTIER_ITEM_CHARCOAL, 38
- .set BATTLE_FRONTIER_ITEM_PECHA_BERRY, 39
- .set BATTLE_FRONTIER_ITEM_SOFT_SAND, 40
- .set BATTLE_FRONTIER_ITEM_LUM_BERRY, 41
- .set BATTLE_FRONTIER_ITEM_DRAGON_SCALE, 42
- .set BATTLE_FRONTIER_ITEM_DRAGON_FANG, 43
- .set BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, 44
- .set BATTLE_FRONTIER_ITEM_WIKI_BERRY, 45
- .set BATTLE_FRONTIER_ITEM_SEA_INCENSE, 46
- .set BATTLE_FRONTIER_ITEM_SHELL_BELL, 47
- .set BATTLE_FRONTIER_ITEM_SALAC_BERRY, 48
- .set BATTLE_FRONTIER_ITEM_LANSAT_BERRY, 49
- .set BATTLE_FRONTIER_ITEM_APICOT_BERRY, 50
- .set BATTLE_FRONTIER_ITEM_STARF_BERRY, 51
- .set BATTLE_FRONTIER_ITEM_LIECHI_BERRY, 52
- .set BATTLE_FRONTIER_ITEM_STICK, 53
- .set BATTLE_FRONTIER_ITEM_LAX_INCENSE, 54
- .set BATTLE_FRONTIER_ITEM_AGUAV_BERRY, 55
- .set BATTLE_FRONTIER_ITEM_FIGY_BERRY, 56
- .set BATTLE_FRONTIER_ITEM_THICK_CLUB, 57
- .set BATTLE_FRONTIER_ITEM_MAGO_BERRY, 58
- .set BATTLE_FRONTIER_ITEM_METAL_POWDER, 59
- .set BATTLE_FRONTIER_ITEM_PETAYA_BERRY, 60
- .set BATTLE_FRONTIER_ITEM_LUCKY_PUNCH, 61
- .set BATTLE_FRONTIER_ITEM_GANLON_BERRY, 62
diff --git a/constants/constants.inc b/constants/constants.inc
index 27d554ad0..38887dd28 100644
--- a/constants/constants.inc
+++ b/constants/constants.inc
@@ -2,6 +2,5 @@
.include "constants/misc_constants.inc"
.include "constants/contest_constants.inc"
.include "constants/pokemon_data_constants.inc"
- .include "constants/battle_frontier_constants.inc"
.include "constants/berry_constants.inc"
.include "constants/contest_move_effects.inc"
diff --git a/data/battle_anim_815A0D4.s b/data/battle_anim_815A0D4.s
deleted file mode 100644
index 208436f4c..000000000
--- a/data/battle_anim_815A0D4.s
+++ /dev/null
@@ -1,510 +0,0 @@
-#include "constants/battle_anim.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085CE004:: @ 85CE004
- .2byte 0x0000, 0x0004, 0x0010, 0x0004
- .2byte 0x0020, 0x0004, 0x0030, 0x0004
- .2byte 0x0040, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE01C:: @ 85CE01C
- .4byte gUnknown_085CE004
-
- .align 2
-gUnknown_085CE020:: @ 85CE020
- spr_template ANIM_TAG_SCRATCH, ANIM_TAG_SCRATCH, gUnknown_08524A34, gUnknown_085CE01C, NULL, gDummySpriteAffineAnimTable, sub_80A77C8
-
- .align 2
-gUnknown_085CE038:: @ 85CE038
- spr_template ANIM_TAG_BLACK_SMOKE, ANIM_TAG_BLACK_SMOKE, gUnknown_08524934, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815A0D4
-
- .align 2
-gUnknown_085CE050:: @ 85CE050
- spr_template ANIM_TAG_BLACK_BALL, ANIM_TAG_BLACK_BALL, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A78AC
-
- .align 2
-gUnknown_085CE068:: @ 85CE068
- .2byte 0x0000, 0x0028, 0x0010, 0x0008
- .2byte 0x0020, 0x0028, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE078:: @ 85CE078
- .4byte gUnknown_085CE068
-
- .align 2
-gUnknown_085CE07C:: @ 85CE07C
- spr_template ANIM_TAG_OPENING_EYE, ANIM_TAG_OPENING_EYE, gUnknown_08524914, gUnknown_085CE078, NULL, gDummySpriteAffineAnimTable, sub_80A77C8
-
- .align 2
-gUnknown_085CE094::
- spr_template ANIM_TAG_ROUND_WHITE_HALO, ANIM_TAG_ROUND_WHITE_HALO, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815A1B0
-
- .align 2
-gUnknown_085CE0AC::
- spr_template ANIM_TAG_TEAL_ALERT, ANIM_TAG_TEAL_ALERT, gUnknown_08524974, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815A254
-
- .align 2
-gUnknown_085CE0C4:: @ 85CE0C4
- .2byte 0x0180, 0x0180, 0x0000, 0x0000
- .2byte 0xffe0, 0x0018, 0x0500, 0x0000
- .2byte 0x0018, 0xffe0, 0x0500, 0x0000
- .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE0E4:: @ 85CE0E4
- .2byte 0x0030, 0x0030, 0x0000, 0x0000
- .2byte 0x0020, 0x0020, 0x0600, 0x0000
- .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE0FC:: @ 85CE0FC
- .4byte gUnknown_085CE0C4
- .4byte gUnknown_085CE0E4
-
- .align 2
-gUnknown_085CE104:: @ 85CE104
- spr_template ANIM_TAG_EYE, ANIM_TAG_EYE, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_085CE0FC, sub_815A2F0
-
- .align 2
-gUnknown_085CE11C:: @ 85CE11C
- spr_template ANIM_TAG_SPIKES, ANIM_TAG_SPIKES, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815A6C4
-
- .align 2
-gUnknown_085CE134:: @ 85CE134
- .2byte 0x0000, 0x0003, 0x0010, 0x0003
- .2byte 0x0020, 0x0003, 0x0030, 0x0003
- .2byte 0x0040, 0x0003, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE14C:: @ 85CE14C
- .4byte gUnknown_085CE134
-
- .align 2
-gUnknown_085CE150:: @ 85CE150
- spr_template ANIM_TAG_LEER, ANIM_TAG_LEER, gUnknown_08524914, gUnknown_085CE14C, NULL, gDummySpriteAffineAnimTable, sub_815A7B0
-
- .align 2
-gUnknown_085CE168:: @ 85CE168
- .2byte 0x0000, 0x0003, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE170:: @ 85CE170
- .4byte gUnknown_085CE168
-
- .align 2
-gUnknown_085CE174:: @ 85CE174
- .2byte 0xfff9, 0xfff9, 0x10fd, 0x0000
- .2byte 0x0007, 0x0007, 0x1003, 0x0000
- .2byte 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE18C:: @ 85CE18C
- .4byte gUnknown_085CE174
-
- .align 2
-gUnknown_085CE190:: @ 85CE190
- spr_template ANIM_TAG_LETTER_Z, ANIM_TAG_LETTER_Z, gUnknown_08524974, gUnknown_085CE170, NULL, gUnknown_085CE18C, sub_815A7EC
-
- .align 2
-gUnknown_085CE1A8:: @ 85CE1A8
- .2byte 0x0000, 0x0008, 0x0010, 0x0010, 0x0020, 0x0004, 0x0030, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE1BC:: @ 85CE1BC
- .4byte gUnknown_085CE1A8
-
- .align 2
-gUnknown_085CE1C0:: @ 85CE1C0
- .2byte 0x0200, 0x0200, 0x0000, 0x0000
- .2byte 0xffe0, 0xffe0, 0x0800, 0x0000
- .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE1D8:: @ 85CE1D8
- .4byte gUnknown_085CE1C0
-
- .align 2
-gUnknown_085CE1DC:: @ 85CE1DC
- spr_template ANIM_TAG_FANG_ATTACK, ANIM_TAG_FANG_ATTACK, gUnknown_085249D4, gUnknown_085CE1BC, NULL, gUnknown_085CE1D8, sub_815A8AC
-
- .align 2
-gUnknown_085CE1F4:: @ 85CE1F4
- .2byte 0x0000, 0x0180, 0x0000, 0x0000
- .2byte 0x0010, 0x0000, 0x1400, 0x0000
- .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE20C:: @ 85CE20C
- .2byte 0x0140, 0x0180, 0x0000, 0x0000
- .2byte 0xfff0, 0x0000, 0x1300, 0x0000
- .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE224:: @ 85CE224
- .4byte gUnknown_085CE1F4
- .4byte gUnknown_085CE20C
-
- .align 2
-gUnknown_085CE22C:: @ 85CE22C
- spr_template ANIM_TAG_SPOTLIGHT, ANIM_TAG_SPOTLIGHT, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_085CE224, sub_815A934
-
- .align 2
-gUnknown_085CE244::
- spr_template ANIM_TAG_TAG_HAND, ANIM_TAG_TAG_HAND, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815AAA4
-
- .align 2
-gUnknown_085CE25C::
- spr_template ANIM_TAG_TAG_HAND, ANIM_TAG_TAG_HAND, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815ABD0
-
- .align 2
-gUnknown_085CE274:: @ 85CE274
- .2byte 0x0000, 0x0002, 0x0008, 0x0002
- .2byte 0x0010, 0x0002, 0xfffe, 0x0000
-
- .align 2
-gUnknown_085CE284:: @ 85CE284
- .4byte gUnknown_085CE274
-
- .align 2
-gUnknown_085CE288:: @ 85CE288
- spr_template ANIM_TAG_RAPID_SPIN, ANIM_TAG_RAPID_SPIN, gUnknown_08524934, gUnknown_085CE284, NULL, gDummySpriteAffineAnimTable, sub_815ACD0
-
- .align 2
-gUnknown_085CE2A0:: @ 85CE2A0
- .2byte 0xfff4, 0x0008, 0x0400, 0x0000, 0x0014, 0xffec, 0x0400, 0x0000, 0xfff8, 0x000c, 0x0400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE2C0:: @ 85CE2C0
- .2byte 0x0000, 0x0008, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE2C8:: @ 85CE2C8
- .4byte gUnknown_085CE2C0
-
- .align 2
-gUnknown_085CE2CC:: @ 85CE2CC
- .2byte 0x0000, 0x0000, 0x2805, 0x0000, 0x0000, 0x0000, 0x0a0a, 0x0000, 0x0000, 0x0000, 0x0a0f, 0x0000, 0x0000, 0x0000, 0x2814, 0x0000
- .2byte 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE2F4:: @ 85CE2F4
- .4byte gUnknown_085CE2CC
-
- .align 2
-gUnknown_085CE2F8:: @ 85CE2F8
- spr_template ANIM_TAG_TRI_FORCE_TRIANGLE, ANIM_TAG_TRI_FORCE_TRIANGLE, gUnknown_085249DC, gUnknown_085CE2C8, NULL, gUnknown_085CE2F4, sub_815B27C
-
- .align 2
-gUnknown_085CE310:: @ 85CE310
- .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0x0020, 0x0043, 0x0010, 0x0043, 0x0000, 0x0043, 0xfffd, 0x0001
- .2byte 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE334:: @ 85CE334
- .4byte gUnknown_085CE310
-
- .align 2
-gUnknown_085CE338:: @ 85CE338
- spr_template ANIM_TAG_ECLIPSING_ORB, ANIM_TAG_ECLIPSING_ORB, gUnknown_08524914, gUnknown_085CE334, NULL, gDummySpriteAffineAnimTable, sub_80A77C8
-
- .align 2
-gUnknown_085CE350:: @ 85CE350
- .2byte 0xfff4, 0x0014, 0x0800, 0x0000, 0x000c, 0xffec, 0x0800, 0x0000, 0x7ffd, 0x0002, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE370:: @ 85CE370
- spr_template ANIM_TAG_POKEBALL, ANIM_TAG_POKEBALL, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815B394
-
- .align 2
-gUnknown_085CE388:: @ 85CE388
- spr_template ANIM_TAG_GOLD_STARS, ANIM_TAG_GOLD_STARS, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815B49C
-
- .align 2
-gUnknown_085CE3A0:: @ 85CE3A0
- spr_template ANIM_TAG_GOLD_STARS, ANIM_TAG_GOLD_STARS, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815B570
-
- .align 2
-gUnknown_085CE3B8:: @ 85CE3B8
- .2byte 0x0008, 0xfff8, 0x0c00, 0x0000, 0xfff0, 0x0010, 0x0c00, 0x0000, 0x0008, 0xfff8, 0x0c00, 0x0000, 0x7ffd, 0x0001, 0x0000, 0x0000
- .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE3E0:: @ 85CE3E0
- .2byte 0x0000, 0x0006, 0x1400, 0x0000, 0x0000, 0x0000, 0x1400, 0x0000, 0x0000, 0xffee, 0x0600, 0x0000, 0xffee, 0xffee, 0x0300, 0x0000
- .2byte 0x0000, 0x0000, 0x0f00, 0x0000, 0x0004, 0x0004, 0x0d00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE418:: @ 85CE418
- spr_template ANIM_TAG_BLUE_ORB, ANIM_TAG_BLUE_ORB, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815B70C
-
- .align 2
-gUnknown_085CE430:: @ 85CE430
- .2byte 0x0000, 0x0006, 0x1400, 0x0000, 0x0000, 0x0000, 0x1400, 0x0000, 0x0007, 0xffe2, 0x0600, 0x0000, 0x0000, 0x0000, 0x1400, 0x0000
- .2byte 0xfffe, 0x0003, 0x1400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE460:: @ 85CE460
- .byte 0xe8, 0x18, 0xfc, 0x00
-
- .align 2
-gUnknown_085CE464:: @ 85CE464
- .2byte 0x0000, 0x0006, 0x0004, 0x0006, 0xfffe, 0x0000
-
- .align 2
-gUnknown_085CE470:: @ 85CE470
- .2byte 0x0008, 0x0006, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE478:: @ 85CE478
- .2byte 0x000c, 0x0006, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE480:: @ 85CE480
- .4byte gUnknown_085CE464
- .4byte gUnknown_085CE470
- .4byte gUnknown_085CE478
-
- .align 2
-gUnknown_085CE48C:: @ 85CE48C
- spr_template ANIM_TAG_GREEN_STAR, ANIM_TAG_GREEN_STAR, gUnknown_0852490C, gUnknown_085CE480, NULL, gDummySpriteAffineAnimTable, sub_815BE04
-
- .align 2
-gUnknown_085CE4A4:: @ 85CE4A4
- .byte 0x78, 0x50, 0x28, 0x00
-
- .align 2
-gUnknown_085CE4A8:: @ 85CE4A8
- .2byte 0x0000, 0x0000, 0x0032, 0x0000
-
- .align 2
-gUnknown_085CE4B0:: @ 85CE4B0
- .2byte 0x0000, 0xfff1, 0x0700, 0x0000, 0x0000, 0x000f, 0x0700, 0x0000, 0x7ffd, 0x0002, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE4D0:: @ 85CE4D0
- spr_template ANIM_TAG_ANGER, ANIM_TAG_ANGER, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815C400
-
- .align 2
-gUnknown_085CE4E8:: @ 85CE4E8
- .2byte 0x0000, 0x0008, 0x0001, 0x0008, 0x0002, 0x0008, 0x0003, 0x0008, 0x0003, 0x0088, 0x0002, 0x0088, 0x0000, 0x0088, 0x0001, 0x0088
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_085CE50C:: @ 85CE50C
- .2byte 0x0000, 0x0048, 0x0001, 0x0048, 0x0002, 0x0048, 0x0003, 0x0048, 0x0003, 0x00c8, 0x0002, 0x00c8, 0x0000, 0x00c8, 0x0001, 0x00c8
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_085CE530:: @ 85CE530
- .2byte 0x0000, 0x0008, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE538:: @ 85CE538
- .4byte gUnknown_085CE4E8
- .4byte gUnknown_085CE50C
- .4byte gUnknown_085CE530
-
- .align 2
-gUnknown_085CE544:: @ 85CE544
- spr_template ANIM_TAG_PINK_PETAL, ANIM_TAG_PINK_PETAL, gUnknown_08524904, gUnknown_085CE538, NULL, gDummySpriteAffineAnimTable, sub_815C6B0
-
- .align 2
-gUnknown_085CE55C:: @ 85CE55C
- .byte 0x0c, 0x18, 0x10, 0x16, 0x13, 0x13, 0x15, 0x10, 0x17, 0x0c, 0x16, 0x07, 0x13, 0x04, 0x10, 0x01, 0x0b, 0x00, 0x06, 0x01, 0x04, 0x04, 0x01, 0x07, 0x00, 0x0c, 0x02, 0x11, 0x04, 0x13, 0x08, 0x16
-
- .align 2
-gUnknown_085CE57C:: @ 85CE57C
- .2byte 0x0000, 0x0005, 0x0004, 0x0009, 0x0008, 0x0005, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE58C:: @ 85CE58C
- .4byte gUnknown_085CE57C
-
- .align 2
-gUnknown_085CE590:: @ 85CE590
- spr_template ANIM_TAG_PAIN_SPLIT, ANIM_TAG_PAIN_SPLIT, gUnknown_0852490C, gUnknown_085CE58C, NULL, gDummySpriteAffineAnimTable, sub_815C95C
-gUnknown_085CE5A8::
- spr_template ANIM_TAG_CONFETTI, ANIM_TAG_CONFETTI, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815CB88
-gUnknown_085CE5C0::
- spr_template ANIM_TAG_SPOTLIGHT, ANIM_TAG_SPOTLIGHT, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_085CE224, sub_815CC94
-gBattleAnimSpriteTemplate_85CE5D8::
- spr_template ANIM_TAG_BLUE_ORB, ANIM_TAG_BLUE_ORB, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815CDB4
-
- .align 2
-gUnknown_085CE5F0:: @ 85CE5F0
- .2byte 0x0010, 0x0000, 0x0400, 0x0000, 0x0000, 0xfffd, 0x1000, 0x0000, 0x0004, 0x0000, 0x0400, 0x0000, 0x0000, 0x0000, 0x1800, 0x0000
- .2byte 0xfffb, 0x0003, 0x1000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE620:: @ 85CE620
- .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0800, 0x0000, 0x0008, 0x0008, 0x0800, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE640:: @ 85CE640
- .2byte 0x00c0, 0x00c0, 0x0000, 0x0000, 0x0008, 0x0008, 0x0800, 0x0000, 0xfff8, 0xfff8, 0x0800, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE660:: @ 85CE660
- .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0008, 0x0008, 0x0800, 0x0000, 0xfff8, 0xfff8, 0x0800, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE680:: @ 85CE680
- .4byte gUnknown_085CE620
- .4byte gUnknown_085CE640
- .4byte gUnknown_085CE660
-
- .align 2
-gUnknown_085CE68C:: @ 85CE68C
- spr_template ANIM_TAG_PINK_CLOUD, ANIM_TAG_PINK_CLOUD, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_085CE680, sub_815D7B4
-
- .align 2
-gUnknown_085CE6A4:: @ 85CE6A4
- .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0xfffc, 0xfffa, 0x1000, 0x0000, 0x0004, 0x0006, 0x1000, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE6C4:: @ 85CE6C4
- .2byte 0x00c0, 0x00c0, 0x0000, 0x0000, 0x0004, 0x0006, 0x1000, 0x0000, 0xfffc, 0xfffa, 0x1000, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE6E4:: @ 85CE6E4
- .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0004, 0x0006, 0x1000, 0x0000, 0xfffc, 0xfffa, 0x1000, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE704:: @ 85CE704
- .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0008, 0x000a, 0x1e00, 0x0000, 0xfff8, 0xfff6, 0x1000, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE724:: @ 85CE724
- .4byte gUnknown_085CE6A4
- .4byte gUnknown_085CE6C4
- .4byte gUnknown_085CE6E4
- .4byte gUnknown_085CE704
-
- .align 2
-gUnknown_085CE734:: @ 85CE734
- spr_template ANIM_TAG_PINK_CLOUD, ANIM_TAG_PINK_CLOUD, gUnknown_085249D4, gDummySpriteAnimTable, NULL, gUnknown_085CE724, sub_815D870
-
- .align 2
-gUnknown_085CE74C:: @ 85CE74C
- .2byte 0xfff0, 0x0010, 0x0600, 0x0000, 0x0010, 0xfff0, 0x0c00, 0x0000, 0xfff0, 0x0010, 0x0600, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE76C:: @ 85CE76C
- spr_template ANIM_TAG_SWEAT_DROP, ANIM_TAG_SWEAT_DROP, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815DEBC
-
- .align 2
-gUnknown_085CE784:: @ 85CE784
- .byte 0x3c, 0x07, 0xbc, 0x16, 0x5b, 0x22, 0xdb, 0x2d, 0x5a, 0x3d, 0xfa, 0x48, 0x79, 0x54, 0x19, 0x64, 0x19, 0x5c, 0x19, 0x50, 0x19, 0x40, 0x19, 0x34, 0x1a, 0x28, 0x1a, 0x18, 0x1a, 0x0c, 0x1b, 0x00
- .byte 0x3b, 0x00, 0xbb, 0x00, 0x3b, 0x01, 0x9b, 0x01, 0x1c, 0x02, 0x7c, 0x02, 0xfc, 0x02, 0x7d, 0x03
-
- .align 2
-gUnknown_085CE7B4:: @ 85CE7B4
- .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0xfffe, 0x0000
-
- .align 2
-gUnknown_085CE7C0:: @ 85CE7C0
- .2byte 0x0020, 0x0003, 0x0030, 0x0003, 0xfffe, 0x0000
-
- .align 2
-gUnknown_085CE7CC:: @ 85CE7CC
- .4byte gUnknown_085CE7B4
- .4byte gUnknown_085CE7C0
-
- .align 2
-gUnknown_085CE7D4:: @ 85CE7D4
- spr_template ANIM_TAG_NOISE_LINE, ANIM_TAG_NOISE_LINE, gUnknown_08524914, gUnknown_085CE7CC, NULL, gDummySpriteAffineAnimTable, sub_815E01C
-
- .align 2
-gUnknown_085CE7EC:: @ 85CE7EC
- spr_template ANIM_TAG_SMALL_RED_EYE, ANIM_TAG_SMALL_RED_EYE, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815E404
-gUnknown_085CE804::
- spr_template ANIM_TAG_PAW_PRINT, ANIM_TAG_PAW_PRINT, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815E444
-
- .align 2
-gUnknown_085CE81C:: @ 85CE81C
- .2byte 0x0000, 0x0000, 0x18fc, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE82C:: @ 85CE82C
- .2byte 0x0100, 0x0100, 0x00c0, 0x0000, 0x0000, 0x0000, 0x1804, 0x0000
- .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE844:: @ 85CE844
- .4byte gUnknown_085CE81C
- .4byte gUnknown_085CE82C
-
- .align 2
-gUnknown_085CE84C:: @ 85CE84C
- spr_template ANIM_TAG_RED_BALL, ANIM_TAG_RED_BALL, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_085CE844, SpriteCallbackDummy
-
- .align 2
-gUnknown_085CE864::
- spr_template ANIM_TAG_TAG_HAND, ANIM_TAG_TAG_HAND, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815E6D8
-
- .align 2
-gUnknown_085CE87C:: @ 85CE87C
- .2byte 0x0000, 0xfff0, 0x0600, 0x0000, 0x0000, 0x0010, 0x0600, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE894:: @ 85CE894
- spr_template ANIM_TAG_SMELLINGSALT_EFFECT, ANIM_TAG_SMELLINGSALT_EFFECT, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815E954
-gUnknown_085CE8AC::
- spr_template ANIM_TAG_TAG_HAND, ANIM_TAG_TAG_HAND, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815EA14
-gUnknown_085CE8C4::
- spr_template ANIM_TAG_MAGNIFYING_GLASS, ANIM_TAG_MAGNIFYING_GLASS, gUnknown_08524A34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815EE84
-gUnknown_085CE8DC::
- spr_template ANIM_TAG_GOLD_STARS, ANIM_TAG_GOLD_STARS, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815F18C
-gUnknown_085CE8F4::
- spr_template ANIM_TAG_GOLD_STARS, ANIM_TAG_GOLD_STARS, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81061C4
-gUnknown_085CE90C::
- spr_template ANIM_TAG_X_SIGN, ANIM_TAG_X_SIGN, gUnknown_0852491C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815F48C
-gUnknown_085CE924::
- spr_template ANIM_TAG_ITEM_BAG, ANIM_TAG_ITEM_BAG, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_815FE80
-
- .align 2
-gUnknown_085CE93C:: @ 85CE93C
- .2byte 0x0000, 0x0004, 0x0040, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_085CE948:: @ 85CE948
- .4byte gUnknown_085CE93C
-
- .align 2
-gUnknown_085CE94C:: @ 85CE94C
- .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x08fc, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE964:: @ 85CE964
- .2byte 0xff00, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0804, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE97C:: @ 85CE97C
- .4byte gUnknown_085CE94C
- .4byte gUnknown_085CE964
-
- .align 2
-gUnknown_085CE984:: @ 85CE984
- spr_template ANIM_TAG_SLAM_HIT_2, ANIM_TAG_SLAM_HIT_2, gUnknown_0852497C, gUnknown_085CE948, NULL, gUnknown_085CE97C, sub_8160338
-
- .align 2
-gUnknown_085CE99C:: @ 85CE99C
- .2byte 0x0000, 0x0000, 0x40fc, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085CE9AC:: @ 85CE9AC
- .4byte gUnknown_085CE99C
-
- .align 2
-gUnknown_085CE9B0:: @ 85CE9B0
- spr_template ANIM_TAG_RECYCLE, ANIM_TAG_RECYCLE, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_085CE9AC, sub_81603A8
-
- .align 2
-gUnknown_085CE9C8:: @ 85CE9C8
- .2byte 0x0000, 0x0010, 0x0400, 0x0000, 0xfffe, 0x0000, 0x0800, 0x0000, 0x0000, 0x0004, 0x0400, 0x0000, 0x0000, 0x0000, 0x1800, 0x0000
- .2byte 0x0001, 0xfffb, 0x1000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
diff --git a/data/battle_anim_8170478.s b/data/battle_anim_8170478.s
deleted file mode 100644
index 74bdce846..000000000
--- a/data/battle_anim_8170478.s
+++ /dev/null
@@ -1,157 +0,0 @@
-#include "constants/battle_anim.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085E5088:: @ 85E5088
- .byte 0x0a, 0x02, 0xfd, 0x00, 0x0f, 0x00, 0xfc, 0x00
- .byte 0xf6, 0x02, 0xfc, 0x00
-
- .align 2
-gUnknown_085E5094:: @ 85E5094
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ec
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ed
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ee
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ef
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f0
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f1
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f2
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f3
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f4
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f5
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f6
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f7
-
- .align 2
-gUnknown_085E50F4:: @ 85E50F4
- obj_pal gBattleAnimSpritePalette_136, 0xd6ec
- obj_pal gBattleAnimSpritePalette_136, 0xd6ed
- obj_pal gBattleAnimSpritePalette_136, 0xd6ee
- obj_pal gBattleAnimSpritePalette_136, 0xd6ef
- obj_pal gBattleAnimSpritePalette_136, 0xd6f0
- obj_pal gBattleAnimSpritePalette_136, 0xd6f1
- obj_pal gBattleAnimSpritePalette_136, 0xd6f2
- obj_pal gBattleAnimSpritePalette_136, 0xd6f3
- obj_pal gBattleAnimSpritePalette_136, 0xd6f4
- obj_pal gBattleAnimSpritePalette_136, 0xd6f5
- obj_pal gBattleAnimSpritePalette_136, 0xd6f6
- obj_pal gBattleAnimSpritePalette_136, 0xd6f7
-
- .align 2
-gUnknown_085E5154:: @ 85E5154
- .2byte 0x0000, 0x0001, 0x0001, 0x0001
- .2byte 0x0002, 0x0001, 0x0000, 0x0041
- .2byte 0x0002, 0x0001, 0x0001, 0x0001
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_085E5170:: @ 85E5170
- .2byte 0x0003, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E5178:: @ 85E5178
- .2byte 0x0004, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E5180:: @ 85E5180
- .2byte 0x0005, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E5188:: @ 85E5188
- .2byte 0x0006, 0x0004, 0x0007, 0x0004
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_085E5194:: @ 85E5194
- .2byte 0x0007, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E519C:: @ 85E519C
- .4byte gUnknown_085E5154
- .4byte gUnknown_085E5170
- .4byte gUnknown_085E5178
- .4byte gUnknown_085E5180
- .4byte gUnknown_085E5188
- .4byte gUnknown_085E5194
-
- .align 2
-gUnknown_085E51B4:: @ 85E51B4
- .byte 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x02, 0x03
- .byte 0x05, 0x05, 0x04, 0x04
-
- .align 2
-gUnknown_085E51C0:: @ 85E51C0
- .4byte sub_8171E50
- .4byte sub_81723D4
- .4byte sub_81721CC
- .4byte sub_81722CC
- .4byte sub_81726BC
- .4byte sub_81721CC
- .4byte sub_81720C8
- .4byte sub_81722CC
- .4byte sub_8172560
- .4byte sub_8171FC4
- .4byte sub_81723D4
- .4byte sub_81727E8
-
- .align 2
-gUnknown_085E51F0:: @ 85E51F0
- spr_template 0xd6ec, 0xd6ec, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6ed, 0xd6ed, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6ee, 0xd6ee, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6ef, 0xd6ef, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_085E5250:: @ 85E5250
- spr_template 0xd6f0, 0xd6f0, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f1, 0xd6f1, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f2, 0xd6f2, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f3, 0xd6f3, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f4, 0xd6f4, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f5, 0xd6f5, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f6, 0xd6f6, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f7, 0xd6f7, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_085E5310:: @ 85E5310
- .2byte 0x7adf, 0x7af0, 0x53d7, 0x3fff, 0x7297, 0x67f5, 0x7b2c, 0x2b7e
- .2byte 0x431f, 0x7bdd, 0x2a3f, 0x293f, 0x0000, 0x0201, 0x0403, 0x0101
- .2byte 0x0100, 0x0503, 0x0506, 0x0004
-
- .align 2
-gBattleAnimSpriteTemplate_85E5338:: @ 85E5338
- spr_template ANIM_TAG_UNUSED_RED_BRICK, ANIM_TAG_UNUSED_RED_BRICK, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_817330C
-
- .align 2
-gUnknown_085E5350:: @ 8535350
- .2byte 0x0040, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E5358:: @ 8535358
- .4byte gUnknown_085E5350
-
- .align 2
- spr_template ANIM_TAG_ROCKS, ANIM_TAG_ROCKS, gUnknown_08524914, gUnknown_085E5358, NULL, gDummySpriteAffineAnimTable, sub_817330C
-
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index ca338ac9b..6552dd9da 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -1326,7 +1326,7 @@ Move_SWORDS_DANCE:
setalpha 12, 8
playsewithpan SE_W014, SOUND_PAN_ATTACKER
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 16, 6, 1, 4
- createsprite gBattleAnimSpriteTemplate_8593380, ANIM_ATTACKER, 2, 0, 0
+ createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0
delay 22
createvisualtask sub_8115D94, 2, ANIM_TAG_SWORD, 2, 2, RGB(18, 31, 31), 16, 0, 0
waitforvisualfinish
@@ -1712,10 +1712,10 @@ Frustration_Strongest:
waitforvisualfinish
delay 20
playsewithpan SE_W207B, SOUND_PAN_ATTACKER
- createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28
waitforvisualfinish
playsewithpan SE_W207B, SOUND_PAN_ATTACKER
- createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28
waitforvisualfinish
delay 10
createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, ANIM_ATTACKER
@@ -1748,7 +1748,7 @@ Frustration_Strong:
waitforvisualfinish
delay 20
playsewithpan SE_W207B, SOUND_PAN_ATTACKER
- createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28
waitforvisualfinish
delay 5
createvisualtask sub_815C3A8, 5
@@ -1769,7 +1769,7 @@ Frustration_Strong:
goto Frustration_Continue
Frustration_Medium:
playsewithpan SE_W207B, SOUND_PAN_ATTACKER
- createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28
waitforvisualfinish
delay 5
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
@@ -1843,8 +1843,8 @@ Move_VICE_GRIP:
monbg ANIM_DEF_PARTNER
setalpha 12, 8
playsewithpan SE_W011, SOUND_PAN_TARGET
- createsprite gUnknown_08593590, ANIM_ATTACKER, 2, 0
- createsprite gUnknown_08593590, ANIM_ATTACKER, 2, 1
+ createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 0
+ createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 1
delay 9
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 5, 1
@@ -1861,8 +1861,8 @@ Move_GUILLOTINE:
fadetobgfromset BG_GUILLOTINE_OPPONENT, BG_GUILLOTINE_PLAYER, BG_GUILLOTINE_CONTESTS
waitbgfadein
playsewithpan SE_W011, SOUND_PAN_TARGET
- createsprite gUnknown_085935D0, ANIM_ATTACKER, 2, 0
- createsprite gUnknown_085935D0, ANIM_ATTACKER, 2, 1
+ createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0
+ createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 1
createvisualtask sub_8116620, 10, 4, 2, 0, 16, RGB_BLACK
delay 9
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 23, 1
@@ -2750,10 +2750,10 @@ Move_RAGE:
monbg ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_ATTACKER, RGB_RED, 10, 0, 2
- createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, -20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28
playsewithpan SE_W207B, SOUND_PAN_ATTACKER
delay 20
- createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28
playsewithpan SE_W207B, SOUND_PAN_ATTACKER
waitforvisualfinish
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
@@ -2803,7 +2803,7 @@ Move_DOUBLE_TEAM:
Move_MINIMIZE:
setalpha 10, 8
- createvisualtask sub_8104674, 2
+ createvisualtask AnimTask_Minimize, 2
loopsewithpan SE_W107, SOUND_PAN_ATTACKER, 34, 3
waitforvisualfinish
blendoff
@@ -2872,8 +2872,8 @@ Move_KINESIS:
playsewithpan SE_W060, SOUND_PAN_ATTACKER
call SetPsychicBackground
createsprite gUnknown_085966DC, ANIM_ATTACKER, 20
- createsprite gUnknown_08593344, ANIM_ATTACKER, 19, 32, -8, 0
- createsprite gUnknown_08593344, ANIM_ATTACKER, 19, 32, 16, 1
+ createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, -8, 0
+ createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, 16, 1
loopsewithpan SE_W109, SOUND_PAN_ATTACKER, 21, 2
delay 60
playsewithpan SE_W146, SOUND_PAN_ATTACKER
@@ -2987,7 +2987,7 @@ Move_FLASH:
end
Move_SPLASH:
- createvisualtask sub_8104938, 2, 0, 3
+ createvisualtask AnimTask_Splash, 2, 0, 3
delay 8
loopsewithpan SE_W039, SOUND_PAN_ATTACKER, 38, 3
waitforvisualfinish
@@ -3066,7 +3066,7 @@ Move_SKETCH:
createsprite gUnknown_085936D4, ANIM_TARGET, 2
waitforvisualfinish
clearmonbg ANIM_TARGET
- createvisualtask sub_8104938, 2, 0, 2
+ createvisualtask AnimTask_Splash, 2, 0, 2
loopsewithpan SE_W039, SOUND_PAN_ATTACKER, 38, 2
end
@@ -3278,17 +3278,17 @@ Move_FALSE_SWIPE:
Move_SWAGGER:
loadspritegfx ANIM_TAG_BREATH
loadspritegfx ANIM_TAG_ANGER
- createvisualtask sub_8104AB4, 2
+ createvisualtask AnimTask_GrowAndShrink, 2
playsewithpan SE_W207, SOUND_PAN_ATTACKER
waitforvisualfinish
- createsprite gUnknown_08593658, ANIM_ATTACKER, 2
+ createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2
loopsewithpan SE_W207, SOUND_PAN_ATTACKER, 4, 2
waitforvisualfinish
delay 24
- createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, -20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28
playsewithpan SE_W207B, SOUND_PAN_TARGET
delay 12
- createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, 20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28
playsewithpan SE_W207B, SOUND_PAN_TARGET
waitforvisualfinish
end
@@ -3496,10 +3496,10 @@ Move_TORMENT:
createvisualtask sub_815AFF0, 2
waitforvisualfinish
createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_TARGET, RGB_RED, 10, 1, 1
- createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, -20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28
playsewithpan SE_W207B, SOUND_PAN_TARGET
delay 20
- createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, 20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28
playsewithpan SE_W207B, SOUND_PAN_TARGET
end
@@ -3606,11 +3606,11 @@ Move_TAUNT:
loopsewithpan SE_W039, SOUND_PAN_ATTACKER, 16, 2
waitforvisualfinish
delay 8
- createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, -20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28
playsewithpan SE_W207B, SOUND_PAN_TARGET
waitforvisualfinish
delay 12
- createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, 20, -28
+ createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28
playsewithpan SE_W207B, SOUND_PAN_TARGET
end
@@ -4008,7 +4008,7 @@ Move_TEETER_DANCE:
Move_MUD_SPORT:
loadspritegfx ANIM_TAG_MUD_SAND
- createvisualtask sub_8104938, 2, 0, 6
+ createvisualtask AnimTask_Splash, 2, 0, 6
delay 24
createsprite gUnknown_085971E4, ANIM_TARGET, 2, 0, -4, -16
createsprite gUnknown_085971E4, ANIM_TARGET, 2, 0, 4, -12
@@ -4381,10 +4381,10 @@ Move_HOWL:
Move_BULK_UP:
loadspritegfx ANIM_TAG_BREATH
- createvisualtask sub_8104AB4, 2
+ createvisualtask AnimTask_GrowAndShrink, 2
playsewithpan SE_W207, SOUND_PAN_ATTACKER
waitforvisualfinish
- createsprite gUnknown_08593658, ANIM_ATTACKER, 2
+ createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2
loopsewithpan SE_W207, SOUND_PAN_ATTACKER, 4, 2
waitforvisualfinish
end
@@ -5386,7 +5386,7 @@ IceBeam1:
Move_WITHDRAW:
playsewithpan SE_W029, SOUND_PAN_ATTACKER
- createvisualtask sub_81036A0, 5
+ createvisualtask AnimTask_Withdraw, 5
waitforvisualfinish
end
@@ -5443,54 +5443,54 @@ SolarBeamSetUp:
blendoff
goto SolarBeamEnd
SolarBeamSetUp1:
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 40, 40, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 40, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, -40, -40, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -40, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 0, 40, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 40, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 0, -40, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -40, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 40, -20, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, -20, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 40, 20, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 20, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, -40, -20, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -20, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, -40, 20, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, -20, 30, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -20, 30, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 20, -30, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 20, -30, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, -20, -30, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -20, -30, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 20, 30, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 20, 30, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, -40, 0, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, 0, 16
delay 2
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 40, 0, 16
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 0, 16
delay 2
return
SolarBeamUnleash:
call SetSolarbeamBg
panse_1B SE_W076, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
- createvisualtask sub_80FEA58, 5
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 0
+ createvisualtask AnimTask_CreateSmallSolarbeamOrbs, 5
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 1
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
delay 4
createvisualtask sub_8116620, 10, 4, 1, 0, 10, RGB(25, 31, 0)
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 2
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
delay 4
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 3
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 4
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 5
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 6
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
delay 4
call SolarBeamUnleash1
call SolarBeamUnleash1
@@ -5499,19 +5499,19 @@ SolarBeamUnleash:
call UnsetSolarbeamBg
goto SolarBeamEnd
SolarBeamUnleash1:
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 0
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 1
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 2
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 3
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 4
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 5
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
delay 4
- createsprite gUnknown_085921F8, ANIM_TARGET, 3, 15, 0, 20, 6
+ createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
delay 4
return
@@ -5717,28 +5717,28 @@ Move_ABSORB:
AbsorbEffect:
playsewithpan SE_W152, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
delay 4
playsewithpan SE_W152, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
delay 4
playsewithpan SE_W152, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
delay 4
playsewithpan SE_W152, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36
delay 4
playsewithpan SE_W152, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
delay 4
playsewithpan SE_W152, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
delay 4
playsewithpan SE_W152, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39
delay 4
playsewithpan SE_W152, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35
delay 4
return
@@ -5770,36 +5770,36 @@ Move_MEGA_DRAIN:
MegaDrainEffect:
playsewithpan SE_W145C, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35
delay 4
playsewithpan SE_W145C, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39
delay 4
playsewithpan SE_W145C, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 16, 33
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
delay 4
playsewithpan SE_W145C, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, -15, -16, 36
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
delay 4
playsewithpan SE_W145C, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36
delay 4
playsewithpan SE_W145C, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
delay 4
playsewithpan SE_W145C, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -10, 20, 20, 39
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
delay 4
playsewithpan SE_W145C, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35
delay 4
return
@@ -5831,44 +5831,44 @@ Move_GIGA_DRAIN:
GigaDrainEffect:
playsewithpan SE_W202, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 5, -18, -40, 35
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -40, 35
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39
delay 4
playsewithpan SE_W202, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 28, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -10, 20, 40, 39
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 28, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 40, 39
delay 4
playsewithpan SE_W202, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 16, 33
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -32, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -32, 26
delay 4
playsewithpan SE_W202, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, -15, -16, 36
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
delay 4
playsewithpan SE_W202, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 16, 33
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, -15, -16, 36
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
delay 4
playsewithpan SE_W202, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 16, 33
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -40, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -40, 26
delay 4
playsewithpan SE_W202, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 36, 33
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 36, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39
delay 4
playsewithpan SE_W202, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35
delay 4
return
@@ -6749,11 +6749,11 @@ Move_COTTON_SPORE:
end
CottonSpore1:
- createsprite gUnknown_085922EC, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0
+ createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0
delay 12
- createsprite gUnknown_085922EC, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0
+ createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0
delay 12
- createsprite gUnknown_085922EC, ANIM_ATTACKER, 2, 0, -15, 0, 80, 0
+ createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -15, 0, 80, 0
delay 12
return
@@ -6761,7 +6761,7 @@ Move_SPORE:
loadspritegfx ANIM_TAG_SPORE
monbg ANIM_DEF_PARTNER
setalpha 12, 8
- createvisualtask sub_80FEE1C, 2
+ createvisualtask AnimTask_SporeDoubleBattle, 2
loopsewithpan SE_W077, SOUND_PAN_TARGET, 16, 11
call Spore1
call Spore1
@@ -6773,11 +6773,11 @@ Move_SPORE:
end
Spore1:
- createsprite gUnknown_085922EC, ANIM_TARGET, 2, 0, -20, 85, 80, 1
+ createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -20, 85, 80, 1
delay 12
- createsprite gUnknown_085922EC, ANIM_TARGET, 2, 0, -10, 170, 80, 1
+ createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -10, 170, 80, 1
delay 12
- createsprite gUnknown_085922EC, ANIM_TARGET, 2, 0, -15, 0, 80, 1
+ createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -15, 0, 80, 1
delay 12
return
@@ -6788,23 +6788,23 @@ Move_PETAL_DANCE:
setalpha 12, 8
playsewithpan SE_W080, SOUND_PAN_ATTACKER
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 6, 3
- createsprite gUnknown_0859231C, ANIM_ATTACKER, 2, 0, -24, 8, 140
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, 16, -24, 8, 100
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, -16, -24, 8, 100
+ createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 16, -24, 8, 100
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -16, -24, 8, 100
delay 15
- createsprite gUnknown_0859231C, ANIM_ATTACKER, 2, 0, -24, 8, 140
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, 32, -24, 8, 100
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, -32, -24, 8, 100
+ createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 32, -24, 8, 100
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -32, -24, 8, 100
delay 15
- createsprite gUnknown_0859231C, ANIM_ATTACKER, 2, 0, -24, 8, 140
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, 24, -24, 8, 100
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, -24, -24, 8, 100
+ createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 24, -24, 8, 100
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -24, -24, 8, 100
delay 30
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, 16, -24, 0, 100
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, -16, -24, 0, 100
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 16, -24, 0, 100
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -16, -24, 0, 100
delay 30
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, 20, -16, 14, 80
- createsprite gUnknown_08592334, ANIM_ATTACKER, 2, -20, -14, 16, 80
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 20, -16, 14, 80
+ createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -20, -14, 16, 80
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 5
delay 3
@@ -6827,29 +6827,29 @@ Move_RAZOR_LEAF:
setalpha 12, 8
delay 1
loopsewithpan SE_W077, SOUND_PAN_ATTACKER, 10, 5
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -3, -2, 10
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -1, -1, 15
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -1, 15
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -4, -4, 7
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -4, -4, 7
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, 3, -3, 11
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 3, -3, 11
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -1, -6, 8
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -6, 8
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, 2, -1, 12
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 12
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -3, -4, 13
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -4, 13
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, 4, -5, 7
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 4, -5, 7
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, 2, -6, 11
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -6, 11
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -3, -5, 8
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8
delay 60
playsewithpan SE_W013B, SOUND_PAN_ATTACKER
- createsprite gUnknown_085923D8, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1
- createsprite gUnknown_085923D8, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1
+ createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1
+ createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1
delay 20
playsewithpan SE_W013, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1
@@ -7025,44 +7025,44 @@ Move_DREAM_EATER:
end
DreamEaterEffect:
playsewithpan SE_W207, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 5, -18, -40, 35
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -40, 35
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39
delay 4
playsewithpan SE_W207, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 28, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -10, 20, 40, 39
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 28, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 40, 39
delay 4
playsewithpan SE_W207, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 16, 33
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -32, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -32, 26
delay 4
playsewithpan SE_W207, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, -15, -16, 36
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
delay 4
playsewithpan SE_W207, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 16, 33
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, -15, -16, 36
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
delay 4
playsewithpan SE_W207, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 16, 33
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -40, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -40, 26
delay 4
playsewithpan SE_W207, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -5, 15, 36, 33
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 10, -5, -8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, -10, 20, 20, 39
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 36, 33
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39
delay 4
playsewithpan SE_W207, SOUND_PAN_TARGET
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 0, 5, 8, 26
- createsprite gUnknown_08592270, ANIM_ATTACKER, 3, 5, -18, -20, 35
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
+ createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35
delay 4
return
@@ -7509,9 +7509,9 @@ RazorWindContinue:
RazorWindSetUp:
loadspritegfx ANIM_TAG_GUST
playsewithpan SE_W016, SOUND_PAN_ATTACKER
- createsprite gUnknown_08593550, ANIM_ATTACKER, 2, 32, 0, 16, 16, 0, 7, 40
- createsprite gUnknown_08593550, ANIM_ATTACKER, 2, 32, 0, 16, 16, 85, 7, 40
- createsprite gUnknown_08593550, ANIM_ATTACKER, 2, 32, 0, 16, 16, 170, 7, 40
+ createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 0, 7, 40
+ createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 85, 7, 40
+ createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 170, 7, 40
waitforvisualfinish
playsewithpan SE_W016B, SOUND_PAN_ATTACKER
goto RazorWindContinue
@@ -7546,7 +7546,7 @@ Move_DISABLE:
playsewithpan SE_W197, SOUND_PAN_ATTACKER
createsprite gUnknown_0853EE84, ANIM_ATTACKER, 13, 24, -16
waitforvisualfinish
- createvisualtask sub_81045B0, 5
+ createvisualtask AnimTask_GrowAndGreyscale, 5
loopsewithpan SE_W020, SOUND_PAN_TARGET, 15, 4
waitforvisualfinish
delay 1
@@ -7573,19 +7573,19 @@ Move_RECOVER:
end
Recover1:
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 40, -10, 13
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, -10, 13
delay 3
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, -35, -10, 13
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -35, -10, 13
delay 3
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 15, -40, 13
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 15, -40, 13
delay 3
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, -10, -32, 13
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -10, -32, 13
delay 3
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 25, -20, 13
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 25, -20, 13
delay 3
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, -40, -20, 13
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -20, 13
delay 3
- createsprite gUnknown_085921E0, ANIM_ATTACKER, 2, 5, -40, 13
+ createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 5, -40, 13
delay 3
return
@@ -7597,7 +7597,7 @@ Move_MIMIC:
panse_1B SE_W107, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
createvisualtask sub_80FF458, 5, 128, 24
delay 15
- createsprite gUnknown_085924DC, ANIM_TARGET, 2, -12, 24
+ createsprite gMimicOrbSpriteTemplate, ANIM_TARGET, 2, -12, 24
delay 10
setarg 7, -1
waitforvisualfinish
@@ -7611,12 +7611,12 @@ Move_MIMIC:
Move_CONSTRICT:
loadspritegfx ANIM_TAG_TENDRILS
loopsewithpan SE_W010, SOUND_PAN_TARGET, 6, 4
- createsprite gUnknown_08592494, ANIM_TARGET, 4, 0, 16, 0, 2
+ createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 2
delay 7
- createsprite gUnknown_08592494, ANIM_TARGET, 3, 0, 0, 0, 2
- createsprite gUnknown_08592494, ANIM_TARGET, 2, 0, 8, 1, 2
+ createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 2
+ createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 1, 2
delay 7
- createsprite gUnknown_08592494, ANIM_TARGET, 3, 0, -8, 1, 2
+ createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, -8, 1, 2
delay 8
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1
delay 20
@@ -7824,28 +7824,28 @@ Move_FURY_SWIPES:
Move_INGRAIN:
loadspritegfx ANIM_TAG_ROOTS
loadspritegfx ANIM_TAG_ORBS
- createsprite gUnknown_0859254C, ANIM_ATTACKER, 2, 16, 26, -1, 2, 150
+ createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 16, 26, -1, 2, 150
playsewithpan SE_W010, SOUND_PAN_ATTACKER
delay 10
- createsprite gUnknown_0859254C, ANIM_ATTACKER, 2, -32, 20, 1, 1, 140
+ createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -32, 20, 1, 1, 140
playsewithpan SE_W010, SOUND_PAN_ATTACKER
delay 10
- createsprite gUnknown_0859254C, ANIM_ATTACKER, 2, 32, 22, 1, 0, 130
+ createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 32, 22, 1, 0, 130
playsewithpan SE_W010, SOUND_PAN_ATTACKER
delay 10
- createsprite gUnknown_0859254C, ANIM_ATTACKER, 2, -16, 25, -1, 3, 120
+ createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -16, 25, -1, 3, 120
playsewithpan SE_W010, SOUND_PAN_ATTACKER
delay 40
- createsprite gUnknown_0859258C, ANIM_ATTACKER, 3, 32, 26, -1, 3, 30
+ createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 32, 26, -1, 3, 30
delay 5
playsewithpan SE_W145C, SOUND_PAN_ATTACKER
delay 5
- createsprite gUnknown_0859258C, ANIM_ATTACKER, 3, -48, 20, 1, 2, 30
+ createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, -48, 20, 1, 2, 30
playsewithpan SE_W145C, SOUND_PAN_ATTACKER
delay 5
playsewithpan SE_W145C, SOUND_PAN_ATTACKER
delay 5
- createsprite gUnknown_0859258C, ANIM_ATTACKER, 3, 48, 26, -2, 3, 18
+ createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 48, 26, -2, 3, 18
playsewithpan SE_W145C, SOUND_PAN_ATTACKER
delay 10
waitforvisualfinish
@@ -7854,7 +7854,7 @@ Move_INGRAIN:
Move_PRESENT:
loadspritegfx ANIM_TAG_ITEM_BAG
createvisualtask AnimTask_IsHealingMove, 2
- createsprite gUnknown_08592610, ANIM_TARGET, 2, 0, -5, 10, 2, -1
+ createsprite gPresentSpriteTemplate, ANIM_TARGET, 2, 0, -5, 10, 2, -1
playsewithpan SE_W039, SOUND_PAN_ATTACKER
delay 14
playsewithpan SE_W145B, SOUND_PAN_ATTACKER
@@ -7889,23 +7889,23 @@ PresentHeal:
loadspritegfx ANIM_TAG_GREEN_SPARKLE
loadspritegfx ANIM_TAG_BLUE_STAR
playsewithpan SE_W234, SOUND_PAN_TARGET
- createsprite gUnknown_08592658, ANIM_TARGET, 4, -16, 32, -3, 1
+ createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -16, 32, -3, 1
delay 3
- createsprite gUnknown_08592658, ANIM_TARGET, 4, 16, 32, -3, -1
+ createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 16, 32, -3, -1
delay 3
- createsprite gUnknown_08592658, ANIM_TARGET, 4, 32, 32, -3, 1
+ createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 32, 32, -3, 1
delay 3
- createsprite gUnknown_08592658, ANIM_TARGET, 4, -32, 32, -3, 1
+ createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -32, 32, -3, 1
delay 3
- createsprite gUnknown_08592658, ANIM_TARGET, 4, 0, 32, -3, 1
+ createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 0, 32, -3, 1
delay 3
- createsprite gUnknown_08592658, ANIM_TARGET, 4, -8, 32, -3, 1
+ createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -8, 32, -3, 1
delay 3
- createsprite gUnknown_08592658, ANIM_TARGET, 4, -8, 32, -3, 1
+ createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -8, 32, -3, 1
delay 3
- createsprite gUnknown_08592658, ANIM_TARGET, 4, 24, 32, -3, 1
+ createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 24, 32, -3, 1
delay 3
- createsprite gUnknown_08592658, ANIM_TARGET, 4, -24, 32, -3, 1
+ createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -24, 32, -3, 1
waitforvisualfinish
waitsound
call HealingEffect2
@@ -8115,8 +8115,8 @@ Move_ENCORE:
Move_TRICK:
loadspritegfx ANIM_TAG_ITEM_BAG
loadspritegfx ANIM_TAG_SPEED_DUST
- createsprite gUnknown_085926E8, ANIM_ATTACKER, 2, -40, 80
- createsprite gUnknown_085926E8, ANIM_ATTACKER, 2, -40, 208
+ createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -40, 80
+ createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -40, 208
delay 16
playsewithpan SE_W166, 0
createvisualtask sub_8106020, 3
@@ -8167,21 +8167,21 @@ Move_STOCKPILE:
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 12, 0, RGB_WHITE
end
Stockpile1:
- createsprite gUnknown_08592244, ANIM_ATTACKER, 2, 55, 55, 13
+ createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 55, 13
delay 1
- createsprite gUnknown_08592244, ANIM_ATTACKER, 2, -55, -55, 13
+ createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, -55, 13
delay 1
- createsprite gUnknown_08592244, ANIM_ATTACKER, 2, 0, 55, 13
+ createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 55, 13
delay 1
- createsprite gUnknown_08592244, ANIM_ATTACKER, 2, 0, -55, 13
+ createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -55, 13
delay 1
- createsprite gUnknown_08592244, ANIM_ATTACKER, 2, 55, -34, 13
+ createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, -34, 13
delay 1
- createsprite gUnknown_08592244, ANIM_ATTACKER, 2, 55, 34, 13
+ createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 34, 13
delay 1
- createsprite gUnknown_08592244, ANIM_ATTACKER, 2, -55, -34, 13
+ createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, -34, 13
delay 1
- createsprite gUnknown_08592244, ANIM_ATTACKER, 2, -55, 34, 13
+ createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, 34, 13
delay 1
return
@@ -8392,8 +8392,8 @@ Move_HYPER_BEAM:
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 16, 0, RGB_BLACK
end
HyperBeam1:
- createsprite gUnknown_08592288, ANIM_TARGET, 2
- createsprite gUnknown_08592288, ANIM_TARGET, 2
+ createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2
+ createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2
delay 1
return
@@ -8790,31 +8790,31 @@ Move_FRENZY_PLANT:
setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, RGB_BLACK
waitforvisualfinish
- createsprite gUnknown_08592564, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100
+ createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100
playsewithpan SE_W010, SOUND_PAN_ATTACKER
delay 5
- createsprite gUnknown_08592564, ANIM_ATTACKER, 2, 20, -8, -2, 0, 1, 95
+ createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -2, 0, 1, 95
playsewithpan SE_W010, -43
delay 5
- createsprite gUnknown_08592564, ANIM_ATTACKER, 2, 30, 8, -4, 0, 0, 90
+ createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 30, 8, -4, 0, 0, 90
playsewithpan SE_W010, -22
delay 5
- createsprite gUnknown_08592564, ANIM_ATTACKER, 2, 40, -8, 4, 0, 1, 85
+ createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 40, -8, 4, 0, 1, 85
playsewithpan SE_W010, 0
delay 5
- createsprite gUnknown_08592564, ANIM_ATTACKER, 2, 50, 8, 0, 0, 0, 85
+ createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 50, 8, 0, 0, 0, 85
playsewithpan SE_W010, +21
delay 5
- createsprite gUnknown_08592564, ANIM_ATTACKER, 2, 60, -8, -2, 0, 1, 85
+ createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 60, -8, -2, 0, 1, 85
playsewithpan SE_W010, +42
delay 5
- createsprite gUnknown_08592564, ANIM_ATTACKER, 2, 75, 8, 0, 0, 0, 85
+ createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 75, 8, 0, 0, 0, 85
playsewithpan SE_W010, SOUND_PAN_TARGET
delay 5
- createsprite gUnknown_08592564, ANIM_ATTACKER, 2, 85, 16, 6, 0, 3, 80
+ createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, 16, 6, 0, 3, 80
playsewithpan SE_W010, SOUND_PAN_TARGET
delay 5
- createsprite gUnknown_08592564, ANIM_ATTACKER, 2, 85, -16, -6, 0, 2, 75
+ createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, -16, -6, 0, 2, 75
playsewithpan SE_W010, SOUND_PAN_TARGET
delay 5
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -10, 1, 3
@@ -9649,26 +9649,26 @@ Move_TWISTER:
monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET
playsewithpan SE_W239, SOUND_PAN_TARGET
- createsprite gUnknown_085923A8, ANIM_TARGET, 2, 120, 70, 5, 70, 30
+ createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30
delay 1
- createsprite gUnknown_085923A8, ANIM_TARGET, 2, 115, 55, 6, 60, 25
+ createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 6, 60, 25
delay 1
- createsprite gUnknown_085923A8, ANIM_TARGET, 2, 115, 60, 7, 60, 30
- createsprite gUnknown_085923A8, ANIM_TARGET, 2, 115, 55, 10, 60, 30
+ createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 60, 7, 60, 30
+ createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 10, 60, 30
delay 3
createsprite gUnknown_08596CC8, ANIM_TARGET, 2, 100, 50, 4, 50, 26
delay 1
- createsprite gUnknown_085923A8, ANIM_TARGET, 2, 105, 25, 8, 60, 20
+ createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20
delay 1
- createsprite gUnknown_085923A8, ANIM_TARGET, 2, 115, 40, 10, 48, 30
+ createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 40, 10, 48, 30
delay 3
createsprite gUnknown_08596CC8, ANIM_TARGET, 2, 120, 30, 6, 45, 25
- createsprite gUnknown_085923A8, ANIM_TARGET, 2, 115, 35, 10, 60, 30
+ createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 35, 10, 60, 30
delay 3
createsprite gUnknown_08596CC8, ANIM_TARGET, 2, 105, 20, 8, 40, 0
delay 3
- createsprite gUnknown_085923A8, ANIM_TARGET, 2, 20, 255, 15, 32, 0
- createsprite gUnknown_085923A8, ANIM_TARGET, 2, 110, 10, 8, 32, 20
+ createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0
+ createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20
waitforvisualfinish
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, 1, 3
playsewithpan SE_W004, SOUND_PAN_TARGET
@@ -9697,29 +9697,29 @@ Move_MAGICAL_LEAF:
delay 1
loopsewithpan SE_W077, SOUND_PAN_ATTACKER, 10, 5
createvisualtask sub_81007C4, 5
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -3, -2, 10
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -1, -1, 15
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -1, 15
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -4, -4, 7
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -4, -4, 7
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, 3, -3, 11
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 3, -3, 11
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -1, -6, 8
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -6, 8
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, 2, -1, 12
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 12
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -3, -4, 13
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -4, 13
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, 4, -5, 7
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 4, -5, 7
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, 2, -6, 11
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -6, 11
delay 2
- createsprite gUnknown_08592390, ANIM_ATTACKER, 2, -3, -5, 8
+ createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8
delay 60
playsewithpan SE_W013B, SOUND_PAN_ATTACKER
- createsprite gUnknown_085923D8, ANIM_TARGET, 3, 20, -10, 20, 0, 32, 20, 0
- createsprite gUnknown_085923D8, ANIM_TARGET, 3, 20, -10, 20, 0, 32, -20, 0
+ createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 32, 20, 0
+ createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 32, -20, 0
delay 30
playsewithpan SE_W013, SOUND_PAN_TARGET
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, -4, 1, 2
@@ -10344,7 +10344,7 @@ General_PokeblockThrow:
General_ItemKnockoff:
loadspritegfx ANIM_TAG_ITEM_BAG
- createsprite gBattleAnimSpriteTemplate_8592628, ANIM_TARGET, 2
+ createsprite gKnockOffItemSpriteTemplate, ANIM_TARGET, 2
end
General_TurnTrap:
@@ -10357,9 +10357,9 @@ General_TurnTrap:
Status_BindWrap:
loadspritegfx ANIM_TAG_TENDRILS
loopsewithpan SE_W010, SOUND_PAN_TARGET, 6, 2
- createsprite gUnknown_08592494, ANIM_TARGET, 4, 0, 16, 0, 1
+ createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 1
delay 7
- createsprite gUnknown_08592494, ANIM_TARGET, 2, 0, 8, 1, 1
+ createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 1, 1
delay 3
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1
delay 20
@@ -10537,7 +10537,7 @@ General_ItemSteal:
createvisualtask sub_8117F30, 2
createvisualtask sub_8172ED0, 2
delay 1
- createsprite gUnknown_08592670, ANIM_ATTACKER, 2, 0, -5, 10, 2, -1
+ createsprite gItemStealSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2, -1
end
General_SnatchMove:
diff --git a/data/battle_frontier/battle_frontier_held_items.inc b/data/battle_frontier/battle_frontier_held_items.inc
deleted file mode 100644
index a8a7a797a..000000000
--- a/data/battle_frontier/battle_frontier_held_items.inc
+++ /dev/null
@@ -1,65 +0,0 @@
- .align 2
-gBattleFrontierHeldItems:: @ 85CECB0
- .2byte ITEM_NONE
- .2byte ITEM_KINGS_ROCK
- .2byte ITEM_SITRUS_BERRY
- .2byte ITEM_ORAN_BERRY
- .2byte ITEM_CHESTO_BERRY
- .2byte ITEM_HARD_STONE
- .2byte ITEM_FOCUS_BAND
- .2byte ITEM_PERSIM_BERRY
- .2byte ITEM_MIRACLE_SEED
- .2byte ITEM_BERRY_JUICE
- .2byte ITEM_MACHO_BRACE
- .2byte ITEM_SILVER_POWDER
- .2byte ITEM_CHERI_BERRY
- .2byte ITEM_BLACK_GLASSES
- .2byte ITEM_BLACK_BELT
- .2byte ITEM_SOUL_DEW
- .2byte ITEM_CHOICE_BAND
- .2byte ITEM_MAGNET
- .2byte ITEM_SILK_SCARF
- .2byte ITEM_WHITE_HERB
- .2byte ITEM_DEEP_SEA_SCALE
- .2byte ITEM_DEEP_SEA_TOOTH
- .2byte ITEM_MYSTIC_WATER
- .2byte ITEM_SHARP_BEAK
- .2byte ITEM_QUICK_CLAW
- .2byte ITEM_LEFTOVERS
- .2byte ITEM_RAWST_BERRY
- .2byte ITEM_LIGHT_BALL
- .2byte ITEM_POISON_BARB
- .2byte ITEM_NEVER_MELT_ICE
- .2byte ITEM_ASPEAR_BERRY
- .2byte ITEM_SPELL_TAG
- .2byte ITEM_BRIGHT_POWDER
- .2byte ITEM_LEPPA_BERRY
- .2byte ITEM_SCOPE_LENS
- .2byte ITEM_TWISTED_SPOON
- .2byte ITEM_METAL_COAT
- .2byte ITEM_MENTAL_HERB
- .2byte ITEM_CHARCOAL
- .2byte ITEM_PECHA_BERRY
- .2byte ITEM_SOFT_SAND
- .2byte ITEM_LUM_BERRY
- .2byte ITEM_DRAGON_SCALE
- .2byte ITEM_DRAGON_FANG
- .2byte ITEM_IAPAPA_BERRY
- .2byte ITEM_WIKI_BERRY
- .2byte ITEM_SEA_INCENSE
- .2byte ITEM_SHELL_BELL
- .2byte ITEM_SALAC_BERRY
- .2byte ITEM_LANSAT_BERRY
- .2byte ITEM_APICOT_BERRY
- .2byte ITEM_STARF_BERRY
- .2byte ITEM_LIECHI_BERRY
- .2byte ITEM_STICK
- .2byte ITEM_LAX_INCENSE
- .2byte ITEM_AGUAV_BERRY
- .2byte ITEM_FIGY_BERRY
- .2byte ITEM_THICK_CLUB
- .2byte ITEM_MAGO_BERRY
- .2byte ITEM_METAL_POWDER
- .2byte ITEM_PETAYA_BERRY
- .2byte ITEM_LUCKY_PUNCH
- .2byte ITEM_GANLON_BERRY
diff --git a/data/battle_frontier/battle_frontier_mons.inc b/data/battle_frontier/battle_frontier_mons.inc
deleted file mode 100644
index 6b77c8378..000000000
--- a/data/battle_frontier/battle_frontier_mons.inc
+++ /dev/null
@@ -1,6175 +0,0 @@
- .align 2
-gBattleFrontierMons:: @ 85D97BC
-@ 0
- .2byte SPECIES_SUNKERN
- .2byte MOVE_MEGA_DRAIN, MOVE_HELPING_HAND, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 1
- .2byte SPECIES_AZURILL
- .2byte MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RASH
-
-@ 2
- .2byte SPECIES_CATERPIE
- .2byte MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 3
- .2byte SPECIES_WEEDLE
- .2byte MOVE_POISON_STING, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 4
- .2byte SPECIES_WURMPLE
- .2byte MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_POISON_STING, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 5
- .2byte SPECIES_RALTS
- .2byte MOVE_CONFUSION, MOVE_IMPRISON, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 6
- .2byte SPECIES_MAGIKARP
- .2byte MOVE_FLAIL, MOVE_NONE, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 7
- .2byte SPECIES_FEEBAS
- .2byte MOVE_FLAIL, MOVE_MIRROR_COAT, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 8
- .2byte SPECIES_METAPOD
- .2byte MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BASHFUL
-
-@ 9
- .2byte SPECIES_KAKUNA
- .2byte MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BASHFUL
-
-@ 10
- .2byte SPECIES_PICHU
- .2byte MOVE_SWEET_KISS, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SHOCK_WAVE
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RASH
-
-@ 11
- .2byte SPECIES_SILCOON
- .2byte MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BASHFUL
-
-@ 12
- .2byte SPECIES_CASCOON
- .2byte MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BASHFUL
-
-@ 13
- .2byte SPECIES_IGGLYBUFF
- .2byte MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_SEISMIC_TOSS
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 14
- .2byte SPECIES_WOOPER
- .2byte MOVE_YAWN, MOVE_DIG, MOVE_WATER_PULSE, MOVE_RAIN_DANCE
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 15
- .2byte SPECIES_TYROGUE
- .2byte MOVE_MACH_PUNCH, MOVE_PROTECT, MOVE_DOUBLE_TEAM, MOVE_FACADE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 16
- .2byte SPECIES_SENTRET
- .2byte MOVE_QUICK_ATTACK, MOVE_FOLLOW_ME, MOVE_HELPING_HAND, MOVE_ASSIST
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 17
- .2byte SPECIES_CLEFFA
- .2byte MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_METRONOME
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_SERIOUS
-
-@ 18
- .2byte SPECIES_SEEDOT
- .2byte MOVE_BULLET_SEED, MOVE_BIDE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 19
- .2byte SPECIES_LOTAD
- .2byte MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_SUNNY_DAY, MOVE_MEGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 20
- .2byte SPECIES_POOCHYENA
- .2byte MOVE_CRUNCH, MOVE_SWAGGER, MOVE_ROAR, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 21
- .2byte SPECIES_SHEDINJA
- .2byte MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_SILVER_WIND, MOVE_GRUDGE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_NAIVE
-
-@ 22
- .2byte SPECIES_MAKUHITA
- .2byte MOVE_FAKE_OUT, MOVE_SEISMIC_TOSS, MOVE_DETECT, MOVE_WHIRLWIND
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 23
- .2byte SPECIES_WHISMUR
- .2byte MOVE_UPROAR, MOVE_SWAGGER, MOVE_BODY_SLAM, MOVE_SMELLING_SALT
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 24
- .2byte SPECIES_ZIGZAGOON
- .2byte MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_SWIFT, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SILK_SCARF
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_TIMID
-
-@ 25
- .2byte SPECIES_ZUBAT
- .2byte MOVE_POISON_FANG, MOVE_WHIRLWIND, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 26
- .2byte SPECIES_TOGEPI
- .2byte MOVE_RETURN, MOVE_YAWN, MOVE_WISH, MOVE_SWEET_KISS
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 27
- .2byte SPECIES_SPINARAK
- .2byte MOVE_SIGNAL_BEAM, MOVE_NIGHT_SHADE, MOVE_SPIDER_WEB, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 28
- .2byte SPECIES_MARILL
- .2byte MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_RETURN
- .byte BATTLE_FRONTIER_ITEM_MYSTIC_WATER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_GENTLE
-
-@ 29
- .2byte SPECIES_HOPPIP
- .2byte MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_LAX
-
-@ 30
- .2byte SPECIES_SLUGMA
- .2byte MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_YAWN, MOVE_BODY_SLAM
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 31
- .2byte SPECIES_SWINUB
- .2byte MOVE_ICY_WIND, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_ENDURE
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_GENTLE
-
-@ 32
- .2byte SPECIES_SMEARGLE
- .2byte MOVE_EXTREME_SPEED, MOVE_FAKE_OUT, MOVE_QUICK_ATTACK, MOVE_MACH_PUNCH
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 33
- .2byte SPECIES_PIDGEY
- .2byte MOVE_GUST, MOVE_SAND_ATTACK, MOVE_WHIRLWIND, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SHARP_BEAK
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 34
- .2byte SPECIES_RATTATA
- .2byte MOVE_HYPER_FANG, MOVE_PURSUIT, MOVE_QUICK_ATTACK, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 35
- .2byte SPECIES_WYNAUT
- .2byte MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_JOLLY
-
-@ 36
- .2byte SPECIES_SKITTY
- .2byte MOVE_SING, MOVE_ATTRACT, MOVE_CHARM, MOVE_DOUBLE_SLAP
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 37
- .2byte SPECIES_SPEAROW
- .2byte MOVE_FURY_ATTACK, MOVE_PURSUIT, MOVE_MIRROR_MOVE, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 38
- .2byte SPECIES_HOOTHOOT
- .2byte MOVE_CONFUSION, MOVE_HYPNOSIS, MOVE_SUPERSONIC, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 39
- .2byte SPECIES_DIGLETT
- .2byte MOVE_MAGNITUDE, MOVE_SLASH, MOVE_ROCK_TOMB, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAIVE
-
-@ 40
- .2byte SPECIES_LEDYBA
- .2byte MOVE_PSYBEAM, MOVE_AGILITY, MOVE_BATON_PASS, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BASHFUL
-
-@ 41
- .2byte SPECIES_NINCADA
- .2byte MOVE_MUD_SLAP, MOVE_DIG, MOVE_TOXIC, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_PECHA_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 42
- .2byte SPECIES_SURSKIT
- .2byte MOVE_BUBBLE_BEAM, MOVE_RAIN_DANCE, MOVE_SWEET_SCENT, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_MYSTIC_WATER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 43
- .2byte SPECIES_JIGGLYPUFF
- .2byte MOVE_SING, MOVE_WISH, MOVE_MIMIC, MOVE_DOUBLE_SLAP
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 44
- .2byte SPECIES_TAILLOW
- .2byte MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_ENDEAVOR, MOVE_FOCUS_ENERGY
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_GENTLE
-
-@ 45
- .2byte SPECIES_WINGULL
- .2byte MOVE_WATER_PULSE, MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_STEEL_WING
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 46
- .2byte SPECIES_NIDORAN_M
- .2byte MOVE_DOUBLE_KICK, MOVE_POISON_STING, MOVE_DISABLE, MOVE_HELPING_HAND
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 47
- .2byte SPECIES_NIDORAN_F
- .2byte MOVE_CRUNCH, MOVE_DOUBLE_KICK, MOVE_FLATTER, MOVE_HELPING_HAND
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 48
- .2byte SPECIES_KIRLIA
- .2byte MOVE_CONFUSION, MOVE_WILL_O_WISP, MOVE_FUTURE_SIGHT, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 49
- .2byte SPECIES_MAREEP
- .2byte MOVE_SHOCK_WAVE, MOVE_FLASH, MOVE_REFLECT, MOVE_COTTON_SPORE
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 50
- .2byte SPECIES_MEDITITE
- .2byte MOVE_HI_JUMP_KICK, MOVE_MEDITATE, MOVE_SWAGGER, MOVE_PSYCH_UP
- .byte BATTLE_FRONTIER_ITEM_MENTAL_HERB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 51
- .2byte SPECIES_SLAKOTH
- .2byte MOVE_YAWN, MOVE_SCRATCH, MOVE_ENCORE, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 52
- .2byte SPECIES_PARAS
- .2byte MOVE_SPORE, MOVE_LEECH_LIFE, MOVE_SLASH, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 53
- .2byte SPECIES_EKANS
- .2byte MOVE_ACID, MOVE_DIG, MOVE_SCREECH, MOVE_TORMENT
- .byte BATTLE_FRONTIER_ITEM_POISON_BARB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 54
- .2byte SPECIES_DITTO
- .2byte MOVE_TRANSFORM, MOVE_NONE, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_METAL_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 55
- .2byte SPECIES_BARBOACH
- .2byte MOVE_MAGNITUDE, MOVE_WATER_PULSE, MOVE_SPARK, MOVE_FUTURE_SIGHT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_BASHFUL
-
-@ 56
- .2byte SPECIES_MEOWTH
- .2byte MOVE_SLASH, MOVE_BITE, MOVE_SCREECH, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 57
- .2byte SPECIES_PINECO
- .2byte MOVE_SELF_DESTRUCT, MOVE_TAKE_DOWN, MOVE_REFLECT, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 58
- .2byte SPECIES_TRAPINCH
- .2byte MOVE_TOXIC, MOVE_DIG, MOVE_SANDSTORM, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_SERIOUS
-
-@ 59
- .2byte SPECIES_SPHEAL
- .2byte MOVE_ICE_BALL, MOVE_WATER_PULSE, MOVE_HAIL, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 60
- .2byte SPECIES_HORSEA
- .2byte MOVE_WATER_GUN, MOVE_AGILITY, MOVE_ICY_WIND, MOVE_TWISTER
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 61
- .2byte SPECIES_SHROOMISH
- .2byte MOVE_SPORE, MOVE_BULLET_SEED, MOVE_LEECH_SEED, MOVE_HEADBUTT
- .byte BATTLE_FRONTIER_ITEM_MIRACLE_SEED
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 62
- .2byte SPECIES_SHUPPET
- .2byte MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_GRUDGE, MOVE_KNOCK_OFF
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RASH
-
-@ 63
- .2byte SPECIES_DUSKULL
- .2byte MOVE_SKILL_SWAP, MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 64
- .2byte SPECIES_ELECTRIKE
- .2byte MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_ROAR, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 65
- .2byte SPECIES_VULPIX
- .2byte MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 66
- .2byte SPECIES_PIKACHU
- .2byte MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_DOUBLE_TEAM, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_LIGHT_BALL
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 67
- .2byte SPECIES_SANDSHREW
- .2byte MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SOFT_SAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 68
- .2byte SPECIES_POLIWAG
- .2byte MOVE_HYPNOSIS, MOVE_ICY_WIND, MOVE_WATER_GUN, MOVE_RAIN_DANCE
- .byte BATTLE_FRONTIER_ITEM_MYSTIC_WATER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 69
- .2byte SPECIES_BELLSPROUT
- .2byte MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_STUN_SPORE, MOVE_WRAP
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_LAX
-
-@ 70
- .2byte SPECIES_GEODUDE
- .2byte MOVE_MAGNITUDE, MOVE_ROCK_BLAST, MOVE_STRENGTH, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 71
- .2byte SPECIES_DRATINI
- .2byte MOVE_OUTRAGE, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_WATER_PULSE
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 72
- .2byte SPECIES_SNUBBULL
- .2byte MOVE_BITE, MOVE_CHARM, MOVE_SWAGGER, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 73
- .2byte SPECIES_REMORAID
- .2byte MOVE_BUBBLE_BEAM, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 74
- .2byte SPECIES_LARVITAR
- .2byte MOVE_THRASH, MOVE_ROCK_SLIDE, MOVE_DIG, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 75
- .2byte SPECIES_BALTOY
- .2byte MOVE_PSYBEAM, MOVE_ANCIENT_POWER, MOVE_LIGHT_SCREEN, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAUGHTY
-
-@ 76
- .2byte SPECIES_SNORUNT
- .2byte MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_LEER, MOVE_BITE
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 77
- .2byte SPECIES_BAGON
- .2byte MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 78
- .2byte SPECIES_BELDUM
- .2byte MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 79
- .2byte SPECIES_GULPIN
- .2byte MOVE_TOXIC, MOVE_YAWN, MOVE_PAIN_SPLIT, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SERIOUS
-
-@ 80
- .2byte SPECIES_VENONAT
- .2byte MOVE_PSYBEAM, MOVE_SUPERSONIC, MOVE_STUN_SPORE, MOVE_SKILL_SWAP
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 81
- .2byte SPECIES_MANKEY
- .2byte MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SCREECH, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_BLACK_BELT
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 82
- .2byte SPECIES_MACHOP
- .2byte MOVE_SEISMIC_TOSS, MOVE_REVENGE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 83
- .2byte SPECIES_SHELLDER
- .2byte MOVE_ICICLE_SPEAR, MOVE_SUPERSONIC, MOVE_CLAMP, MOVE_WITHDRAW
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 84
- .2byte SPECIES_SMOOCHUM
- .2byte MOVE_SWEET_KISS, MOVE_SING, MOVE_MUD_SLAP, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 85
- .2byte SPECIES_NUMEL
- .2byte MOVE_EMBER, MOVE_MAGNITUDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 86
- .2byte SPECIES_CARVANHA
- .2byte MOVE_BITE, MOVE_SCREECH, MOVE_SCARY_FACE, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 87
- .2byte SPECIES_CORPHISH
- .2byte MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_MYSTIC_WATER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 88
- .2byte SPECIES_CHARMANDER
- .2byte MOVE_FIRE_SPIN, MOVE_METAL_CLAW, MOVE_SMOKESCREEN, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 89
- .2byte SPECIES_CYNDAQUIL
- .2byte MOVE_EMBER, MOVE_SWIFT, MOVE_QUICK_ATTACK, MOVE_SMOKESCREEN
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 90
- .2byte SPECIES_ABRA
- .2byte MOVE_MIMIC, MOVE_METRONOME, MOVE_FLASH, MOVE_SEISMIC_TOSS
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 91
- .2byte SPECIES_DODUO
- .2byte MOVE_FURY_ATTACK, MOVE_UPROAR, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 92
- .2byte SPECIES_GASTLY
- .2byte MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_NIGHT_SHADE, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 93
- .2byte SPECIES_SWABLU
- .2byte MOVE_TAKE_DOWN, MOVE_DREAM_EATER, MOVE_SING, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_MENTAL_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 94
- .2byte SPECIES_TREECKO
- .2byte MOVE_BULLET_SEED, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_LONELY
-
-@ 95
- .2byte SPECIES_TORCHIC
- .2byte MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 96
- .2byte SPECIES_MUDKIP
- .2byte MOVE_WHIRLPOOL, MOVE_ENDEAVOR, MOVE_MUD_SPORT, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 97
- .2byte SPECIES_SQUIRTLE
- .2byte MOVE_WATER_PULSE, MOVE_BITE, MOVE_WITHDRAW, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 98
- .2byte SPECIES_TOTODILE
- .2byte MOVE_SLASH, MOVE_WATER_PULSE, MOVE_SCREECH, MOVE_ICY_WIND
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 99
- .2byte SPECIES_SLOWPOKE
- .2byte MOVE_CONFUSION, MOVE_DISABLE, MOVE_WATER_PULSE, MOVE_YAWN
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 100
- .2byte SPECIES_BULBASAUR
- .2byte MOVE_RAZOR_LEAF, MOVE_SWEET_SCENT, MOVE_SLEEP_POWDER, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 101
- .2byte SPECIES_CHIKORITA
- .2byte MOVE_SECRET_POWER, MOVE_BULLET_SEED, MOVE_MUD_SLAP, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 102
- .2byte SPECIES_ODDISH
- .2byte MOVE_ACID, MOVE_STUN_SPORE, MOVE_SWEET_SCENT, MOVE_MOONLIGHT
- .byte BATTLE_FRONTIER_ITEM_PECHA_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 103
- .2byte SPECIES_PSYDUCK
- .2byte MOVE_CONFUSION, MOVE_FURY_SWIPES, MOVE_AERIAL_ACE, MOVE_DISABLE
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HASTY
-
-@ 104
- .2byte SPECIES_CUBONE
- .2byte MOVE_BONE_CLUB, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_SOFT_SAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 105
- .2byte SPECIES_GOLDEEN
- .2byte MOVE_WATERFALL, MOVE_FURY_ATTACK, MOVE_AGILITY, MOVE_PSYBEAM
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 106
- .2byte SPECIES_NATU
- .2byte MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_FLASH
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 107
- .2byte SPECIES_CLEFAIRY
- .2byte MOVE_FOLLOW_ME, MOVE_RETURN, MOVE_ENCORE, MOVE_SING
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 108
- .2byte SPECIES_MAGNEMITE
- .2byte MOVE_SHOCK_WAVE, MOVE_SUPERSONIC, MOVE_METAL_SOUND, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_GENTLE
-
-@ 109
- .2byte SPECIES_SEEL
- .2byte MOVE_AURORA_BEAM, MOVE_DIVE, MOVE_BODY_SLAM, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_ASPEAR_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 110
- .2byte SPECIES_GRIMER
- .2byte MOVE_SLUDGE, MOVE_ROCK_TOMB, MOVE_ACID_ARMOR, MOVE_MINIMIZE
- .byte BATTLE_FRONTIER_ITEM_PECHA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 111
- .2byte SPECIES_KRABBY
- .2byte MOVE_CRABHAMMER, MOVE_MUD_SHOT, MOVE_FLAIL, MOVE_KNOCK_OFF
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 112
- .2byte SPECIES_EXEGGCUTE
- .2byte MOVE_CONFUSION, MOVE_ANCIENT_POWER, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 113
- .2byte SPECIES_EEVEE
- .2byte MOVE_CHARM, MOVE_ATTRACT, MOVE_FLAIL, MOVE_ENDURE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 114
- .2byte SPECIES_DROWZEE
- .2byte MOVE_CONFUSION, MOVE_HEADBUTT, MOVE_DISABLE, MOVE_BARRIER
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 115
- .2byte SPECIES_VOLTORB
- .2byte MOVE_SPARK, MOVE_SCREECH, MOVE_ROLLOUT, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 116
- .2byte SPECIES_CHINCHOU
- .2byte MOVE_SPARK, MOVE_DIVE, MOVE_CONFUSE_RAY, MOVE_TAKE_DOWN
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 117
- .2byte SPECIES_TEDDIURSA
- .2byte MOVE_SECRET_POWER, MOVE_FAKE_TEARS, MOVE_FAINT_ATTACK, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 118
- .2byte SPECIES_DELIBIRD
- .2byte MOVE_PRESENT, MOVE_ICE_BALL, MOVE_AERIAL_ACE, MOVE_HAIL
- .byte BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 119
- .2byte SPECIES_HOUNDOUR
- .2byte MOVE_CRUNCH, MOVE_EMBER, MOVE_ROAR, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_CHARCOAL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 120
- .2byte SPECIES_PHANPY
- .2byte MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_ROCK_TOMB, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 121
- .2byte SPECIES_SPOINK
- .2byte MOVE_PSYWAVE, MOVE_BOUNCE, MOVE_MAGIC_COAT, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 122
- .2byte SPECIES_ARON
- .2byte MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_METAL_SOUND, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 123
- .2byte SPECIES_LUVDISC
- .2byte MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_DIVE, MOVE_RAIN_DANCE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 124
- .2byte SPECIES_TENTACOOL
- .2byte MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER, MOVE_WRAP
- .byte BATTLE_FRONTIER_ITEM_PECHA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 125
- .2byte SPECIES_CACNEA
- .2byte MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_COTTON_SPORE, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 126
- .2byte SPECIES_UNOWN
- .2byte MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 127
- .2byte SPECIES_KOFFING
- .2byte MOVE_SLUDGE, MOVE_SMOKESCREEN, MOVE_TORMENT, MOVE_HAZE
- .byte BATTLE_FRONTIER_ITEM_POISON_BARB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 128
- .2byte SPECIES_STARYU
- .2byte MOVE_BUBBLE_BEAM, MOVE_MINIMIZE, MOVE_SWIFT, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 129
- .2byte SPECIES_SKIPLOOM
- .2byte MOVE_MEGA_DRAIN, MOVE_CONFUSION, MOVE_COTTON_SPORE, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 130
- .2byte SPECIES_NUZLEAF
- .2byte MOVE_EXTRASENSORY, MOVE_FAKE_OUT, MOVE_RAZOR_WIND, MOVE_FAINT_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 131
- .2byte SPECIES_LOMBRE
- .2byte MOVE_WATER_PULSE, MOVE_FAKE_OUT, MOVE_BRICK_BREAK, MOVE_ABSORB
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 132
- .2byte SPECIES_VIBRAVA
- .2byte MOVE_DRAGON_BREATH, MOVE_DIG, MOVE_SCREECH, MOVE_ROCK_TOMB
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 133
- .2byte SPECIES_RHYHORN
- .2byte MOVE_ROCK_BLAST, MOVE_DIG, MOVE_SCARY_FACE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 134
- .2byte SPECIES_CLAMPERL
- .2byte MOVE_DIVE, MOVE_TOXIC, MOVE_IRON_DEFENSE, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 135
- .2byte SPECIES_PIDGEOTTO
- .2byte MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_FEATHER_DANCE, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 136
- .2byte SPECIES_GROWLITHE
- .2byte MOVE_FLAME_WHEEL, MOVE_BITE, MOVE_ROAR, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 137
- .2byte SPECIES_FARFETCHD
- .2byte MOVE_SLASH, MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_STICK
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 138
- .2byte SPECIES_OMANYTE
- .2byte MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ANCIENT_POWER, MOVE_TICKLE
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 139
- .2byte SPECIES_KABUTO
- .2byte MOVE_MEGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_SAND_ATTACK, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 140
- .2byte SPECIES_LILEEP
- .2byte MOVE_ANCIENT_POWER, MOVE_ACID, MOVE_INGRAIN, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 141
- .2byte SPECIES_ANORITH
- .2byte MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_ANCIENT_POWER, MOVE_WATER_GUN
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 142
- .2byte SPECIES_AIPOM
- .2byte MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_SILK_SCARF
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 143
- .2byte SPECIES_ELEKID
- .2byte MOVE_THUNDER_PUNCH, MOVE_QUICK_ATTACK, MOVE_SWIFT, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAIVE
-
-@ 144
- .2byte SPECIES_LOUDRED
- .2byte MOVE_STOMP, MOVE_HOWL, MOVE_ASTONISH, MOVE_SUPERSONIC
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 145
- .2byte SPECIES_SPINDA
- .2byte MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FAINT_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 146
- .2byte SPECIES_NIDORINA
- .2byte MOVE_DOUBLE_KICK, MOVE_BITE, MOVE_AERIAL_ACE, MOVE_FLATTER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 147
- .2byte SPECIES_NIDORINO
- .2byte MOVE_DOUBLE_KICK, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_FLATTER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 148
- .2byte SPECIES_FLAAFFY
- .2byte MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_MAGNET
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MILD
-
-@ 149
- .2byte SPECIES_MAGBY
- .2byte MOVE_FIRE_PUNCH, MOVE_SMOKESCREEN, MOVE_CONFUSE_RAY, MOVE_SMOG
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 150
- .2byte SPECIES_NOSEPASS
- .2byte MOVE_ROCK_SLIDE, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_HARD_STONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 151
- .2byte SPECIES_CORSOLA
- .2byte MOVE_BUBBLE_BEAM, MOVE_MIRROR_COAT, MOVE_ATTRACT, MOVE_ANCIENT_POWER
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 152
- .2byte SPECIES_MAWILE
- .2byte MOVE_CRUNCH, MOVE_FAKE_TEARS, MOVE_IRON_DEFENSE, MOVE_BATON_PASS
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 153
- .2byte SPECIES_BUTTERFREE
- .2byte MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_WHIRLWIND
- .byte BATTLE_FRONTIER_ITEM_PECHA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 154
- .2byte SPECIES_BEEDRILL
- .2byte MOVE_TWINEEDLE, MOVE_PURSUIT, MOVE_ENDEAVOR, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAUGHTY
-
-@ 155
- .2byte SPECIES_POLIWHIRL
- .2byte MOVE_WATER_PULSE, MOVE_DOUBLE_SLAP, MOVE_ICY_WIND, MOVE_RAIN_DANCE
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 156
- .2byte SPECIES_ONIX
- .2byte MOVE_ROCK_SLIDE, MOVE_BIND, MOVE_DRAGON_BREATH, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 157
- .2byte SPECIES_BEAUTIFLY
- .2byte MOVE_SILVER_WIND, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_WHIRLWIND
- .byte BATTLE_FRONTIER_ITEM_MENTAL_HERB
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 158
- .2byte SPECIES_DUSTOX
- .2byte MOVE_SILVER_WIND, MOVE_TOXIC, MOVE_PSYBEAM, MOVE_WHIRLWIND
- .byte BATTLE_FRONTIER_ITEM_SILVER_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 159
- .2byte SPECIES_LEDIAN
- .2byte MOVE_COMET_PUNCH, MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_BASHFUL
-
-@ 160
- .2byte SPECIES_ARIADOS
- .2byte MOVE_SIGNAL_BEAM, MOVE_SPIDER_WEB, MOVE_NIGHT_SHADE, MOVE_TOXIC
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_SERIOUS
-
-@ 161
- .2byte SPECIES_YANMA
- .2byte MOVE_SIGNAL_BEAM, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DETECT
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_RELAXED
-
-@ 162
- .2byte SPECIES_DELCATTY
- .2byte MOVE_SECRET_POWER, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_HEAL_BELL
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 163
- .2byte SPECIES_SABLEYE
- .2byte MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_KNOCK_OFF, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_BLACK_GLASSES
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 164
- .2byte SPECIES_LICKITUNG
- .2byte MOVE_SLAM, MOVE_BRICK_BREAK, MOVE_LICK, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 165
- .2byte SPECIES_WEEPINBELL
- .2byte MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_WRAP, MOVE_SWEET_SCENT
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 166
- .2byte SPECIES_GRAVELER
- .2byte MOVE_MAGNITUDE, MOVE_ROCK_THROW, MOVE_DEFENSE_CURL, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 167
- .2byte SPECIES_GLOOM
- .2byte MOVE_PETAL_DANCE, MOVE_ACID, MOVE_STUN_SPORE, MOVE_MOONLIGHT
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 168
- .2byte SPECIES_PORYGON
- .2byte MOVE_PSYBEAM, MOVE_ICY_WIND, MOVE_RECYCLE, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 169
- .2byte SPECIES_KADABRA
- .2byte MOVE_CONFUSION, MOVE_ROLE_PLAY, MOVE_FUTURE_SIGHT, MOVE_DISABLE
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 170
- .2byte SPECIES_WAILMER
- .2byte MOVE_WHIRLPOOL, MOVE_ROAR, MOVE_DEFENSE_CURL, MOVE_ROLLOUT
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_DOCILE
-
-@ 171
- .2byte SPECIES_ROSELIA
- .2byte MOVE_MAGICAL_LEAF, MOVE_TOXIC, MOVE_GRASS_WHISTLE, MOVE_COTTON_SPORE
- .byte BATTLE_FRONTIER_ITEM_PECHA_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 172
- .2byte SPECIES_VOLBEAT
- .2byte MOVE_SILVER_WIND, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 173
- .2byte SPECIES_ILLUMISE
- .2byte MOVE_SILVER_WIND, MOVE_WISH, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 174
- .2byte SPECIES_IVYSAUR
- .2byte MOVE_PETAL_DANCE, MOVE_GROWTH, MOVE_SWEET_SCENT, MOVE_FURY_CUTTER
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_GENTLE
-
-@ 175
- .2byte SPECIES_CHARMELEON
- .2byte MOVE_SLASH, MOVE_FIRE_SPIN, MOVE_SWORDS_DANCE, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 176
- .2byte SPECIES_WARTORTLE
- .2byte MOVE_WATER_PULSE, MOVE_BITE, MOVE_MUD_SLAP, MOVE_YAWN
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 177
- .2byte SPECIES_PARASECT
- .2byte MOVE_SLASH, MOVE_PSYBEAM, MOVE_STUN_SPORE, MOVE_FLASH
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_RASH
-
-@ 178
- .2byte SPECIES_MACHOKE
- .2byte MOVE_LOW_KICK, MOVE_ROCK_TOMB, MOVE_FORESIGHT, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 179
- .2byte SPECIES_HAUNTER
- .2byte MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_SPITE, MOVE_GRUDGE
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RASH
-
-@ 180
- .2byte SPECIES_BAYLEEF
- .2byte MOVE_RAZOR_LEAF, MOVE_TOXIC, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 181
- .2byte SPECIES_QUILAVA
- .2byte MOVE_FLAME_WHEEL, MOVE_FURY_SWIPES, MOVE_SWIFT, MOVE_SMOKESCREEN
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 182
- .2byte SPECIES_CROCONAW
- .2byte MOVE_SLASH, MOVE_WATER_PULSE, MOVE_BITE, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 183
- .2byte SPECIES_TOGETIC
- .2byte MOVE_AERIAL_ACE, MOVE_MAGICAL_LEAF, MOVE_WISH, MOVE_FOLLOW_ME
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 184
- .2byte SPECIES_MURKROW
- .2byte MOVE_FAINT_ATTACK, MOVE_FLY, MOVE_TORMENT, MOVE_TAUNT
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 185
- .2byte SPECIES_WOBBUFFET
- .2byte MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM, MOVE_SAFEGUARD
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 186
- .2byte SPECIES_PLUSLE
- .2byte MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 187
- .2byte SPECIES_MINUN
- .2byte MOVE_SPARK, MOVE_CHARM, MOVE_ENCORE, MOVE_HELPING_HAND
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 188
- .2byte SPECIES_GROVYLE
- .2byte MOVE_FURY_CUTTER, MOVE_ENDEAVOR, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 189
- .2byte SPECIES_COMBUSKEN
- .2byte MOVE_EMBER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 190
- .2byte SPECIES_MARSHTOMP
- .2byte MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ROCK_TOMB, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 191
- .2byte SPECIES_PONYTA
- .2byte MOVE_FIRE_SPIN, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_TAIL_WHIP
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 192
- .2byte SPECIES_AZUMARILL
- .2byte MOVE_BUBBLE_BEAM, MOVE_FACADE, MOVE_DIG, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_DOCILE
-
-@ 193
- .2byte SPECIES_SUDOWOODO
- .2byte MOVE_ROCK_SLIDE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM, MOVE_BLOCK
- .byte BATTLE_FRONTIER_ITEM_HARD_STONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 194
- .2byte SPECIES_MAGCARGO
- .2byte MOVE_ROCK_SLIDE, MOVE_EMBER, MOVE_ACID_ARMOR, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_GENTLE
-
-@ 195
- .2byte SPECIES_PUPITAR
- .2byte MOVE_DIG, MOVE_BITE, MOVE_SCARY_FACE, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_SOFT_SAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 196
- .2byte SPECIES_SEALEO
- .2byte MOVE_ICE_BALL, MOVE_HAIL, MOVE_SNORE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 197
- .2byte SPECIES_RATICATE
- .2byte MOVE_ENDEAVOR, MOVE_PURSUIT, MOVE_SCARY_FACE, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SILK_SCARF
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAIVE
-
-@ 198
- .2byte SPECIES_MASQUERAIN
- .2byte MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ICY_WIND, MOVE_STUN_SPORE
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_RELAXED
-
-@ 199
- .2byte SPECIES_FURRET
- .2byte MOVE_SLAM, MOVE_PROTECT, MOVE_HELPING_HAND, MOVE_FOLLOW_ME
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_SERIOUS
-
-@ 200
- .2byte SPECIES_DUNSPARCE
- .2byte MOVE_HEADBUTT, MOVE_GLARE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 201
- .2byte SPECIES_DRAGONAIR
- .2byte MOVE_DRAGON_BREATH, MOVE_LEER, MOVE_WRAP, MOVE_SAFEGUARD
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 202
- .2byte SPECIES_MIGHTYENA
- .2byte MOVE_BITE, MOVE_POISON_FANG, MOVE_TAUNT, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_MENTAL_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_TIMID
-
-@ 203
- .2byte SPECIES_LINOONE
- .2byte MOVE_SECRET_POWER, MOVE_SAND_ATTACK, MOVE_COVET, MOVE_TICKLE
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 204
- .2byte SPECIES_CASTFORM
- .2byte MOVE_EMBER, MOVE_WATER_PULSE, MOVE_SHOCK_WAVE, MOVE_ICY_WIND
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HASTY
-
-@ 205
- .2byte SPECIES_SHELGON
- .2byte MOVE_HEADBUTT, MOVE_DRAGON_BREATH, MOVE_PROTECT, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 206
- .2byte SPECIES_METANG
- .2byte MOVE_METAL_CLAW, MOVE_CONFUSION, MOVE_PURSUIT, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 207
- .2byte SPECIES_WIGGLYTUFF
- .2byte MOVE_SING, MOVE_DISABLE, MOVE_WISH, MOVE_SECRET_POWER
- .byte BATTLE_FRONTIER_ITEM_SILK_SCARF
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_RELAXED
-
-@ 208
- .2byte SPECIES_SUNFLORA
- .2byte MOVE_PETAL_DANCE, MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 209
- .2byte SPECIES_CHIMECHO
- .2byte MOVE_PSYWAVE, MOVE_TAKE_DOWN, MOVE_HEAL_BELL, MOVE_SAFEGUARD
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 210
- .2byte SPECIES_GLIGAR
- .2byte MOVE_METAL_CLAW, MOVE_DIG, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HASTY
-
-@ 211
- .2byte SPECIES_QWILFISH
- .2byte MOVE_BUBBLE_BEAM, MOVE_PIN_MISSILE, MOVE_SPIKES, MOVE_MINIMIZE
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK
- .4byte NATURE_IMPISH
-
-@ 212
- .2byte SPECIES_SNEASEL
- .2byte MOVE_FAINT_ATTACK, MOVE_FAKE_OUT, MOVE_ICY_WIND, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 213
- .2byte SPECIES_PELIPPER
- .2byte MOVE_WATER_PULSE, MOVE_AERIAL_ACE, MOVE_STOCKPILE, MOVE_SWALLOW
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 214
- .2byte SPECIES_SWELLOW
- .2byte MOVE_FLY, MOVE_ENDEAVOR, MOVE_FACADE, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 215
- .2byte SPECIES_LAIRON
- .2byte MOVE_METAL_CLAW, MOVE_ROCK_TOMB, MOVE_IRON_DEFENSE, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_METAL_COAT
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 216
- .2byte SPECIES_TANGELA
- .2byte MOVE_MEGA_DRAIN, MOVE_SLAM, MOVE_TOXIC, MOVE_BIND
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 217
- .2byte SPECIES_ARBOK
- .2byte MOVE_POISON_FANG, MOVE_DIG, MOVE_BITE, MOVE_GLARE
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 218
- .2byte SPECIES_PERSIAN
- .2byte MOVE_FAKE_OUT, MOVE_SLASH, MOVE_TORMENT, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_SILK_SCARF
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 219
- .2byte SPECIES_SEADRA
- .2byte MOVE_AURORA_BEAM, MOVE_SMOKESCREEN, MOVE_WATER_GUN, MOVE_RAIN_DANCE
- .byte BATTLE_FRONTIER_ITEM_MYSTIC_WATER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 220
- .2byte SPECIES_KECLEON
- .2byte MOVE_SECRET_POWER, MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_SEISMIC_TOSS
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAIVE
-
-@ 221
- .2byte SPECIES_VIGOROTH
- .2byte MOVE_SLASH, MOVE_COUNTER, MOVE_ENCORE, MOVE_UPROAR
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 222
- .2byte SPECIES_LUNATONE
- .2byte MOVE_CONFUSION, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 223
- .2byte SPECIES_SOLROCK
- .2byte MOVE_CONFUSION, MOVE_FIRE_SPIN, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 224
- .2byte SPECIES_NOCTOWL
- .2byte MOVE_CONFUSION, MOVE_AERIAL_ACE, MOVE_FAINT_ATTACK, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 225
- .2byte SPECIES_SANDSLASH
- .2byte MOVE_CRUSH_CLAW, MOVE_ROCK_SLIDE, MOVE_SWIFT, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 226
- .2byte SPECIES_VENOMOTH
- .2byte MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_SLEEP_POWDER, MOVE_SKILL_SWAP
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 227
- .2byte SPECIES_CHANSEY
- .2byte MOVE_METRONOME, MOVE_REFRESH, MOVE_DEFENSE_CURL, MOVE_MINIMIZE
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_RELAXED
-
-@ 228
- .2byte SPECIES_SEAKING
- .2byte MOVE_WATER_PULSE, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 229
- .2byte SPECIES_JUMPLUFF
- .2byte MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 230
- .2byte SPECIES_PILOSWINE
- .2byte MOVE_DIG, MOVE_ANCIENT_POWER, MOVE_HAIL, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_SOFT_SAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 231
- .2byte SPECIES_GOLBAT
- .2byte MOVE_AIR_CUTTER, MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_STEEL_WING
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 232
- .2byte SPECIES_PRIMEAPE
- .2byte MOVE_KARATE_CHOP, MOVE_COUNTER, MOVE_SWAGGER, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 233
- .2byte SPECIES_HITMONLEE
- .2byte MOVE_ROLLING_KICK, MOVE_BRICK_BREAK, MOVE_FOCUS_ENERGY, MOVE_FACADE
- .byte BATTLE_FRONTIER_ITEM_BLACK_BELT
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 234
- .2byte SPECIES_HITMONCHAN
- .2byte MOVE_MACH_PUNCH, MOVE_SKY_UPPERCUT, MOVE_DETECT, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 235
- .2byte SPECIES_GIRAFARIG
- .2byte MOVE_PSYBEAM, MOVE_STOMP, MOVE_WISH, MOVE_SKILL_SWAP
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 236
- .2byte SPECIES_HITMONTOP
- .2byte MOVE_TRIPLE_KICK, MOVE_DIG, MOVE_MACH_PUNCH, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 237
- .2byte SPECIES_BANETTE
- .2byte MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SPITE, MOVE_KNOCK_OFF
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 238
- .2byte SPECIES_NINJASK
- .2byte MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_ENDURE, MOVE_DIG
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MILD
-
-@ 239
- .2byte SPECIES_SEVIPER
- .2byte MOVE_POISON_TAIL, MOVE_BITE, MOVE_GLARE, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 240
- .2byte SPECIES_ZANGOOSE
- .2byte MOVE_SLASH, MOVE_DOUBLE_KICK, MOVE_ROAR, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 241
- .2byte SPECIES_CAMERUPT
- .2byte MOVE_MAGNITUDE, MOVE_PROTECT, MOVE_SANDSTORM, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 242
- .2byte SPECIES_SHARPEDO
- .2byte MOVE_SLASH, MOVE_BITE, MOVE_WATER_PULSE, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 243
- .2byte SPECIES_TROPIUS
- .2byte MOVE_MAGICAL_LEAF, MOVE_WHIRLWIND, MOVE_AERIAL_ACE, MOVE_STEEL_WING
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 244
- .2byte SPECIES_MAGNETON
- .2byte MOVE_SHOCK_WAVE, MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_LONELY
-
-@ 245
- .2byte SPECIES_MANTINE
- .2byte MOVE_BUBBLE_BEAM, MOVE_AERIAL_ACE, MOVE_RAIN_DANCE, MOVE_ICY_WIND
- .byte BATTLE_FRONTIER_ITEM_MYSTIC_WATER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 246
- .2byte SPECIES_STANTLER
- .2byte MOVE_EXTRASENSORY, MOVE_CONFUSE_RAY, MOVE_STOMP, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_GENTLE
-
-@ 247
- .2byte SPECIES_ABSOL
- .2byte MOVE_BITE, MOVE_RAZOR_WIND, MOVE_FUTURE_SIGHT, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 248
- .2byte SPECIES_SWALOT
- .2byte MOVE_STOCKPILE, MOVE_SWALLOW, MOVE_SPIT_UP, MOVE_SLUDGE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIRKY
-
-@ 249
- .2byte SPECIES_CRAWDAUNT
- .2byte MOVE_BUBBLE_BEAM, MOVE_VICE_GRIP, MOVE_KNOCK_OFF, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 250
- .2byte SPECIES_PIDGEOT
- .2byte MOVE_AERIAL_ACE, MOVE_FEATHER_DANCE, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SHARP_BEAK
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 251
- .2byte SPECIES_GRUMPIG
- .2byte MOVE_PSYBEAM, MOVE_CONFUSE_RAY, MOVE_FUTURE_SIGHT, MOVE_MAGIC_COAT
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 252
- .2byte SPECIES_TORKOAL
- .2byte MOVE_EMBER, MOVE_FIRE_SPIN, MOVE_SMOKESCREEN, MOVE_AMNESIA
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 253
- .2byte SPECIES_KINGLER
- .2byte MOVE_CRABHAMMER, MOVE_METAL_CLAW, MOVE_MUD_SHOT, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 254
- .2byte SPECIES_CACTURNE
- .2byte MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_ACID, MOVE_MEGA_PUNCH
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_HASTY
-
-@ 255
- .2byte SPECIES_BELLOSSOM
- .2byte MOVE_PETAL_DANCE, MOVE_SAFEGUARD, MOVE_SUNNY_DAY, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 256
- .2byte SPECIES_OCTILLERY
- .2byte MOVE_OCTAZOOKA, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_ROCK_BLAST
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 257
- .2byte SPECIES_HUNTAIL
- .2byte MOVE_WHIRLPOOL, MOVE_SCARY_FACE, MOVE_MUD_SLAP, MOVE_BITE
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 258
- .2byte SPECIES_GOREBYSS
- .2byte MOVE_WHIRLPOOL, MOVE_AMNESIA, MOVE_ICY_WIND, MOVE_CONFUSION
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 259
- .2byte SPECIES_RELICANTH
- .2byte MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_HARDEN, MOVE_AMNESIA
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 260
- .2byte SPECIES_OMASTAR
- .2byte MOVE_BUBBLE_BEAM, MOVE_SPIKE_CANNON, MOVE_TICKLE, MOVE_ANCIENT_POWER
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 261
- .2byte SPECIES_KABUTOPS
- .2byte MOVE_SLASH, MOVE_DIG, MOVE_FURY_CUTTER, MOVE_KNOCK_OFF
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 262
- .2byte SPECIES_POLIWRATH
- .2byte MOVE_SUBMISSION, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_BUBBLE_BEAM
- .byte BATTLE_FRONTIER_ITEM_BLACK_BELT
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 263
- .2byte SPECIES_SCYTHER
- .2byte MOVE_FURY_CUTTER, MOVE_AERIAL_ACE, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 264
- .2byte SPECIES_PINSIR
- .2byte MOVE_SUBMISSION, MOVE_FOCUS_ENERGY, MOVE_SWORDS_DANCE, MOVE_REVENGE
- .byte BATTLE_FRONTIER_ITEM_BLACK_BELT
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 265
- .2byte SPECIES_POLITOED
- .2byte MOVE_DIVE, MOVE_DIG, MOVE_HYPNOSIS, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_RELAXED
-
-@ 266
- .2byte SPECIES_CLOYSTER
- .2byte MOVE_AURORA_BEAM, MOVE_SPIKE_CANNON, MOVE_SUPERSONIC, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 267
- .2byte SPECIES_DELCATTY
- .2byte MOVE_FAKE_TEARS, MOVE_SING, MOVE_THUNDERBOLT, MOVE_ICE_BEAM
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 268
- .2byte SPECIES_SABLEYE
- .2byte MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 269
- .2byte SPECIES_LICKITUNG
- .2byte MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 270
- .2byte SPECIES_WEEPINBELL
- .2byte MOVE_SLUDGE_BOMB, MOVE_RAZOR_LEAF, MOVE_SLEEP_POWDER, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIRKY
-
-@ 271
- .2byte SPECIES_GRAVELER
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 272
- .2byte SPECIES_GLOOM
- .2byte MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SLUDGE_BOMB, MOVE_MOONLIGHT
- .byte BATTLE_FRONTIER_ITEM_PECHA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 273
- .2byte SPECIES_PORYGON
- .2byte MOVE_TRI_ATTACK, MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 274
- .2byte SPECIES_KADABRA
- .2byte MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_REFLECT, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 275
- .2byte SPECIES_WAILMER
- .2byte MOVE_WATER_SPOUT, MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_DOCILE
-
-@ 276
- .2byte SPECIES_ROSELIA
- .2byte MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_GRASS_WHISTLE, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 277
- .2byte SPECIES_VOLBEAT
- .2byte MOVE_SIGNAL_BEAM, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_TAIL_GLOW
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 278
- .2byte SPECIES_ILLUMISE
- .2byte MOVE_SILVER_WIND, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_GIGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 279
- .2byte SPECIES_IVYSAUR
- .2byte MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_LEECH_SEED
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 280
- .2byte SPECIES_CHARMELEON
- .2byte MOVE_FLAMETHROWER, MOVE_SLASH, MOVE_ANCIENT_POWER, MOVE_DRAGON_RAGE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 281
- .2byte SPECIES_WARTORTLE
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAPID_SPIN, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 282
- .2byte SPECIES_PARASECT
- .2byte MOVE_SPORE, MOVE_GIGA_DRAIN, MOVE_DIG, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 283
- .2byte SPECIES_MACHOKE
- .2byte MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FORESIGHT, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 284
- .2byte SPECIES_HAUNTER
- .2byte MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 285
- .2byte SPECIES_BAYLEEF
- .2byte MOVE_GIGA_DRAIN, MOVE_BODY_SLAM, MOVE_GRASS_WHISTLE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 286
- .2byte SPECIES_QUILAVA
- .2byte MOVE_FLAMETHROWER, MOVE_CRUSH_CLAW, MOVE_BODY_SLAM, MOVE_SMOKESCREEN
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 287
- .2byte SPECIES_CROCONAW
- .2byte MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_DIG
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 288
- .2byte SPECIES_TOGETIC
- .2byte MOVE_RETURN, MOVE_SWEET_KISS, MOVE_AERIAL_ACE, MOVE_YAWN
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 289
- .2byte SPECIES_MURKROW
- .2byte MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 290
- .2byte SPECIES_WOBBUFFET
- .2byte MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_ENCORE, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_CAREFUL
-
-@ 291
- .2byte SPECIES_PLUSLE
- .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_SEISMIC_TOSS, MOVE_WISH
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_DOCILE
-
-@ 292
- .2byte SPECIES_MINUN
- .2byte MOVE_THUNDERBOLT, MOVE_ATTRACT, MOVE_CHARM, MOVE_WISH
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_DOCILE
-
-@ 293
- .2byte SPECIES_GROVYLE
- .2byte MOVE_GIGA_DRAIN, MOVE_CRUSH_CLAW, MOVE_SCREECH, MOVE_ROCK_TOMB
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 294
- .2byte SPECIES_COMBUSKEN
- .2byte MOVE_FLAMETHROWER, MOVE_SKY_UPPERCUT, MOVE_SLASH, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 295
- .2byte SPECIES_MARSHTOMP
- .2byte MOVE_MUDDY_WATER, MOVE_EARTHQUAKE, MOVE_MUD_SLAP, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 296
- .2byte SPECIES_PONYTA
- .2byte MOVE_FLAMETHROWER, MOVE_BODY_SLAM, MOVE_DOUBLE_KICK, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 297
- .2byte SPECIES_AZUMARILL
- .2byte MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_IRON_TAIL, MOVE_DIG
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 298
- .2byte SPECIES_SUDOWOODO
- .2byte MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_LOW_KICK, MOVE_SELF_DESTRUCT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 299
- .2byte SPECIES_MAGCARGO
- .2byte MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 300
- .2byte SPECIES_PUPITAR
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 301
- .2byte SPECIES_SEALEO
- .2byte MOVE_ICE_BEAM, MOVE_SURF, MOVE_BODY_SLAM, MOVE_HAIL
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 302
- .2byte SPECIES_RATICATE
- .2byte MOVE_SUPER_FANG, MOVE_HYPER_FANG, MOVE_SHADOW_BALL, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 303
- .2byte SPECIES_MASQUERAIN
- .2byte MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_GIGA_DRAIN, MOVE_STUN_SPORE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIET
-
-@ 304
- .2byte SPECIES_FURRET
- .2byte MOVE_TRICK, MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_FOLLOW_ME
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 305
- .2byte SPECIES_DUNSPARCE
- .2byte MOVE_ICE_BEAM, MOVE_ROCK_TOMB, MOVE_BITE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIET
-
-@ 306
- .2byte SPECIES_DRAGONAIR
- .2byte MOVE_RETURN, MOVE_REST, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 307
- .2byte SPECIES_MIGHTYENA
- .2byte MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIRKY
-
-@ 308
- .2byte SPECIES_LINOONE
- .2byte MOVE_TRICK, MOVE_FRUSTRATION, MOVE_THUNDER_WAVE, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 309
- .2byte SPECIES_CASTFORM
- .2byte MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_WATER_PULSE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 310
- .2byte SPECIES_SHELGON
- .2byte MOVE_FRUSTRATION, MOVE_DRAGON_DANCE, MOVE_CRUNCH, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 311
- .2byte SPECIES_METANG
- .2byte MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_BODY_SLAM, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 312
- .2byte SPECIES_WIGGLYTUFF
- .2byte MOVE_FAKE_TEARS, MOVE_SING, MOVE_DREAM_EATER, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_DOCILE
-
-@ 313
- .2byte SPECIES_SUNFLORA
- .2byte MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_GROWTH, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 314
- .2byte SPECIES_CHIMECHO
- .2byte MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEAL_BELL
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 315
- .2byte SPECIES_GLIGAR
- .2byte MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_GUILLOTINE, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 316
- .2byte SPECIES_QWILFISH
- .2byte MOVE_REVENGE, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 317
- .2byte SPECIES_SNEASEL
- .2byte MOVE_CRUSH_CLAW, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_JOLLY
-
-@ 318
- .2byte SPECIES_PELIPPER
- .2byte MOVE_SURF, MOVE_BLIZZARD, MOVE_AERIAL_ACE, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 319
- .2byte SPECIES_SWELLOW
- .2byte MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PURSUIT, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 320
- .2byte SPECIES_LAIRON
- .2byte MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_ROAR, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 321
- .2byte SPECIES_TANGELA
- .2byte MOVE_GIGA_DRAIN, MOVE_STUN_SPORE, MOVE_REST, MOVE_AMNESIA
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 322
- .2byte SPECIES_ARBOK
- .2byte MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_GLARE
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 323
- .2byte SPECIES_PERSIAN
- .2byte MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_ROAR, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_SILK_SCARF
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 324
- .2byte SPECIES_SEADRA
- .2byte MOVE_HYDRO_PUMP, MOVE_FRUSTRATION, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 325
- .2byte SPECIES_KECLEON
- .2byte MOVE_TRICK, MOVE_BRICK_BREAK, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 326
- .2byte SPECIES_VIGOROTH
- .2byte MOVE_CRUSH_CLAW, MOVE_REVERSAL, MOVE_ENDURE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 327
- .2byte SPECIES_LUNATONE
- .2byte MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_CALM_MIND
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 328
- .2byte SPECIES_SOLROCK
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COSMIC_POWER, MOVE_OVERHEAT
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 329
- .2byte SPECIES_NOCTOWL
- .2byte MOVE_PSYCHIC, MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIET
-
-@ 330
- .2byte SPECIES_SANDSLASH
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUSH_CLAW, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 331
- .2byte SPECIES_VENOMOTH
- .2byte MOVE_SIGNAL_BEAM, MOVE_PSYCHIC, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 332
- .2byte SPECIES_CHANSEY
- .2byte MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_SOFT_BOILED
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_RELAXED
-
-@ 333
- .2byte SPECIES_SEAKING
- .2byte MOVE_HORN_DRILL, MOVE_MEGAHORN, MOVE_SLEEP_TALK, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 334
- .2byte SPECIES_JUMPLUFF
- .2byte MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BOLD
-
-@ 335
- .2byte SPECIES_PILOSWINE
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_ADAMANT
-
-@ 336
- .2byte SPECIES_GOLBAT
- .2byte MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_AIR_CUTTER
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 337
- .2byte SPECIES_PRIMEAPE
- .2byte MOVE_CROSS_CHOP, MOVE_ROCK_TOMB, MOVE_OVERHEAT, MOVE_BULK_UP
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 338
- .2byte SPECIES_HITMONLEE
- .2byte MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_FORESIGHT, MOVE_ROCK_TOMB
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 339
- .2byte SPECIES_HITMONCHAN
- .2byte MOVE_DYNAMIC_PUNCH, MOVE_MACH_PUNCH, MOVE_DETECT, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 340
- .2byte SPECIES_GIRAFARIG
- .2byte MOVE_PSYCHIC, MOVE_CRUNCH, MOVE_BATON_PASS, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 341
- .2byte SPECIES_HITMONTOP
- .2byte MOVE_DOUBLE_EDGE, MOVE_SEISMIC_TOSS, MOVE_ROCK_SLIDE, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 342
- .2byte SPECIES_BANETTE
- .2byte MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCREECH, MOVE_WILL_O_WISP
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_ADAMANT
-
-@ 343
- .2byte SPECIES_NINJASK
- .2byte MOVE_SLASH, MOVE_SHADOW_BALL, MOVE_SWORDS_DANCE, MOVE_BATON_PASS
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 344
- .2byte SPECIES_SEVIPER
- .2byte MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_GIGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 345
- .2byte SPECIES_ZANGOOSE
- .2byte MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 346
- .2byte SPECIES_CAMERUPT
- .2byte MOVE_EARTHQUAKE, MOVE_ERUPTION, MOVE_BODY_SLAM, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 347
- .2byte SPECIES_SHARPEDO
- .2byte MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_SURF
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 348
- .2byte SPECIES_TROPIUS
- .2byte MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_BODY_SLAM
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 349
- .2byte SPECIES_MAGNETON
- .2byte MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 350
- .2byte SPECIES_MANTINE
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 351
- .2byte SPECIES_STANTLER
- .2byte MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 352
- .2byte SPECIES_ABSOL
- .2byte MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IRON_TAIL
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 353
- .2byte SPECIES_SWALOT
- .2byte MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_BODY_SLAM, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 354
- .2byte SPECIES_CRAWDAUNT
- .2byte MOVE_GUILLOTINE, MOVE_FRUSTRATION, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 355
- .2byte SPECIES_PIDGEOT
- .2byte MOVE_RETURN, MOVE_AERIAL_ACE, MOVE_STEEL_WING, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 356
- .2byte SPECIES_GRUMPIG
- .2byte MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 357
- .2byte SPECIES_TORKOAL
- .2byte MOVE_OVERHEAT, MOVE_BODY_SLAM, MOVE_SMOKESCREEN, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 358
- .2byte SPECIES_KINGLER
- .2byte MOVE_GUILLOTINE, MOVE_ROCK_TOMB, MOVE_FLAIL, MOVE_ENDURE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 359
- .2byte SPECIES_CACTURNE
- .2byte MOVE_MEGA_KICK, MOVE_TEETER_DANCE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_HARDY
-
-@ 360
- .2byte SPECIES_BELLOSSOM
- .2byte MOVE_SOLAR_BEAM, MOVE_ATTRACT, MOVE_SUNNY_DAY, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 361
- .2byte SPECIES_OCTILLERY
- .2byte MOVE_OCTAZOOKA, MOVE_FIRE_BLAST, MOVE_THUNDER_WAVE, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 362
- .2byte SPECIES_HUNTAIL
- .2byte MOVE_SURF, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_BODY_SLAM
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 363
- .2byte SPECIES_GOREBYSS
- .2byte MOVE_SURF, MOVE_RAIN_DANCE, MOVE_PSYCHIC, MOVE_BODY_SLAM
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 364
- .2byte SPECIES_RELICANTH
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 365
- .2byte SPECIES_OMASTAR
- .2byte MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_ICE_BEAM, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 366
- .2byte SPECIES_KABUTOPS
- .2byte MOVE_SLASH, MOVE_ROCK_SLIDE, MOVE_FLAIL, MOVE_ENDURE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 367
- .2byte SPECIES_POLIWRATH
- .2byte MOVE_BRICK_BREAK, MOVE_HYPNOSIS, MOVE_REST, MOVE_BELLY_DRUM
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 368
- .2byte SPECIES_SCYTHER
- .2byte MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 369
- .2byte SPECIES_PINSIR
- .2byte MOVE_GUILLOTINE, MOVE_SWORDS_DANCE, MOVE_FLAIL, MOVE_ENDURE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_JOLLY
-
-@ 370
- .2byte SPECIES_POLITOED
- .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_MUD_SLAP, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 371
- .2byte SPECIES_CLOYSTER
- .2byte MOVE_DIVE, MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 372
- .2byte SPECIES_DUGTRIO
- .2byte MOVE_EARTHQUAKE, MOVE_TRI_ATTACK, MOVE_SLASH, MOVE_SAND_TOMB
- .byte BATTLE_FRONTIER_ITEM_SOFT_SAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 373
- .2byte SPECIES_MEDICHAM
- .2byte MOVE_PSYCHIC, MOVE_HI_JUMP_KICK, MOVE_CALM_MIND, MOVE_BATON_PASS
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 374
- .2byte SPECIES_MISDREAVUS
- .2byte MOVE_PAIN_SPLIT, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 375
- .2byte SPECIES_FEAROW
- .2byte MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_FACADE, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_SHARP_BEAK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 376
- .2byte SPECIES_GRANBULL
- .2byte MOVE_MEGA_KICK, MOVE_SMELLING_SALT, MOVE_THUNDER_WAVE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 377
- .2byte SPECIES_JYNX
- .2byte MOVE_ICE_BEAM, MOVE_FAKE_OUT, MOVE_LOVELY_KISS, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 378
- .2byte SPECIES_DUSCLOPS
- .2byte MOVE_WILL_O_WISP, MOVE_SEISMIC_TOSS, MOVE_PAIN_SPLIT, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 379
- .2byte SPECIES_DODRIO
- .2byte MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_SLEEP_TALK, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 380
- .2byte SPECIES_MR_MIME
- .2byte MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_FAKE_OUT, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 381
- .2byte SPECIES_LANTURN
- .2byte MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIET
-
-@ 382
- .2byte SPECIES_BRELOOM
- .2byte MOVE_SKY_UPPERCUT, MOVE_MACH_PUNCH, MOVE_HEADBUTT, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 383
- .2byte SPECIES_FORRETRESS
- .2byte MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_LIGHT_SCREEN, MOVE_SPIKES
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 384
- .2byte SPECIES_WHISCASH
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 385
- .2byte SPECIES_XATU
- .2byte MOVE_DRILL_PECK, MOVE_NIGHT_SHADE, MOVE_WISH, MOVE_FUTURE_SIGHT
- .byte BATTLE_FRONTIER_ITEM_SHARP_BEAK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 386
- .2byte SPECIES_SKARMORY
- .2byte MOVE_STEEL_WING, MOVE_AIR_CUTTER, MOVE_COUNTER, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 387
- .2byte SPECIES_MAROWAK
- .2byte MOVE_BONEMERANG, MOVE_ROCK_SLIDE, MOVE_ICY_WIND, MOVE_HEADBUTT
- .byte BATTLE_FRONTIER_ITEM_THICK_CLUB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 388
- .2byte SPECIES_QUAGSIRE
- .2byte MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 389
- .2byte SPECIES_CLEFABLE
- .2byte MOVE_METRONOME, MOVE_DOUBLE_TEAM, MOVE_REFLECT, MOVE_FOLLOW_ME
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BRAVE
-
-@ 390
- .2byte SPECIES_HARIYAMA
- .2byte MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 391
- .2byte SPECIES_RAICHU
- .2byte MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 392
- .2byte SPECIES_DEWGONG
- .2byte MOVE_ICE_BEAM, MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 393
- .2byte SPECIES_MANECTRIC
- .2byte MOVE_THUNDERBOLT, MOVE_FLASH, MOVE_QUICK_ATTACK, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_MAGNET
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 394
- .2byte SPECIES_VILEPLUME
- .2byte MOVE_SLUDGE_BOMB, MOVE_PETAL_DANCE, MOVE_MOONLIGHT, MOVE_AROMATHERAPY
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 395
- .2byte SPECIES_VICTREEBEL
- .2byte MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_SWEET_SCENT, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIET
-
-@ 396
- .2byte SPECIES_ELECTRODE
- .2byte MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 397
- .2byte SPECIES_EXPLOUD
- .2byte MOVE_HYPER_VOICE, MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 398
- .2byte SPECIES_SHIFTRY
- .2byte MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_MIRACLE_SEED
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIET
-
-@ 399
- .2byte SPECIES_GLALIE
- .2byte MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_HAIL, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 400
- .2byte SPECIES_LUDICOLO
- .2byte MOVE_SURF, MOVE_RAIN_DANCE, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 401
- .2byte SPECIES_HYPNO
- .2byte MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_HYPNOSIS
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIET
-
-@ 402
- .2byte SPECIES_GOLEM
- .2byte MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_ROCK_TOMB
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 403
- .2byte SPECIES_RHYDON
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 404
- .2byte SPECIES_ALAKAZAM
- .2byte MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 405
- .2byte SPECIES_WEEZING
- .2byte MOVE_SLUDGE_BOMB, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_SMOKESCREEN
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 406
- .2byte SPECIES_KANGASKHAN
- .2byte MOVE_DIZZY_PUNCH, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 407
- .2byte SPECIES_ELECTABUZZ
- .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 408
- .2byte SPECIES_TAUROS
- .2byte MOVE_EARTHQUAKE, MOVE_THRASH, MOVE_SWAGGER, MOVE_FACADE
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 409
- .2byte SPECIES_SLOWBRO
- .2byte MOVE_SURF, MOVE_RAIN_DANCE, MOVE_HEADBUTT, MOVE_ICE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 410
- .2byte SPECIES_SLOWKING
- .2byte MOVE_PSYCHIC, MOVE_BRICK_BREAK, MOVE_AMNESIA, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 411
- .2byte SPECIES_MILTANK
- .2byte MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_MILK_DRINK
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 412
- .2byte SPECIES_ALTARIA
- .2byte MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_REFRESH, MOVE_BODY_SLAM
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 413
- .2byte SPECIES_NIDOQUEEN
- .2byte MOVE_SLUDGE_BOMB, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 414
- .2byte SPECIES_NIDOKING
- .2byte MOVE_HORN_DRILL, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 415
- .2byte SPECIES_MAGMAR
- .2byte MOVE_FLAMETHROWER, MOVE_SMOKESCREEN, MOVE_BRICK_BREAK, MOVE_BARRIER
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 416
- .2byte SPECIES_CRADILY
- .2byte MOVE_GIGA_DRAIN, MOVE_ROCK_SLIDE, MOVE_BARRIER, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 417
- .2byte SPECIES_ARMALDO
- .2byte MOVE_SLASH, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 418
- .2byte SPECIES_GOLDUCK
- .2byte MOVE_HYDRO_PUMP, MOVE_DIG, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 419
- .2byte SPECIES_RAPIDASH
- .2byte MOVE_FLAMETHROWER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_CHARCOAL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIET
-
-@ 420
- .2byte SPECIES_MUK
- .2byte MOVE_SLUDGE_BOMB, MOVE_BODY_SLAM, MOVE_SCREECH, MOVE_MINIMIZE
- .byte BATTLE_FRONTIER_ITEM_POISON_BARB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 421
- .2byte SPECIES_GENGAR
- .2byte MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_TIMID
-
-@ 422
- .2byte SPECIES_AMPHAROS
- .2byte MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_MAGNET
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 423
- .2byte SPECIES_SCIZOR
- .2byte MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_COUNTER, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 424
- .2byte SPECIES_HERACROSS
- .2byte MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 425
- .2byte SPECIES_URSARING
- .2byte MOVE_MEGA_KICK, MOVE_CRUNCH, MOVE_AERIAL_ACE, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 426
- .2byte SPECIES_HOUNDOOM
- .2byte MOVE_FLAMETHROWER, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_WILL_O_WISP
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 427
- .2byte SPECIES_DONPHAN
- .2byte MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 428
- .2byte SPECIES_CLAYDOL
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWAGGER, MOVE_PSYCH_UP
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 429
- .2byte SPECIES_WAILORD
- .2byte MOVE_SURF, MOVE_ICY_WIND, MOVE_BODY_SLAM, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 430
- .2byte SPECIES_NINETALES
- .2byte MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 431
- .2byte SPECIES_MACHAMP
- .2byte MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 432
- .2byte SPECIES_SHUCKLE
- .2byte MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SLEEP_TALK, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BRAVE
-
-@ 433
- .2byte SPECIES_STEELIX
- .2byte MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_ROCK_TOMB, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 434
- .2byte SPECIES_TENTACRUEL
- .2byte MOVE_SLUDGE_BOMB, MOVE_ICY_WIND, MOVE_BARRIER, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_IMPISH
-
-@ 435
- .2byte SPECIES_AERODACTYL
- .2byte MOVE_ANCIENT_POWER, MOVE_DRAGON_BREATH, MOVE_AERIAL_ACE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 436
- .2byte SPECIES_PORYGON2
- .2byte MOVE_TRI_ATTACK, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 437
- .2byte SPECIES_GARDEVOIR
- .2byte MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_MAGICAL_LEAF, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_TIMID
-
-@ 438
- .2byte SPECIES_EXEGGUTOR
- .2byte MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIET
-
-@ 439
- .2byte SPECIES_STARMIE
- .2byte MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 440
- .2byte SPECIES_FLYGON
- .2byte MOVE_EARTHQUAKE, MOVE_STEEL_WING, MOVE_FAINT_ATTACK, MOVE_FACADE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 441
- .2byte SPECIES_VENUSAUR
- .2byte MOVE_GIGA_DRAIN, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_SLEEP_POWDER
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 442
- .2byte SPECIES_VAPOREON
- .2byte MOVE_SURF, MOVE_ROAR, MOVE_BITE, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_MYSTIC_WATER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 443
- .2byte SPECIES_JOLTEON
- .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 444
- .2byte SPECIES_FLAREON
- .2byte MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_BITE, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 445
- .2byte SPECIES_MEGANIUM
- .2byte MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 446
- .2byte SPECIES_ESPEON
- .2byte MOVE_PSYCHIC, MOVE_CHARM, MOVE_CALM_MIND, MOVE_BATON_PASS
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 447
- .2byte SPECIES_UMBREON
- .2byte MOVE_CONFUSE_RAY, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BATON_PASS
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 448
- .2byte SPECIES_BLASTOISE
- .2byte MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE, MOVE_SEISMIC_TOSS
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 449
- .2byte SPECIES_FERALIGATR
- .2byte MOVE_SURF, MOVE_RAIN_DANCE, MOVE_AERIAL_ACE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 450
- .2byte SPECIES_AGGRON
- .2byte MOVE_IRON_TAIL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 451
- .2byte SPECIES_BLAZIKEN
- .2byte MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_DOUBLE_KICK, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 452
- .2byte SPECIES_WALREIN
- .2byte MOVE_BLIZZARD, MOVE_HAIL, MOVE_YAWN, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 453
- .2byte SPECIES_SCEPTILE
- .2byte MOVE_LEAF_BLADE, MOVE_LEECH_SEED, MOVE_AERIAL_ACE, MOVE_DETECT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 454
- .2byte SPECIES_CHARIZARD
- .2byte MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_ROAR, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 455
- .2byte SPECIES_TYPHLOSION
- .2byte MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SMOKESCREEN, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 456
- .2byte SPECIES_LAPRAS
- .2byte MOVE_SURF, MOVE_ATTRACT, MOVE_CONFUSE_RAY, MOVE_SING
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BOLD
-
-@ 457
- .2byte SPECIES_CROBAT
- .2byte MOVE_SLUDGE_BOMB, MOVE_BITE, MOVE_ASTONISH, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 458
- .2byte SPECIES_SWAMPERT
- .2byte MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_REST, MOVE_CURSE
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 459
- .2byte SPECIES_GYARADOS
- .2byte MOVE_RETURN, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 460
- .2byte SPECIES_SNORLAX
- .2byte MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 461
- .2byte SPECIES_KINGDRA
- .2byte MOVE_HYDRO_PUMP, MOVE_DRAGON_BREATH, MOVE_ICY_WIND, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 462
- .2byte SPECIES_BLISSEY
- .2byte MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_SING, MOVE_SOFT_BOILED
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BOLD
-
-@ 463
- .2byte SPECIES_MILOTIC
- .2byte MOVE_HYDRO_PUMP, MOVE_ICY_WIND, MOVE_RECOVER, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 464
- .2byte SPECIES_ARCANINE
- .2byte MOVE_FLAMETHROWER, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_BODY_SLAM
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 465
- .2byte SPECIES_SALAMENCE
- .2byte MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_HEADBUTT, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 466
- .2byte SPECIES_METAGROSS
- .2byte MOVE_METEOR_MASH, MOVE_AERIAL_ACE, MOVE_FACADE, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 467
- .2byte SPECIES_SLAKING
- .2byte MOVE_YAWN, MOVE_BULK_UP, MOVE_SWAGGER, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 468
- .2byte SPECIES_DUGTRIO
- .2byte MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_TRI_ATTACK
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 469
- .2byte SPECIES_MEDICHAM
- .2byte MOVE_REVERSAL, MOVE_ENDURE, MOVE_PSYCHIC, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 470
- .2byte SPECIES_MAROWAK
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_ICY_WIND
- .byte BATTLE_FRONTIER_ITEM_THICK_CLUB
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 471
- .2byte SPECIES_QUAGSIRE
- .2byte MOVE_CURSE, MOVE_ATTRACT, MOVE_YAWN, MOVE_ANCIENT_POWER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_SASSY
-
-@ 472
- .2byte SPECIES_MISDREAVUS
- .2byte MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BOLD
-
-@ 473
- .2byte SPECIES_FEAROW
- .2byte MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_ATTRACT, MOVE_PURSUIT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 474
- .2byte SPECIES_GRANBULL
- .2byte MOVE_OVERHEAT, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FACADE
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK
- .4byte NATURE_QUIET
-
-@ 475
- .2byte SPECIES_JYNX
- .2byte MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_LOVELY_KISS, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 476
- .2byte SPECIES_DUSCLOPS
- .2byte MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 477
- .2byte SPECIES_DODRIO
- .2byte MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_FAINT_ATTACK, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 478
- .2byte SPECIES_MR_MIME
- .2byte MOVE_BATON_PASS, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_PSYCHIC
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 479
- .2byte SPECIES_LANTURN
- .2byte MOVE_FLAIL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_SURF
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 480
- .2byte SPECIES_BRELOOM
- .2byte MOVE_GIGA_DRAIN, MOVE_LEECH_SEED, MOVE_FOCUS_PUNCH, MOVE_SPORE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_DOCILE
-
-@ 481
- .2byte SPECIES_FORRETRESS
- .2byte MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_COUNTER, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 482
- .2byte SPECIES_SKARMORY
- .2byte MOVE_SPIKES, MOVE_ROAR, MOVE_DRILL_PECK, MOVE_TOXIC
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 483
- .2byte SPECIES_WHISCASH
- .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SPARK, MOVE_FUTURE_SIGHT
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 484
- .2byte SPECIES_XATU
- .2byte MOVE_FLY, MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 485
- .2byte SPECIES_CLEFABLE
- .2byte MOVE_METEOR_MASH, MOVE_COSMIC_POWER, MOVE_DOUBLE_TEAM, MOVE_FOLLOW_ME
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 486
- .2byte SPECIES_HARIYAMA
- .2byte MOVE_CROSS_CHOP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 487
- .2byte SPECIES_RAICHU
- .2byte MOVE_THUNDERBOLT, MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 488
- .2byte SPECIES_DEWGONG
- .2byte MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_ENCORE, MOVE_DISABLE
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 489
- .2byte SPECIES_MANECTRIC
- .2byte MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 490
- .2byte SPECIES_VILEPLUME
- .2byte MOVE_INGRAIN, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_GIGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 491
- .2byte SPECIES_VICTREEBEL
- .2byte MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_SERIOUS
-
-@ 492
- .2byte SPECIES_ELECTRODE
- .2byte MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 493
- .2byte SPECIES_EXPLOUD
- .2byte MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 494
- .2byte SPECIES_SHIFTRY
- .2byte MOVE_LEECH_SEED, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_IMPISH
-
-@ 495
- .2byte SPECIES_GLALIE
- .2byte MOVE_EXPLOSION, MOVE_ENDURE, MOVE_BODY_SLAM, MOVE_ICY_WIND
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 496
- .2byte SPECIES_LUDICOLO
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 497
- .2byte SPECIES_HYPNO
- .2byte MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_DREAM_EATER, MOVE_PSYCHIC
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 498
- .2byte SPECIES_GOLEM
- .2byte MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 499
- .2byte SPECIES_RHYDON
- .2byte MOVE_EARTHQUAKE, MOVE_HORN_DRILL, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 500
- .2byte SPECIES_ALAKAZAM
- .2byte MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_THUNDER_WAVE, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 501
- .2byte SPECIES_WEEZING
- .2byte MOVE_MEMENTO, MOVE_SLUDGE_BOMB, MOVE_FACADE, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 502
- .2byte SPECIES_KANGASKHAN
- .2byte MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 503
- .2byte SPECIES_ELECTABUZZ
- .2byte MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_ATTRACT, MOVE_FOCUS_PUNCH
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 504
- .2byte SPECIES_TAUROS
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 505
- .2byte SPECIES_SLOWBRO
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_YAWN
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_MODEST
-
-@ 506
- .2byte SPECIES_SLOWKING
- .2byte MOVE_YAWN, MOVE_THUNDER_WAVE, MOVE_SURF, MOVE_PSYCHIC
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 507
- .2byte SPECIES_MILTANK
- .2byte MOVE_FOCUS_PUNCH, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 508
- .2byte SPECIES_ALTARIA
- .2byte MOVE_PERISH_SONG, MOVE_DRAGON_BREATH, MOVE_PURSUIT, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 509
- .2byte SPECIES_NIDOQUEEN
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 510
- .2byte SPECIES_NIDOKING
- .2byte MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 511
- .2byte SPECIES_MAGMAR
- .2byte MOVE_FIRE_BLAST, MOVE_SMOKESCREEN, MOVE_THUNDER_PUNCH, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 512
- .2byte SPECIES_CRADILY
- .2byte MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_PSYCH_UP
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 513
- .2byte SPECIES_ARMALDO
- .2byte MOVE_IRON_TAIL, MOVE_ANCIENT_POWER, MOVE_BRICK_BREAK, MOVE_KNOCK_OFF
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 514
- .2byte SPECIES_GOLDUCK
- .2byte MOVE_CROSS_CHOP, MOVE_SURF, MOVE_SWAGGER, MOVE_PSYCH_UP
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 515
- .2byte SPECIES_RAPIDASH
- .2byte MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_DOUBLE_TEAM, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 516
- .2byte SPECIES_MUK
- .2byte MOVE_CURSE, MOVE_REST, MOVE_SLUDGE_BOMB, MOVE_DYNAMIC_PUNCH
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 517
- .2byte SPECIES_GENGAR
- .2byte MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 518
- .2byte SPECIES_AMPHAROS
- .2byte MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 519
- .2byte SPECIES_SCIZOR
- .2byte MOVE_SILVER_WIND, MOVE_STEEL_WING, MOVE_SWORDS_DANCE, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 520
- .2byte SPECIES_HERACROSS
- .2byte MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_BULK_UP
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_JOLLY
-
-@ 521
- .2byte SPECIES_URSARING
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 522
- .2byte SPECIES_HOUNDOOM
- .2byte MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_ROAR, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 523
- .2byte SPECIES_DONPHAN
- .2byte MOVE_FLAIL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 524
- .2byte SPECIES_CLAYDOL
- .2byte MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_COSMIC_POWER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 525
- .2byte SPECIES_WAILORD
- .2byte MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_CURSE, MOVE_AMNESIA
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 526
- .2byte SPECIES_NINETALES
- .2byte MOVE_HEAT_WAVE, MOVE_BODY_SLAM, MOVE_GRUDGE, MOVE_SUNNY_DAY
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 527
- .2byte SPECIES_MACHAMP
- .2byte MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_BULK_UP, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 528
- .2byte SPECIES_SHUCKLE
- .2byte MOVE_SANDSTORM, MOVE_DIG, MOVE_FLASH, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_CAREFUL
-
-@ 529
- .2byte SPECIES_STEELIX
- .2byte MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_SANDSTORM, MOVE_BLOCK
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 530
- .2byte SPECIES_TENTACRUEL
- .2byte MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_SURF
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 531
- .2byte SPECIES_AERODACTYL
- .2byte MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 532
- .2byte SPECIES_PORYGON2
- .2byte MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_THUNDER_WAVE, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 533
- .2byte SPECIES_GARDEVOIR
- .2byte MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 534
- .2byte SPECIES_EXEGGUTOR
- .2byte MOVE_RETURN, MOVE_CURSE, MOVE_SLEEP_POWDER, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 535
- .2byte SPECIES_STARMIE
- .2byte MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 536
- .2byte SPECIES_FLYGON
- .2byte MOVE_SOLAR_BEAM, MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_SUNNY_DAY
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 537
- .2byte SPECIES_VENUSAUR
- .2byte MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 538
- .2byte SPECIES_VAPOREON
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 539
- .2byte SPECIES_JOLTEON
- .2byte MOVE_THUNDERBOLT, MOVE_DIG, MOVE_DOUBLE_KICK, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 540
- .2byte SPECIES_FLAREON
- .2byte MOVE_CURSE, MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 541
- .2byte SPECIES_MEGANIUM
- .2byte MOVE_LEECH_SEED, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_GRASS_WHISTLE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 542
- .2byte SPECIES_ESPEON
- .2byte MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_CALM_MIND, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 543
- .2byte SPECIES_UMBREON
- .2byte MOVE_CURSE, MOVE_SCREECH, MOVE_DOUBLE_TEAM, MOVE_DOUBLE_EDGE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 544
- .2byte SPECIES_BLASTOISE
- .2byte MOVE_HYDRO_PUMP, MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 545
- .2byte SPECIES_FERALIGATR
- .2byte MOVE_SURF, MOVE_DRAGON_CLAW, MOVE_BRICK_BREAK, MOVE_SCARY_FACE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 546
- .2byte SPECIES_AGGRON
- .2byte MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 547
- .2byte SPECIES_BLAZIKEN
- .2byte MOVE_BLAZE_KICK, MOVE_MEGA_KICK, MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 548
- .2byte SPECIES_WALREIN
- .2byte MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 549
- .2byte SPECIES_SCEPTILE
- .2byte MOVE_LEAF_BLADE, MOVE_THUNDER_PUNCH, MOVE_ATTRACT, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 550
- .2byte SPECIES_CHARIZARD
- .2byte MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE, MOVE_SMOKESCREEN
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 551
- .2byte SPECIES_TYPHLOSION
- .2byte MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 552
- .2byte SPECIES_LAPRAS
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_TIMID
-
-@ 553
- .2byte SPECIES_CROBAT
- .2byte MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 554
- .2byte SPECIES_SWAMPERT
- .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 555
- .2byte SPECIES_GYARADOS
- .2byte MOVE_HYDRO_PUMP, MOVE_THUNDERBOLT, MOVE_FIRE_BLAST, MOVE_BLIZZARD
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 556
- .2byte SPECIES_SNORLAX
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 557
- .2byte SPECIES_KINGDRA
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_DRAGON_BREATH, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 558
- .2byte SPECIES_BLISSEY
- .2byte MOVE_SEISMIC_TOSS, MOVE_SING, MOVE_ATTRACT, MOVE_SUBSTITUTE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BOLD
-
-@ 559
- .2byte SPECIES_MILOTIC
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_SAFEGUARD, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 560
- .2byte SPECIES_ARCANINE
- .2byte MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_CRUNCH, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_DOCILE
-
-@ 561
- .2byte SPECIES_SALAMENCE
- .2byte MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_SWAGGER, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 562
- .2byte SPECIES_METAGROSS
- .2byte MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_PSYCH_UP, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 563
- .2byte SPECIES_SLAKING
- .2byte MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_YAWN, MOVE_AMNESIA
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_ADAMANT
-
-@ 564
- .2byte SPECIES_DUGTRIO
- .2byte MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_FISSURE
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 565
- .2byte SPECIES_MEDICHAM
- .2byte MOVE_DYNAMIC_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_HARDY
-
-@ 566
- .2byte SPECIES_MISDREAVUS
- .2byte MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 567
- .2byte SPECIES_FEAROW
- .2byte MOVE_DRILL_PECK, MOVE_RETURN, MOVE_STEEL_WING, MOVE_FAINT_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 568
- .2byte SPECIES_GRANBULL
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 569
- .2byte SPECIES_JYNX
- .2byte MOVE_DREAM_EATER, MOVE_LOVELY_KISS, MOVE_ATTRACT, MOVE_SUBSTITUTE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 570
- .2byte SPECIES_DUSCLOPS
- .2byte MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 571
- .2byte SPECIES_DODRIO
- .2byte MOVE_DOUBLE_EDGE, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_FAINT_ATTACK
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 572
- .2byte SPECIES_MR_MIME
- .2byte MOVE_TRICK, MOVE_TORMENT, MOVE_PSYCHIC, MOVE_THUNDERBOLT
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 573
- .2byte SPECIES_LANTURN
- .2byte MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 574
- .2byte SPECIES_BRELOOM
- .2byte MOVE_IRON_TAIL, MOVE_FOCUS_PUNCH, MOVE_ATTRACT, MOVE_SPORE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 575
- .2byte SPECIES_FORRETRESS
- .2byte MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_ZAP_CANNON
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 576
- .2byte SPECIES_WHISCASH
- .2byte MOVE_SLEEP_TALK, MOVE_REST, MOVE_SURF, MOVE_FISSURE
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_HARDY
-
-@ 577
- .2byte SPECIES_XATU
- .2byte MOVE_DRILL_PECK, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_STEEL_WING
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 578
- .2byte SPECIES_SKARMORY
- .2byte MOVE_TOXIC, MOVE_CURSE, MOVE_REST, MOVE_FLY
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 579
- .2byte SPECIES_MAROWAK
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_THICK_CLUB
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 580
- .2byte SPECIES_QUAGSIRE
- .2byte MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE, MOVE_CURSE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 581
- .2byte SPECIES_CLEFABLE
- .2byte MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_FLAMETHROWER, MOVE_MAGICAL_LEAF
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 582
- .2byte SPECIES_HARIYAMA
- .2byte MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FACADE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 583
- .2byte SPECIES_RAICHU
- .2byte MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_IRON_TAIL, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_DOCILE
-
-@ 584
- .2byte SPECIES_DEWGONG
- .2byte MOVE_HORN_DRILL, MOVE_SHEER_COLD, MOVE_SLEEP_TALK, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 585
- .2byte SPECIES_MANECTRIC
- .2byte MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_THUNDER_WAVE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 586
- .2byte SPECIES_VILEPLUME
- .2byte MOVE_ATTRACT, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 587
- .2byte SPECIES_VICTREEBEL
- .2byte MOVE_STUN_SPORE, MOVE_INGRAIN, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 588
- .2byte SPECIES_ELECTRODE
- .2byte MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ENDURE
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAUGHTY
-
-@ 589
- .2byte SPECIES_EXPLOUD
- .2byte MOVE_OVERHEAT, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_EXTRASENSORY
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 590
- .2byte SPECIES_SHIFTRY
- .2byte MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 591
- .2byte SPECIES_GLALIE
- .2byte MOVE_BLIZZARD, MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 592
- .2byte SPECIES_LUDICOLO
- .2byte MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_GIGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 593
- .2byte SPECIES_HYPNO
- .2byte MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_MEGA_KICK, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 594
- .2byte SPECIES_GOLEM
- .2byte MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 595
- .2byte SPECIES_RHYDON
- .2byte MOVE_MEGAHORN, MOVE_CRUSH_CLAW, MOVE_EARTHQUAKE, MOVE_HORN_DRILL
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 596
- .2byte SPECIES_ALAKAZAM
- .2byte MOVE_TRICK, MOVE_DISABLE, MOVE_PSYCHIC, MOVE_SKILL_SWAP
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 597
- .2byte SPECIES_WEEZING
- .2byte MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 598
- .2byte SPECIES_KANGASKHAN
- .2byte MOVE_REVERSAL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 599
- .2byte SPECIES_ELECTABUZZ
- .2byte MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDERBOLT, MOVE_CROSS_CHOP
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 600
- .2byte SPECIES_TAUROS
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 601
- .2byte SPECIES_SLOWBRO
- .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK
- .4byte NATURE_QUIET
-
-@ 602
- .2byte SPECIES_SLOWKING
- .2byte MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 603
- .2byte SPECIES_MILTANK
- .2byte MOVE_REVERSAL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 604
- .2byte SPECIES_ALTARIA
- .2byte MOVE_SING, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 605
- .2byte SPECIES_NIDOQUEEN
- .2byte MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_CRUNCH
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 606
- .2byte SPECIES_NIDOKING
- .2byte MOVE_HORN_DRILL, MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SURF
- .byte BATTLE_FRONTIER_ITEM_LEPPA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 607
- .2byte SPECIES_MAGMAR
- .2byte MOVE_MEGA_KICK, MOVE_CROSS_CHOP, MOVE_IRON_TAIL, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_IMPISH
-
-@ 608
- .2byte SPECIES_CRADILY
- .2byte MOVE_SUBSTITUTE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 609
- .2byte SPECIES_ARMALDO
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_SWORDS_DANCE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 610
- .2byte SPECIES_GOLDUCK
- .2byte MOVE_HYDRO_PUMP, MOVE_CROSS_CHOP, MOVE_BLIZZARD, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 611
- .2byte SPECIES_RAPIDASH
- .2byte MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_HYPNOSIS
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 612
- .2byte SPECIES_MUK
- .2byte MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_QUIET
-
-@ 613
- .2byte SPECIES_GENGAR
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_GIGA_DRAIN, MOVE_SKILL_SWAP
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 614
- .2byte SPECIES_AMPHAROS
- .2byte MOVE_THUNDERBOLT, MOVE_MEGA_KICK, MOVE_IRON_TAIL, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 615
- .2byte SPECIES_SCIZOR
- .2byte MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY, MOVE_SLASH
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_CAREFUL
-
-@ 616
- .2byte SPECIES_HERACROSS
- .2byte MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 617
- .2byte SPECIES_URSARING
- .2byte MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_CRUNCH
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 618
- .2byte SPECIES_HOUNDOOM
- .2byte MOVE_OVERHEAT, MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 619
- .2byte SPECIES_DONPHAN
- .2byte MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SECRET_POWER
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 620
- .2byte SPECIES_CLAYDOL
- .2byte MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 621
- .2byte SPECIES_WAILORD
- .2byte MOVE_HYDRO_PUMP, MOVE_FISSURE, MOVE_DOUBLE_TEAM, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 622
- .2byte SPECIES_NINETALES
- .2byte MOVE_FIRE_BLAST, MOVE_IRON_TAIL, MOVE_CONFUSE_RAY, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 623
- .2byte SPECIES_MACHAMP
- .2byte MOVE_CROSS_CHOP, MOVE_FIRE_BLAST, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 624
- .2byte SPECIES_SHUCKLE
- .2byte MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_TOXIC, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_CAREFUL
-
-@ 625
- .2byte SPECIES_STEELIX
- .2byte MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_ROCK_SLIDE, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 626
- .2byte SPECIES_TENTACRUEL
- .2byte MOVE_SURF, MOVE_GIGA_DRAIN, MOVE_ICE_BEAM, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 627
- .2byte SPECIES_AERODACTYL
- .2byte MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_DRAGON_CLAW
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 628
- .2byte SPECIES_PORYGON2
- .2byte MOVE_PSYCHIC, MOVE_TRI_ATTACK, MOVE_THUNDER_WAVE, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 629
- .2byte SPECIES_GARDEVOIR
- .2byte MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH, MOVE_MAGICAL_LEAF
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 630
- .2byte SPECIES_EXEGGUTOR
- .2byte MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 631
- .2byte SPECIES_STARMIE
- .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 632
- .2byte SPECIES_FLYGON
- .2byte MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_GIGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 633
- .2byte SPECIES_VENUSAUR
- .2byte MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SLEEP_POWDER
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 634
- .2byte SPECIES_VAPOREON
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_BATON_PASS
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 635
- .2byte SPECIES_JOLTEON
- .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_AGILITY, MOVE_BATON_PASS
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 636
- .2byte SPECIES_FLAREON
- .2byte MOVE_SHADOW_BALL, MOVE_FLAIL, MOVE_ENDURE, MOVE_OVERHEAT
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 637
- .2byte SPECIES_MEGANIUM
- .2byte MOVE_EARTHQUAKE, MOVE_FLAIL, MOVE_ENDURE, MOVE_GIGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 638
- .2byte SPECIES_ESPEON
- .2byte MOVE_PSYCHIC, MOVE_BITE, MOVE_WISH, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 639
- .2byte SPECIES_UMBREON
- .2byte MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ATTRACT, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 640
- .2byte SPECIES_BLASTOISE
- .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 641
- .2byte SPECIES_FERALIGATR
- .2byte MOVE_HYDRO_PUMP, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 642
- .2byte SPECIES_AGGRON
- .2byte MOVE_SURF, MOVE_THUNDER, MOVE_FIRE_BLAST, MOVE_BLIZZARD
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 643
- .2byte SPECIES_BLAZIKEN
- .2byte MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_REVERSAL
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 644
- .2byte SPECIES_WALREIN
- .2byte MOVE_SHEER_COLD, MOVE_FISSURE, MOVE_SURF, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 645
- .2byte SPECIES_SCEPTILE
- .2byte MOVE_LEAF_BLADE, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 646
- .2byte SPECIES_CHARIZARD
- .2byte MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_BITE, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 647
- .2byte SPECIES_TYPHLOSION
- .2byte MOVE_EARTHQUAKE, MOVE_OVERHEAT, MOVE_ENDURE, MOVE_REVERSAL
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 648
- .2byte SPECIES_LAPRAS
- .2byte MOVE_DOUBLE_EDGE, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 649
- .2byte SPECIES_CROBAT
- .2byte MOVE_AIR_CUTTER, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 650
- .2byte SPECIES_SWAMPERT
- .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_BRAVE
-
-@ 651
- .2byte SPECIES_GYARADOS
- .2byte MOVE_SURF, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 652
- .2byte SPECIES_SNORLAX
- .2byte MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_ADAMANT
-
-@ 653
- .2byte SPECIES_KINGDRA
- .2byte MOVE_FLAIL, MOVE_HYDRO_PUMP, MOVE_DRAGON_DANCE, MOVE_ENDURE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 654
- .2byte SPECIES_BLISSEY
- .2byte MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_SOFT_BOILED
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BOLD
-
-@ 655
- .2byte SPECIES_MILOTIC
- .2byte MOVE_SURF, MOVE_BLIZZARD, MOVE_ATTRACT, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 656
- .2byte SPECIES_ARCANINE
- .2byte MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 657
- .2byte SPECIES_SALAMENCE
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_ENDURE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 658
- .2byte SPECIES_METAGROSS
- .2byte MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_DOUBLE_TEAM, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 659
- .2byte SPECIES_SLAKING
- .2byte MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_ADAMANT
-
-@ 660
- .2byte SPECIES_DUGTRIO
- .2byte MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FISSURE
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 661
- .2byte SPECIES_MEDICHAM
- .2byte MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 662
- .2byte SPECIES_MISDREAVUS
- .2byte MOVE_DESTINY_BOND, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_TIMID
-
-@ 663
- .2byte SPECIES_FEAROW
- .2byte MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SKY_ATTACK
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 664
- .2byte SPECIES_GRANBULL
- .2byte MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_BRAVE
-
-@ 665
- .2byte SPECIES_JYNX
- .2byte MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_LOVELY_KISS, MOVE_FAKE_TEARS
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 666
- .2byte SPECIES_DUSCLOPS
- .2byte MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_CURSE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 667
- .2byte SPECIES_DODRIO
- .2byte MOVE_FLAIL, MOVE_ENDURE, MOVE_DRILL_PECK, MOVE_FACADE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 668
- .2byte SPECIES_MR_MIME
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 669
- .2byte SPECIES_LANTURN
- .2byte MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 670
- .2byte SPECIES_BRELOOM
- .2byte MOVE_FOCUS_PUNCH, MOVE_SLUDGE_BOMB, MOVE_SPORE, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 671
- .2byte SPECIES_FORRETRESS
- .2byte MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 672
- .2byte SPECIES_WHISCASH
- .2byte MOVE_FISSURE, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 673
- .2byte SPECIES_XATU
- .2byte MOVE_PSYCHIC, MOVE_DRILL_PECK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 674
- .2byte SPECIES_SKARMORY
- .2byte MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_COUNTER, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 675
- .2byte SPECIES_MAROWAK
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_MEGA_KICK
- .byte BATTLE_FRONTIER_ITEM_THICK_CLUB
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 676
- .2byte SPECIES_QUAGSIRE
- .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_AMNESIA
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_SASSY
-
-@ 677
- .2byte SPECIES_CLEFABLE
- .2byte MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_SOFT_BOILED
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 678
- .2byte SPECIES_HARIYAMA
- .2byte MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 679
- .2byte SPECIES_RAICHU
- .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_PROTECT, MOVE_MEGA_KICK
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 680
- .2byte SPECIES_DEWGONG
- .2byte MOVE_SHEER_COLD, MOVE_ICE_BEAM, MOVE_SURF, MOVE_SIGNAL_BEAM
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 681
- .2byte SPECIES_MANECTRIC
- .2byte MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 682
- .2byte SPECIES_VILEPLUME
- .2byte MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 683
- .2byte SPECIES_VICTREEBEL
- .2byte MOVE_GIGA_DRAIN, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_SYNTHESIS
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 684
- .2byte SPECIES_ELECTRODE
- .2byte MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAUGHTY
-
-@ 685
- .2byte SPECIES_EXPLOUD
- .2byte MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_OVERHEAT
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 686
- .2byte SPECIES_SHIFTRY
- .2byte MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_MEGA_KICK, MOVE_FAKE_OUT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 687
- .2byte SPECIES_GLALIE
- .2byte MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 688
- .2byte SPECIES_LUDICOLO
- .2byte MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_TOXIC
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 689
- .2byte SPECIES_HYPNO
- .2byte MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 690
- .2byte SPECIES_GOLEM
- .2byte MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 691
- .2byte SPECIES_RHYDON
- .2byte MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_HORN_DRILL
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 692
- .2byte SPECIES_ALAKAZAM
- .2byte MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 693
- .2byte SPECIES_WEEZING
- .2byte MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FRUSTRATION, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 694
- .2byte SPECIES_KANGASKHAN
- .2byte MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 695
- .2byte SPECIES_ELECTABUZZ
- .2byte MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_MEGA_KICK, MOVE_CROSS_CHOP
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 696
- .2byte SPECIES_TAUROS
- .2byte MOVE_DOUBLE_EDGE, MOVE_ROCK_TOMB, MOVE_THUNDERBOLT, MOVE_SURF
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 697
- .2byte SPECIES_SLOWBRO
- .2byte MOVE_PSYCHIC, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK
- .4byte NATURE_SASSY
-
-@ 698
- .2byte SPECIES_SLOWKING
- .2byte MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 699
- .2byte SPECIES_MILTANK
- .2byte MOVE_DOUBLE_EDGE, MOVE_CURSE, MOVE_DOUBLE_TEAM, MOVE_MILK_DRINK
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 700
- .2byte SPECIES_ALTARIA
- .2byte MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 701
- .2byte SPECIES_NIDOQUEEN
- .2byte MOVE_SUPERPOWER, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 702
- .2byte SPECIES_NIDOKING
- .2byte MOVE_MEGAHORN, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_THUNDER
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 703
- .2byte SPECIES_MAGMAR
- .2byte MOVE_FLAMETHROWER, MOVE_PSYCHIC, MOVE_CROSS_CHOP, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 704
- .2byte SPECIES_CRADILY
- .2byte MOVE_TOXIC, MOVE_INGRAIN, MOVE_MIRROR_COAT, MOVE_GIGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 705
- .2byte SPECIES_ARMALDO
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 706
- .2byte SPECIES_GOLDUCK
- .2byte MOVE_SURF, MOVE_CROSS_CHOP, MOVE_ICE_BEAM, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 707
- .2byte SPECIES_RAPIDASH
- .2byte MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_IRON_TAIL, MOVE_DOUBLE_KICK
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 708
- .2byte SPECIES_MUK
- .2byte MOVE_SLUDGE_BOMB, MOVE_BRICK_BREAK, MOVE_GIGA_DRAIN, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_BRAVE
-
-@ 709
- .2byte SPECIES_GENGAR
- .2byte MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 710
- .2byte SPECIES_AMPHAROS
- .2byte MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_THUNDER_WAVE, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 711
- .2byte SPECIES_SCIZOR
- .2byte MOVE_SILVER_WIND, MOVE_SWORDS_DANCE, MOVE_AGILITY, MOVE_BATON_PASS
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 712
- .2byte SPECIES_HERACROSS
- .2byte MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_REVERSAL, MOVE_ENDURE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 713
- .2byte SPECIES_URSARING
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 714
- .2byte SPECIES_HOUNDOOM
- .2byte MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_CRUNCH, MOVE_SUNNY_DAY
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 715
- .2byte SPECIES_DONPHAN
- .2byte MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_IRON_TAIL
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 716
- .2byte SPECIES_CLAYDOL
- .2byte MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 717
- .2byte SPECIES_WAILORD
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_FISSURE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 718
- .2byte SPECIES_NINETALES
- .2byte MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 719
- .2byte SPECIES_MACHAMP
- .2byte MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 720
- .2byte SPECIES_SHUCKLE
- .2byte MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_WRAP, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_CAREFUL
-
-@ 721
- .2byte SPECIES_STEELIX
- .2byte MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 722
- .2byte SPECIES_TENTACRUEL
- .2byte MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 723
- .2byte SPECIES_AERODACTYL
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FIRE_BLAST, MOVE_BITE
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 724
- .2byte SPECIES_PORYGON2
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 725
- .2byte SPECIES_GARDEVOIR
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 726
- .2byte SPECIES_EXEGGUTOR
- .2byte MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 727
- .2byte SPECIES_STARMIE
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 728
- .2byte SPECIES_FLYGON
- .2byte MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_DOUBLE_EDGE, MOVE_CRUNCH
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 729
- .2byte SPECIES_VENUSAUR
- .2byte MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 730
- .2byte SPECIES_VAPOREON
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 731
- .2byte SPECIES_JOLTEON
- .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BITE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_TIMID
-
-@ 732
- .2byte SPECIES_FLAREON
- .2byte MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 733
- .2byte SPECIES_MEGANIUM
- .2byte MOVE_GIGA_DRAIN, MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_BODY_SLAM
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 734
- .2byte SPECIES_ESPEON
- .2byte MOVE_PSYCHIC, MOVE_BITE, MOVE_ATTRACT, MOVE_CALM_MIND
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 735
- .2byte SPECIES_UMBREON
- .2byte MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 736
- .2byte SPECIES_BLASTOISE
- .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 737
- .2byte SPECIES_FERALIGATR
- .2byte MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 738
- .2byte SPECIES_AGGRON
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 739
- .2byte SPECIES_BLAZIKEN
- .2byte MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_THUNDER_PUNCH, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 740
- .2byte SPECIES_WALREIN
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_SHEER_COLD
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 741
- .2byte SPECIES_SCEPTILE
- .2byte MOVE_LEAF_BLADE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_THUNDER_PUNCH
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 742
- .2byte SPECIES_CHARIZARD
- .2byte MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 743
- .2byte SPECIES_TYPHLOSION
- .2byte MOVE_OVERHEAT, MOVE_THUNDER_PUNCH, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 744
- .2byte SPECIES_LAPRAS
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_PSYCHIC
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 745
- .2byte SPECIES_CROBAT
- .2byte MOVE_SLUDGE_BOMB, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 746
- .2byte SPECIES_SWAMPERT
- .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 747
- .2byte SPECIES_GYARADOS
- .2byte MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_DRAGON_DANCE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 748
- .2byte SPECIES_SNORLAX
- .2byte MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_CURSE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 749
- .2byte SPECIES_KINGDRA
- .2byte MOVE_DOUBLE_EDGE, MOVE_ICE_BEAM, MOVE_DRAGON_DANCE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 750
- .2byte SPECIES_BLISSEY
- .2byte MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_COUNTER, MOVE_SOFT_BOILED
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BOLD
-
-@ 751
- .2byte SPECIES_MILOTIC
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_RECOVER, MOVE_MIRROR_COAT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 752
- .2byte SPECIES_ARCANINE
- .2byte MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_DOUBLE_EDGE
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_DOCILE
-
-@ 753
- .2byte SPECIES_SALAMENCE
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 754
- .2byte SPECIES_METAGROSS
- .2byte MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 755
- .2byte SPECIES_SLAKING
- .2byte MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_YAWN
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK
- .4byte NATURE_MODEST
-
-@ 756
- .2byte SPECIES_ARTICUNO
- .2byte MOVE_ICE_BEAM, MOVE_WATER_PULSE, MOVE_ICY_WIND, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 757
- .2byte SPECIES_ZAPDOS
- .2byte MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_DOCILE
-
-@ 758
- .2byte SPECIES_MOLTRES
- .2byte MOVE_FLAMETHROWER, MOVE_AERIAL_ACE, MOVE_MUD_SLAP, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 759
- .2byte SPECIES_RAIKOU
- .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 760
- .2byte SPECIES_ENTEI
- .2byte MOVE_FLAMETHROWER, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 761
- .2byte SPECIES_SUICUNE
- .2byte MOVE_SURF, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 762
- .2byte SPECIES_REGIROCK
- .2byte MOVE_SUPERPOWER, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 763
- .2byte SPECIES_REGICE
- .2byte MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_AMNESIA, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 764
- .2byte SPECIES_REGISTEEL
- .2byte MOVE_METAL_CLAW, MOVE_CURSE, MOVE_AMNESIA, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 765
- .2byte SPECIES_LATIAS
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 766
- .2byte SPECIES_LATIOS
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 767
- .2byte SPECIES_ARTICUNO
- .2byte MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 768
- .2byte SPECIES_ZAPDOS
- .2byte MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DRILL_PECK, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 769
- .2byte SPECIES_MOLTRES
- .2byte MOVE_OVERHEAT, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 770
- .2byte SPECIES_RAIKOU
- .2byte MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 771
- .2byte SPECIES_ENTEI
- .2byte MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 772
- .2byte SPECIES_SUICUNE
- .2byte MOVE_TOXIC, MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 773
- .2byte SPECIES_REGIROCK
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 774
- .2byte SPECIES_REGICE
- .2byte MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 775
- .2byte SPECIES_REGISTEEL
- .2byte MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 776
- .2byte SPECIES_LATIAS
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 777
- .2byte SPECIES_LATIOS
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 778
- .2byte SPECIES_ARTICUNO
- .2byte MOVE_ICE_BEAM, MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 779
- .2byte SPECIES_ZAPDOS
- .2byte MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_SUBSTITUTE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 780
- .2byte SPECIES_MOLTRES
- .2byte MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_DOUBLE_TEAM, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 781
- .2byte SPECIES_RAIKOU
- .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 782
- .2byte SPECIES_ENTEI
- .2byte MOVE_FLAMETHROWER, MOVE_DOUBLE_EDGE, MOVE_SWAGGER, MOVE_PSYCH_UP
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 783
- .2byte SPECIES_SUICUNE
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 784
- .2byte SPECIES_REGIROCK
- .2byte MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_CURSE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 785
- .2byte SPECIES_REGICE
- .2byte MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 786
- .2byte SPECIES_REGISTEEL
- .2byte MOVE_ANCIENT_POWER, MOVE_AMNESIA, MOVE_COUNTER, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 787
- .2byte SPECIES_LATIAS
- .2byte MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 788
- .2byte SPECIES_LATIOS
- .2byte MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 789
- .2byte SPECIES_ARTICUNO
- .2byte MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 790
- .2byte SPECIES_ZAPDOS
- .2byte MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 791
- .2byte SPECIES_MOLTRES
- .2byte MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SAFEGUARD
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 792
- .2byte SPECIES_RAIKOU
- .2byte MOVE_THUNDERBOLT, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 793
- .2byte SPECIES_ENTEI
- .2byte MOVE_FLAMETHROWER, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 794
- .2byte SPECIES_SUICUNE
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_BITE, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 795
- .2byte SPECIES_REGIROCK
- .2byte MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 796
- .2byte SPECIES_REGICE
- .2byte MOVE_ICE_BEAM, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 797
- .2byte SPECIES_REGISTEEL
- .2byte MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 798
- .2byte SPECIES_LATIAS
- .2byte MOVE_MIST_BALL, MOVE_SHADOW_BALL, MOVE_CHARM, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 799
- .2byte SPECIES_LATIOS
- .2byte MOVE_LUSTER_PURGE, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 800
- .2byte SPECIES_GENGAR
- .2byte MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 801
- .2byte SPECIES_GENGAR
- .2byte MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 802
- .2byte SPECIES_GENGAR
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 803
- .2byte SPECIES_GENGAR
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 804
- .2byte SPECIES_URSARING
- .2byte MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 805
- .2byte SPECIES_URSARING
- .2byte MOVE_HYPER_BEAM, MOVE_YAWN, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 806
- .2byte SPECIES_URSARING
- .2byte MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BULK_UP
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 807
- .2byte SPECIES_URSARING
- .2byte MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 808
- .2byte SPECIES_MACHAMP
- .2byte MOVE_CROSS_CHOP, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 809
- .2byte SPECIES_MACHAMP
- .2byte MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_ROCK_TOMB
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 810
- .2byte SPECIES_MACHAMP
- .2byte MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 811
- .2byte SPECIES_MACHAMP
- .2byte MOVE_REVENGE, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 812
- .2byte SPECIES_GARDEVOIR
- .2byte MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ENDURE, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 813
- .2byte SPECIES_GARDEVOIR
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_TIMID
-
-@ 814
- .2byte SPECIES_GARDEVOIR
- .2byte MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 815
- .2byte SPECIES_GARDEVOIR
- .2byte MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_ATTRACT, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 816
- .2byte SPECIES_STARMIE
- .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_RECOVER, MOVE_LIGHT_SCREEN
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 817
- .2byte SPECIES_STARMIE
- .2byte MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 818
- .2byte SPECIES_STARMIE
- .2byte MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 819
- .2byte SPECIES_STARMIE
- .2byte MOVE_SURF, MOVE_THUNDERBOLT, MOVE_COSMIC_POWER, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 820
- .2byte SPECIES_LAPRAS
- .2byte MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 821
- .2byte SPECIES_LAPRAS
- .2byte MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 822
- .2byte SPECIES_LAPRAS
- .2byte MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_REST, MOVE_SLEEP_TALK
- .byte BATTLE_FRONTIER_ITEM_LEPPA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 823
- .2byte SPECIES_LAPRAS
- .2byte MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_SING, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 824
- .2byte SPECIES_SNORLAX
- .2byte MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 825
- .2byte SPECIES_SNORLAX
- .2byte MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 826
- .2byte SPECIES_SNORLAX
- .2byte MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_CURSE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 827
- .2byte SPECIES_SNORLAX
- .2byte MOVE_RETURN, MOVE_SHADOW_BALL, MOVE_BELLY_DRUM, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 828
- .2byte SPECIES_SALAMENCE
- .2byte MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 829
- .2byte SPECIES_SALAMENCE
- .2byte MOVE_HEADBUTT, MOVE_AERIAL_ACE, MOVE_CRUNCH, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 830
- .2byte SPECIES_SALAMENCE
- .2byte MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 831
- .2byte SPECIES_SALAMENCE
- .2byte MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 832
- .2byte SPECIES_METAGROSS
- .2byte MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_JOLLY
-
-@ 833
- .2byte SPECIES_METAGROSS
- .2byte MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 834
- .2byte SPECIES_METAGROSS
- .2byte MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 835
- .2byte SPECIES_METAGROSS
- .2byte MOVE_METEOR_MASH, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 836
- .2byte SPECIES_REGIROCK
- .2byte MOVE_HYPER_BEAM, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 837
- .2byte SPECIES_REGIROCK
- .2byte MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ROCK_SLIDE, MOVE_EXPLOSION
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 838
- .2byte SPECIES_REGICE
- .2byte MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_COUNTER
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 839
- .2byte SPECIES_REGICE
- .2byte MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_SLEEP_TALK, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 840
- .2byte SPECIES_REGISTEEL
- .2byte MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 841
- .2byte SPECIES_REGISTEEL
- .2byte MOVE_SUPERPOWER, MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 842
- .2byte SPECIES_LATIAS
- .2byte MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 843
- .2byte SPECIES_LATIAS
- .2byte MOVE_MIST_BALL, MOVE_DRAGON_CLAW, MOVE_ATTRACT, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 844
- .2byte SPECIES_LATIAS
- .2byte MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 845
- .2byte SPECIES_LATIAS
- .2byte MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 846
- .2byte SPECIES_LATIOS
- .2byte MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 847
- .2byte SPECIES_LATIOS
- .2byte MOVE_LUSTER_PURGE, MOVE_SHADOW_BALL, MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 848
- .2byte SPECIES_LATIOS
- .2byte MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_DRAGON_DANCE, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 849
- .2byte SPECIES_LATIOS
- .2byte MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 850
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 851
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 852
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_HYPER_BEAM, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 853
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_HYPER_BEAM, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 854
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_OUTRAGE, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 855
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_FLAMETHROWER
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 856
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 857
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_BRICK_BREAK
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 858
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_THUNDER, MOVE_SURF, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 859
- .2byte SPECIES_DRAGONITE
- .2byte MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 860
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_THUNDERBOLT, MOVE_SURF
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 861
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_THUNDERBOLT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 862
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 863
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_CRUNCH, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 864
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 865
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 866
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CURSE
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 867
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 868
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 869
- .2byte SPECIES_TYRANITAR
- .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 870
- .2byte SPECIES_ARTICUNO
- .2byte MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_AGILITY, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 871
- .2byte SPECIES_ARTICUNO
- .2byte MOVE_ICE_BEAM, MOVE_AERIAL_ACE, MOVE_REFLECT, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 872
- .2byte SPECIES_ZAPDOS
- .2byte MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 873
- .2byte SPECIES_ZAPDOS
- .2byte MOVE_THUNDER, MOVE_DRILL_PECK, MOVE_RAIN_DANCE, MOVE_DOUBLE_EDGE
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 874
- .2byte SPECIES_MOLTRES
- .2byte MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_FACADE
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_DOCILE
-
-@ 875
- .2byte SPECIES_MOLTRES
- .2byte MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_STEEL_WING
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_DOCILE
-
-@ 876
- .2byte SPECIES_RAIKOU
- .2byte MOVE_THUNDERBOLT, MOVE_DOUBLE_EDGE, MOVE_ROAR, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 877
- .2byte SPECIES_RAIKOU
- .2byte MOVE_THUNDERBOLT, MOVE_CALM_MIND, MOVE_SUBSTITUTE, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 878
- .2byte SPECIES_ENTEI
- .2byte MOVE_FIRE_BLAST, MOVE_DOUBLE_EDGE, MOVE_ENDURE, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_DOCILE
-
-@ 879
- .2byte SPECIES_ENTEI
- .2byte MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_ROAR, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 880
- .2byte SPECIES_SUICUNE
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_ICY_WIND
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 881
- .2byte SPECIES_SUICUNE
- .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
diff --git a/data/battle_frontier/battle_frontier_trainer_mons.inc b/data/battle_frontier/battle_frontier_trainer_mons.inc
deleted file mode 100644
index b2c04128e..000000000
--- a/data/battle_frontier/battle_frontier_trainer_mons.inc
+++ /dev/null
@@ -1,14630 +0,0 @@
- .align 1
-gBattleFrontierTrainerMons_Brady:: @ 85CED2E
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Conner:: @ 85CEDAC
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Bradley:: @ 85CEE2A
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Cybil:: @ 85CEEA8
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Rodette:: @ 85CEF26
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Peggy:: @ 85CEFA4
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Keith:: @ 85CF022
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Grayson:: @ 85CF07C
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Glenn:: @ 85CF0D6
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Liliana:: @ 85CF130
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Elise:: @ 85CF18A
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Zoey:: @ 85CF1E4
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Manuel:: @ 85CF23E
- .2byte 5
- .2byte 20
- .2byte 21
- .2byte 25
- .2byte 27
- .2byte 35
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 53
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 100
- .2byte 102
- .2byte 106
- .2byte 110
- .2byte 112
- .2byte 114
- .2byte 119
- .2byte 121
- .2byte 124
- .2byte 127
- .2byte 146
- .2byte 147
- .2byte 154
- .2byte 158
- .2byte 160
- .2byte -1
-
-gBattleFrontierTrainerMons_Russ:: @ 85CF28A
- .2byte 5
- .2byte 20
- .2byte 21
- .2byte 25
- .2byte 27
- .2byte 35
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 53
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 100
- .2byte 102
- .2byte 106
- .2byte 110
- .2byte 112
- .2byte 114
- .2byte 119
- .2byte 121
- .2byte 124
- .2byte 127
- .2byte 146
- .2byte 147
- .2byte 154
- .2byte 158
- .2byte 160
- .2byte -1
-
-gBattleFrontierTrainerMons_Dustin:: @ 85CF2D6
- .2byte 5
- .2byte 20
- .2byte 21
- .2byte 25
- .2byte 27
- .2byte 35
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 53
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 100
- .2byte 102
- .2byte 106
- .2byte 110
- .2byte 112
- .2byte 114
- .2byte 119
- .2byte 121
- .2byte 124
- .2byte 127
- .2byte 146
- .2byte 147
- .2byte 154
- .2byte 158
- .2byte 160
- .2byte -1
-
-gBattleFrontierTrainerMons_Tina:: @ 85CF322
- .2byte 5
- .2byte 20
- .2byte 21
- .2byte 25
- .2byte 27
- .2byte 35
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 53
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 100
- .2byte 102
- .2byte 106
- .2byte 110
- .2byte 112
- .2byte 114
- .2byte 119
- .2byte 121
- .2byte 124
- .2byte 127
- .2byte 146
- .2byte 147
- .2byte 154
- .2byte 158
- .2byte 160
- .2byte -1
-
-gBattleFrontierTrainerMons_Gillian:: @ 85CF36E
- .2byte 5
- .2byte 20
- .2byte 21
- .2byte 25
- .2byte 27
- .2byte 35
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 53
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 100
- .2byte 102
- .2byte 106
- .2byte 110
- .2byte 112
- .2byte 114
- .2byte 119
- .2byte 121
- .2byte 124
- .2byte 127
- .2byte 146
- .2byte 147
- .2byte 154
- .2byte 158
- .2byte 160
- .2byte -1
-
-gBattleFrontierTrainerMons_Zoe:: @ 85CF3BA
- .2byte 5
- .2byte 20
- .2byte 21
- .2byte 25
- .2byte 27
- .2byte 35
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 53
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 100
- .2byte 102
- .2byte 106
- .2byte 110
- .2byte 112
- .2byte 114
- .2byte 119
- .2byte 121
- .2byte 124
- .2byte 127
- .2byte 146
- .2byte 147
- .2byte 154
- .2byte 158
- .2byte 160
- .2byte -1
-
-gBattleFrontierTrainerMons_Chen:: @ 85CF406
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Al:: @ 85CF46E
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Mitch:: @ 85CF4D6
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Anne:: @ 85CF53E
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Alize:: @ 85CF5A6
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Lauren:: @ 85CF60E
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Kipp:: @ 85CF676
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 14
- .2byte 19
- .2byte 28
- .2byte 35
- .2byte 42
- .2byte 45
- .2byte 48
- .2byte 50
- .2byte 55
- .2byte 59
- .2byte 60
- .2byte 68
- .2byte 73
- .2byte 83
- .2byte 84
- .2byte 86
- .2byte 87
- .2byte 90
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 106
- .2byte 109
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte -1
-
-gBattleFrontierTrainerMons_Jason:: @ 85CF6B8
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 14
- .2byte 19
- .2byte 28
- .2byte 35
- .2byte 42
- .2byte 45
- .2byte 48
- .2byte 50
- .2byte 55
- .2byte 59
- .2byte 60
- .2byte 68
- .2byte 73
- .2byte 83
- .2byte 84
- .2byte 86
- .2byte 87
- .2byte 90
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 106
- .2byte 109
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte -1
-
-gBattleFrontierTrainerMons_John:: @ 85CF6FA
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 14
- .2byte 19
- .2byte 28
- .2byte 35
- .2byte 42
- .2byte 45
- .2byte 48
- .2byte 50
- .2byte 55
- .2byte 59
- .2byte 60
- .2byte 68
- .2byte 73
- .2byte 83
- .2byte 84
- .2byte 86
- .2byte 87
- .2byte 90
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 106
- .2byte 109
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte -1
-
-gBattleFrontierTrainerMons_Ann:: @ 85CF73C
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 14
- .2byte 19
- .2byte 28
- .2byte 35
- .2byte 42
- .2byte 45
- .2byte 48
- .2byte 50
- .2byte 55
- .2byte 59
- .2byte 60
- .2byte 68
- .2byte 73
- .2byte 83
- .2byte 84
- .2byte 86
- .2byte 87
- .2byte 90
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 106
- .2byte 109
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte -1
-
-gBattleFrontierTrainerMons_Eileen:: @ 85CF77E
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 14
- .2byte 19
- .2byte 28
- .2byte 35
- .2byte 42
- .2byte 45
- .2byte 48
- .2byte 50
- .2byte 55
- .2byte 59
- .2byte 60
- .2byte 68
- .2byte 73
- .2byte 83
- .2byte 84
- .2byte 86
- .2byte 87
- .2byte 90
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 106
- .2byte 109
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte -1
-
-gBattleFrontierTrainerMons_Carlie:: @ 85CF7C0
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 14
- .2byte 19
- .2byte 28
- .2byte 35
- .2byte 42
- .2byte 45
- .2byte 48
- .2byte 50
- .2byte 55
- .2byte 59
- .2byte 60
- .2byte 68
- .2byte 73
- .2byte 83
- .2byte 84
- .2byte 86
- .2byte 87
- .2byte 90
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 106
- .2byte 109
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte -1
-
-gBattleFrontierTrainerMons_Gordon:: @ 85CF802
- .2byte 1
- .2byte 13
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 34
- .2byte 36
- .2byte 43
- .2byte 50
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 68
- .2byte 72
- .2byte 73
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 116
- .2byte 117
- .2byte 123
- .2byte 124
- .2byte 128
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 152
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Ayden:: @ 85CF868
- .2byte 1
- .2byte 13
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 34
- .2byte 36
- .2byte 43
- .2byte 50
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 68
- .2byte 72
- .2byte 73
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 116
- .2byte 117
- .2byte 123
- .2byte 124
- .2byte 128
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 152
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Marco:: @ 85CF8CE
- .2byte 1
- .2byte 13
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 34
- .2byte 36
- .2byte 43
- .2byte 50
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 68
- .2byte 72
- .2byte 73
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 116
- .2byte 117
- .2byte 123
- .2byte 124
- .2byte 128
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 152
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Cierra:: @ 85CF934
- .2byte 1
- .2byte 13
- .2byte 16
- .2byte 17
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 34
- .2byte 36
- .2byte 43
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 68
- .2byte 72
- .2byte 73
- .2byte 76
- .2byte 83
- .2byte 84
- .2byte 86
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 123
- .2byte 124
- .2byte 128
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Marcy:: @ 85CF994
- .2byte 1
- .2byte 13
- .2byte 16
- .2byte 17
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 34
- .2byte 36
- .2byte 43
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 68
- .2byte 72
- .2byte 73
- .2byte 76
- .2byte 83
- .2byte 84
- .2byte 86
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 123
- .2byte 124
- .2byte 128
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Kathy:: @ 85CF9F4
- .2byte 1
- .2byte 13
- .2byte 16
- .2byte 17
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 34
- .2byte 36
- .2byte 43
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 68
- .2byte 72
- .2byte 73
- .2byte 76
- .2byte 83
- .2byte 84
- .2byte 86
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 105
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 123
- .2byte 124
- .2byte 128
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Peyton:: @ 85CFA54
- .2byte 84
- .2byte 85
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 109
- .2byte 112
- .2byte 113
- .2byte 117
- .2byte 120
- .2byte 121
- .2byte 123
- .2byte 129
- .2byte 134
- .2byte 142
- .2byte 143
- .2byte 145
- .2byte 148
- .2byte 149
- .2byte 151
- .2byte 152
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Julian:: @ 85CFA9E
- .2byte 84
- .2byte 85
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 109
- .2byte 112
- .2byte 113
- .2byte 117
- .2byte 120
- .2byte 121
- .2byte 123
- .2byte 129
- .2byte 134
- .2byte 142
- .2byte 143
- .2byte 145
- .2byte 148
- .2byte 149
- .2byte 151
- .2byte 152
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Quinn:: @ 85CFAE8
- .2byte 84
- .2byte 85
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 109
- .2byte 112
- .2byte 113
- .2byte 117
- .2byte 120
- .2byte 121
- .2byte 123
- .2byte 129
- .2byte 134
- .2byte 142
- .2byte 143
- .2byte 145
- .2byte 148
- .2byte 149
- .2byte 151
- .2byte 152
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Haylee:: @ 85CFB32
- .2byte 1
- .2byte 5
- .2byte 6
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 28
- .2byte 29
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 54
- .2byte 56
- .2byte 59
- .2byte 61
- .2byte 65
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 71
- .2byte 72
- .2byte 79
- .2byte -1
-
-gBattleFrontierTrainerMons_Amanda:: @ 85CFB86
- .2byte 1
- .2byte 5
- .2byte 6
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 28
- .2byte 29
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 54
- .2byte 56
- .2byte 59
- .2byte 61
- .2byte 65
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 71
- .2byte 72
- .2byte 79
- .2byte -1
-
-gBattleFrontierTrainerMons_Stacy:: @ 85CFBDA
- .2byte 1
- .2byte 5
- .2byte 6
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 28
- .2byte 29
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 54
- .2byte 56
- .2byte 59
- .2byte 61
- .2byte 65
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 71
- .2byte 72
- .2byte 79
- .2byte -1
-
-gBattleFrontierTrainerMons_Rafael:: @ 85CFC2E
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Oliver:: @ 85CFCAC
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Payton:: @ 85CFD06
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Pamela:: @ 85CFD6E
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Eliza:: @ 85CFDEC
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Marisa:: @ 85CFE46
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Lewis:: @ 85CFEAE
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 8
- .2byte 9
- .2byte 21
- .2byte 27
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 52
- .2byte 57
- .2byte 58
- .2byte 80
- .2byte 112
- .2byte 132
- .2byte 141
- .2byte 153
- .2byte 154
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Yoshi:: @ 85CFEE2
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 11
- .2byte 12
- .2byte 21
- .2byte 27
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 52
- .2byte 57
- .2byte 58
- .2byte 80
- .2byte 112
- .2byte 132
- .2byte 141
- .2byte 153
- .2byte 154
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Destin:: @ 85CFF16
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 21
- .2byte 27
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 52
- .2byte 57
- .2byte 58
- .2byte 80
- .2byte 112
- .2byte 132
- .2byte 141
- .2byte 153
- .2byte 154
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Keon:: @ 85CFF46
- .2byte 5
- .2byte 21
- .2byte 25
- .2byte 27
- .2byte 35
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 52
- .2byte 53
- .2byte 57
- .2byte 58
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 100
- .2byte 102
- .2byte 106
- .2byte 110
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte 124
- .2byte 127
- .2byte 132
- .2byte 141
- .2byte 146
- .2byte 147
- .2byte 153
- .2byte 154
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Stuart:: @ 85CFFA8
- .2byte 5
- .2byte 21
- .2byte 25
- .2byte 27
- .2byte 35
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 52
- .2byte 53
- .2byte 57
- .2byte 58
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 100
- .2byte 102
- .2byte 106
- .2byte 110
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte 124
- .2byte 127
- .2byte 132
- .2byte 141
- .2byte 146
- .2byte 147
- .2byte 153
- .2byte 154
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Nestor:: @ 85D000A
- .2byte 5
- .2byte 21
- .2byte 25
- .2byte 27
- .2byte 35
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 52
- .2byte 53
- .2byte 57
- .2byte 58
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 100
- .2byte 102
- .2byte 106
- .2byte 110
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte 124
- .2byte 127
- .2byte 132
- .2byte 141
- .2byte 146
- .2byte 147
- .2byte 153
- .2byte 154
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Derrick:: @ 85D006C
- .2byte 21
- .2byte 27
- .2byte 29
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 52
- .2byte 57
- .2byte 58
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 80
- .2byte 92
- .2byte 102
- .2byte 112
- .2byte 125
- .2byte 129
- .2byte 132
- .2byte 140
- .2byte 141
- .2byte 153
- .2byte 154
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Bryson:: @ 85D00AA
- .2byte 21
- .2byte 27
- .2byte 29
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 52
- .2byte 57
- .2byte 58
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 80
- .2byte 92
- .2byte 102
- .2byte 112
- .2byte 125
- .2byte 129
- .2byte 132
- .2byte 140
- .2byte 141
- .2byte 153
- .2byte 154
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Clayton:: @ 85D00E8
- .2byte 21
- .2byte 27
- .2byte 29
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 52
- .2byte 57
- .2byte 58
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 69
- .2byte 80
- .2byte 92
- .2byte 102
- .2byte 112
- .2byte 125
- .2byte 129
- .2byte 132
- .2byte 140
- .2byte 141
- .2byte 153
- .2byte 154
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Trenton:: @ 85D0126
- .2byte 6
- .2byte 7
- .2byte 55
- .2byte 60
- .2byte 68
- .2byte 73
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 105
- .2byte 111
- .2byte 116
- .2byte 123
- .2byte 124
- .2byte 128
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 151
- .2byte -1
-
-gBattleFrontierTrainerMons_Jenson:: @ 85D014E
- .2byte 6
- .2byte 7
- .2byte 55
- .2byte 60
- .2byte 68
- .2byte 73
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 105
- .2byte 111
- .2byte 116
- .2byte 123
- .2byte 124
- .2byte 128
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 151
- .2byte -1
-
-gBattleFrontierTrainerMons_Wesley:: @ 85D0176
- .2byte 6
- .2byte 7
- .2byte 55
- .2byte 60
- .2byte 68
- .2byte 73
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 105
- .2byte 111
- .2byte 116
- .2byte 123
- .2byte 124
- .2byte 128
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 151
- .2byte -1
-
-gBattleFrontierTrainerMons_Anton:: @ 85D019E
- .2byte 31
- .2byte 39
- .2byte 58
- .2byte 67
- .2byte 70
- .2byte 74
- .2byte 75
- .2byte 78
- .2byte 85
- .2byte 104
- .2byte 108
- .2byte 120
- .2byte 122
- .2byte 133
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Lawson:: @ 85D01CC
- .2byte 31
- .2byte 39
- .2byte 58
- .2byte 67
- .2byte 70
- .2byte 74
- .2byte 75
- .2byte 78
- .2byte 85
- .2byte 104
- .2byte 108
- .2byte 120
- .2byte 122
- .2byte 133
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Sammy:: @ 85D01FA
- .2byte 31
- .2byte 39
- .2byte 58
- .2byte 67
- .2byte 70
- .2byte 74
- .2byte 75
- .2byte 78
- .2byte 85
- .2byte 104
- .2byte 108
- .2byte 120
- .2byte 122
- .2byte 133
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Arnie:: @ 85D0228
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Adrian:: @ 85D02A6
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Tristan:: @ 85D0300
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Juliana:: @ 85D0368
- .2byte 0
- .2byte 14
- .2byte 19
- .2byte 28
- .2byte 42
- .2byte 58
- .2byte 59
- .2byte 67
- .2byte 68
- .2byte 85
- .2byte 118
- .2byte 120
- .2byte 123
- .2byte 155
- .2byte 156
- .2byte 193
- .2byte -1
-
-gBattleFrontierTrainerMons_Rylee:: @ 85D038A
- .2byte 0
- .2byte 14
- .2byte 19
- .2byte 28
- .2byte 42
- .2byte 58
- .2byte 59
- .2byte 67
- .2byte 68
- .2byte 85
- .2byte 118
- .2byte 120
- .2byte 123
- .2byte 155
- .2byte 156
- .2byte 193
- .2byte -1
-
-gBattleFrontierTrainerMons_Chelsea:: @ 85D03AC
- .2byte 0
- .2byte 14
- .2byte 19
- .2byte 28
- .2byte 42
- .2byte 58
- .2byte 59
- .2byte 67
- .2byte 68
- .2byte 85
- .2byte 118
- .2byte 120
- .2byte 123
- .2byte 155
- .2byte 156
- .2byte 193
- .2byte -1
-
-gBattleFrontierTrainerMons_Danela:: @ 85D03CE
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 10
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte -1
-
-gBattleFrontierTrainerMons_Lizbeth:: @ 85D044C
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte -1
-
-gBattleFrontierTrainerMons_Amelia:: @ 85D04A6
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte -1
-
-gBattleFrontierTrainerMons_Jillian:: @ 85D050E
- .2byte 0
- .2byte 5
- .2byte 18
- .2byte 19
- .2byte 29
- .2byte 35
- .2byte 48
- .2byte 50
- .2byte 52
- .2byte 61
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 84
- .2byte 90
- .2byte 94
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 106
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte 125
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 140
- .2byte -1
-
-gBattleFrontierTrainerMons_Abbie:: @ 85D054A
- .2byte 0
- .2byte 5
- .2byte 18
- .2byte 19
- .2byte 29
- .2byte 35
- .2byte 48
- .2byte 50
- .2byte 52
- .2byte 61
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 84
- .2byte 90
- .2byte 94
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 106
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte 125
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 140
- .2byte -1
-
-gBattleFrontierTrainerMons_Briana:: @ 85D0586
- .2byte 0
- .2byte 5
- .2byte 18
- .2byte 19
- .2byte 29
- .2byte 35
- .2byte 48
- .2byte 50
- .2byte 52
- .2byte 61
- .2byte 69
- .2byte 75
- .2byte 78
- .2byte 84
- .2byte 90
- .2byte 94
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 106
- .2byte 112
- .2byte 114
- .2byte 121
- .2byte 125
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 140
- .2byte -1
-
-gBattleFrontierTrainerMons_Antonio:: @ 85D05C2
- .2byte 5
- .2byte 10
- .2byte 20
- .2byte 35
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 66
- .2byte 71
- .2byte 75
- .2byte 77
- .2byte 78
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 106
- .2byte 108
- .2byte 112
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 119
- .2byte 121
- .2byte 122
- .2byte 143
- .2byte 148
- .2byte 152
- .2byte -1
-
-gBattleFrontierTrainerMons_Jaden:: @ 85D0602
- .2byte 5
- .2byte 10
- .2byte 20
- .2byte 35
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 66
- .2byte 71
- .2byte 75
- .2byte 77
- .2byte 78
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 106
- .2byte 108
- .2byte 112
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 119
- .2byte 121
- .2byte 122
- .2byte 143
- .2byte 148
- .2byte 152
- .2byte -1
-
-gBattleFrontierTrainerMons_Dakota:: @ 85D0642
- .2byte 5
- .2byte 10
- .2byte 20
- .2byte 35
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 66
- .2byte 71
- .2byte 75
- .2byte 77
- .2byte 78
- .2byte 84
- .2byte 90
- .2byte 92
- .2byte 99
- .2byte 106
- .2byte 108
- .2byte 112
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 119
- .2byte 121
- .2byte 122
- .2byte 143
- .2byte 148
- .2byte 152
- .2byte -1
-
-gBattleFrontierTrainerMons_Brayden:: @ 85D0682
- .2byte 1
- .2byte 13
- .2byte 16
- .2byte 17
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 72
- .2byte 91
- .2byte 93
- .2byte 95
- .2byte 106
- .2byte 107
- .2byte 113
- .2byte 117
- .2byte 118
- .2byte 135
- .2byte 137
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte -1
-
-gBattleFrontierTrainerMons_Corson:: @ 85D06C8
- .2byte 1
- .2byte 13
- .2byte 16
- .2byte 17
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 72
- .2byte 91
- .2byte 93
- .2byte 95
- .2byte 106
- .2byte 107
- .2byte 113
- .2byte 117
- .2byte 118
- .2byte 135
- .2byte 137
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte -1
-
-gBattleFrontierTrainerMons_Trevin:: @ 85D070E
- .2byte 1
- .2byte 13
- .2byte 16
- .2byte 17
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 72
- .2byte 91
- .2byte 93
- .2byte 95
- .2byte 106
- .2byte 107
- .2byte 113
- .2byte 117
- .2byte 118
- .2byte 135
- .2byte 137
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte -1
-
-gBattleFrontierTrainerMons_Patrick:: @ 85D0754
- .2byte 15
- .2byte 22
- .2byte 50
- .2byte 67
- .2byte 70
- .2byte 71
- .2byte 74
- .2byte 77
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 104
- .2byte 109
- .2byte 111
- .2byte 120
- .2byte 124
- .2byte 128
- .2byte 131
- .2byte 133
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 151
- .2byte 155
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Kaden:: @ 85D0796
- .2byte 15
- .2byte 22
- .2byte 50
- .2byte 67
- .2byte 70
- .2byte 71
- .2byte 74
- .2byte 77
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 104
- .2byte 109
- .2byte 111
- .2byte 120
- .2byte 124
- .2byte 128
- .2byte 131
- .2byte 133
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 151
- .2byte 155
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Maxwell:: @ 85D07D8
- .2byte 15
- .2byte 22
- .2byte 50
- .2byte 67
- .2byte 70
- .2byte 71
- .2byte 74
- .2byte 77
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 104
- .2byte 109
- .2byte 111
- .2byte 120
- .2byte 124
- .2byte 128
- .2byte 131
- .2byte 133
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 151
- .2byte 155
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Daryl:: @ 85D081A
- .2byte 15
- .2byte 22
- .2byte 31
- .2byte 39
- .2byte 50
- .2byte 51
- .2byte 58
- .2byte 67
- .2byte 70
- .2byte 74
- .2byte 75
- .2byte 81
- .2byte 82
- .2byte 85
- .2byte 104
- .2byte 120
- .2byte 122
- .2byte 132
- .2byte 133
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 144
- .2byte 150
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Kenneth:: @ 85D0852
- .2byte 15
- .2byte 22
- .2byte 31
- .2byte 39
- .2byte 50
- .2byte 51
- .2byte 58
- .2byte 67
- .2byte 70
- .2byte 74
- .2byte 75
- .2byte 81
- .2byte 82
- .2byte 85
- .2byte 104
- .2byte 120
- .2byte 122
- .2byte 132
- .2byte 133
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 144
- .2byte 150
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Rich:: @ 85D088A
- .2byte 15
- .2byte 22
- .2byte 31
- .2byte 39
- .2byte 50
- .2byte 51
- .2byte 58
- .2byte 67
- .2byte 70
- .2byte 74
- .2byte 75
- .2byte 81
- .2byte 82
- .2byte 85
- .2byte 104
- .2byte 120
- .2byte 122
- .2byte 132
- .2byte 133
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 144
- .2byte 150
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Caden:: @ 85D08C2
- .2byte 30
- .2byte 62
- .2byte 63
- .2byte 65
- .2byte 70
- .2byte 74
- .2byte 77
- .2byte 78
- .2byte 85
- .2byte 88
- .2byte 89
- .2byte 95
- .2byte 108
- .2byte 119
- .2byte 122
- .2byte 133
- .2byte 136
- .2byte 149
- .2byte 150
- .2byte 152
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Marlon:: @ 85D08EE
- .2byte 30
- .2byte 62
- .2byte 63
- .2byte 65
- .2byte 70
- .2byte 74
- .2byte 77
- .2byte 78
- .2byte 85
- .2byte 88
- .2byte 89
- .2byte 95
- .2byte 108
- .2byte 119
- .2byte 122
- .2byte 133
- .2byte 136
- .2byte 149
- .2byte 150
- .2byte 152
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Nash:: @ 85D091A
- .2byte 30
- .2byte 62
- .2byte 63
- .2byte 65
- .2byte 70
- .2byte 74
- .2byte 77
- .2byte 78
- .2byte 85
- .2byte 88
- .2byte 89
- .2byte 95
- .2byte 108
- .2byte 119
- .2byte 122
- .2byte 133
- .2byte 136
- .2byte 149
- .2byte 150
- .2byte 152
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Robby:: @ 85D0946
- .2byte 1
- .2byte 13
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 43
- .2byte 44
- .2byte 50
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 67
- .2byte 70
- .2byte 72
- .2byte 74
- .2byte 75
- .2byte 81
- .2byte 82
- .2byte 85
- .2byte 91
- .2byte 93
- .2byte 104
- .2byte 107
- .2byte 113
- .2byte 117
- .2byte 120
- .2byte 132
- .2byte 133
- .2byte 135
- .2byte 137
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Reece:: @ 85D09A0
- .2byte 1
- .2byte 13
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 43
- .2byte 44
- .2byte 50
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 67
- .2byte 70
- .2byte 72
- .2byte 74
- .2byte 75
- .2byte 81
- .2byte 82
- .2byte 85
- .2byte 91
- .2byte 93
- .2byte 104
- .2byte 107
- .2byte 113
- .2byte 117
- .2byte 120
- .2byte 132
- .2byte 133
- .2byte 135
- .2byte 137
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Kathryn:: @ 85D09FA
- .2byte 1
- .2byte 13
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 43
- .2byte 44
- .2byte 50
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 67
- .2byte 70
- .2byte 72
- .2byte 74
- .2byte 75
- .2byte 81
- .2byte 82
- .2byte 85
- .2byte 91
- .2byte 93
- .2byte 104
- .2byte 107
- .2byte 113
- .2byte 117
- .2byte 120
- .2byte 132
- .2byte 133
- .2byte 135
- .2byte 137
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Ellen:: @ 85D0A54
- .2byte 1
- .2byte 13
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 43
- .2byte 44
- .2byte 50
- .2byte 51
- .2byte 54
- .2byte 56
- .2byte 67
- .2byte 70
- .2byte 72
- .2byte 74
- .2byte 75
- .2byte 81
- .2byte 82
- .2byte 85
- .2byte 91
- .2byte 93
- .2byte 104
- .2byte 107
- .2byte 113
- .2byte 117
- .2byte 120
- .2byte 132
- .2byte 133
- .2byte 135
- .2byte 137
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 156
- .2byte -1
-
-gBattleFrontierTrainerMons_Ramon:: @ 85D0AAE
- .2byte 15
- .2byte 22
- .2byte 50
- .2byte 71
- .2byte 72
- .2byte 76
- .2byte 77
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 117
- .2byte 118
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Arthur:: @ 85D0AF0
- .2byte 15
- .2byte 22
- .2byte 50
- .2byte 71
- .2byte 72
- .2byte 76
- .2byte 77
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 117
- .2byte 118
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Alondra:: @ 85D0B32
- .2byte 15
- .2byte 22
- .2byte 50
- .2byte 71
- .2byte 72
- .2byte 76
- .2byte 77
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 117
- .2byte 118
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Adriana:: @ 85D0B74
- .2byte 15
- .2byte 22
- .2byte 50
- .2byte 71
- .2byte 72
- .2byte 76
- .2byte 77
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 87
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 103
- .2byte 107
- .2byte 109
- .2byte 111
- .2byte 113
- .2byte 117
- .2byte 118
- .2byte 131
- .2byte 134
- .2byte 138
- .2byte 139
- .2byte 142
- .2byte 144
- .2byte 145
- .2byte 151
- .2byte 155
- .2byte -1
-
-gBattleFrontierTrainerMons_Malik:: @ 85D0BB6
- .2byte 10
- .2byte 15
- .2byte 22
- .2byte 49
- .2byte 50
- .2byte 64
- .2byte 66
- .2byte 71
- .2byte 72
- .2byte 77
- .2byte 78
- .2byte 81
- .2byte 82
- .2byte 91
- .2byte 93
- .2byte 107
- .2byte 108
- .2byte 113
- .2byte 115
- .2byte 117
- .2byte 122
- .2byte 135
- .2byte 137
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 148
- .2byte 152
- .2byte -1
-
-gBattleFrontierTrainerMons_Jill:: @ 85D0BF2
- .2byte 10
- .2byte 15
- .2byte 22
- .2byte 49
- .2byte 50
- .2byte 64
- .2byte 66
- .2byte 71
- .2byte 72
- .2byte 77
- .2byte 78
- .2byte 81
- .2byte 82
- .2byte 91
- .2byte 93
- .2byte 107
- .2byte 108
- .2byte 113
- .2byte 115
- .2byte 117
- .2byte 122
- .2byte 135
- .2byte 137
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 148
- .2byte 152
- .2byte -1
-
-gBattleFrontierTrainerMons_Erik:: @ 85D0C2E
- .2byte 162
- .2byte 164
- .2byte 168
- .2byte 178
- .2byte 183
- .2byte 184
- .2byte 189
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 203
- .2byte 204
- .2byte 207
- .2byte 210
- .2byte 213
- .2byte 214
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 224
- .2byte 227
- .2byte 231
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 238
- .2byte 240
- .2byte 243
- .2byte 245
- .2byte 246
- .2byte 250
- .2byte 263
- .2byte -1
-
-gBattleFrontierTrainerMons_Yazmin:: @ 85D0C74
- .2byte 162
- .2byte 164
- .2byte 168
- .2byte 178
- .2byte 183
- .2byte 184
- .2byte 189
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 203
- .2byte 204
- .2byte 207
- .2byte 210
- .2byte 213
- .2byte 214
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 224
- .2byte 227
- .2byte 231
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 238
- .2byte 240
- .2byte 243
- .2byte 245
- .2byte 246
- .2byte 250
- .2byte 263
- .2byte -1
-
-gBattleFrontierTrainerMons_Jamal:: @ 85D0CBA
- .2byte 170
- .2byte 176
- .2byte 178
- .2byte 182
- .2byte 189
- .2byte 190
- .2byte 192
- .2byte 196
- .2byte 211
- .2byte 212
- .2byte 213
- .2byte 219
- .2byte 228
- .2byte 230
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 236
- .2byte 242
- .2byte 245
- .2byte 249
- .2byte 253
- .2byte 256
- .2byte 257
- .2byte 258
- .2byte 259
- .2byte 260
- .2byte 261
- .2byte 262
- .2byte 265
- .2byte 266
- .2byte -1
-
-gBattleFrontierTrainerMons_Leslie:: @ 85D0CFA
- .2byte 170
- .2byte 176
- .2byte 178
- .2byte 182
- .2byte 189
- .2byte 190
- .2byte 192
- .2byte 196
- .2byte 211
- .2byte 212
- .2byte 213
- .2byte 219
- .2byte 228
- .2byte 230
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 236
- .2byte 242
- .2byte 245
- .2byte 249
- .2byte 253
- .2byte 256
- .2byte 257
- .2byte 258
- .2byte 259
- .2byte 260
- .2byte 261
- .2byte 262
- .2byte 265
- .2byte 266
- .2byte -1
-
-gBattleFrontierTrainerMons_Dave:: @ 85D0D3A
- .2byte 162
- .2byte 164
- .2byte 168
- .2byte 178
- .2byte 183
- .2byte 186
- .2byte 187
- .2byte 189
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 203
- .2byte 204
- .2byte 206
- .2byte 207
- .2byte 214
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 224
- .2byte 227
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 244
- .2byte 246
- .2byte 250
- .2byte -1
-
-gBattleFrontierTrainerMons_Carlo:: @ 85D0D7A
- .2byte 162
- .2byte 164
- .2byte 168
- .2byte 178
- .2byte 183
- .2byte 186
- .2byte 187
- .2byte 189
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 203
- .2byte 204
- .2byte 206
- .2byte 207
- .2byte 214
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 224
- .2byte 227
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 244
- .2byte 246
- .2byte 250
- .2byte -1
-
-gBattleFrontierTrainerMons_Emilia:: @ 85D0DBA
- .2byte 162
- .2byte 164
- .2byte 168
- .2byte 178
- .2byte 183
- .2byte 186
- .2byte 187
- .2byte 189
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 203
- .2byte 204
- .2byte 206
- .2byte 207
- .2byte 214
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 224
- .2byte 227
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 244
- .2byte 246
- .2byte 250
- .2byte -1
-
-gBattleFrontierTrainerMons_Dalia:: @ 85D0DFA
- .2byte 162
- .2byte 164
- .2byte 168
- .2byte 178
- .2byte 183
- .2byte 186
- .2byte 187
- .2byte 189
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 203
- .2byte 204
- .2byte 206
- .2byte 207
- .2byte 214
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 224
- .2byte 227
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 244
- .2byte 246
- .2byte 250
- .2byte -1
-
-gBattleFrontierTrainerMons_Hitomi:: @ 85D0E3A
- .2byte 164
- .2byte 166
- .2byte 175
- .2byte 178
- .2byte 181
- .2byte 189
- .2byte 191
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 202
- .2byte 203
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 210
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 225
- .2byte 227
- .2byte 230
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 241
- .2byte 246
- .2byte 247
- .2byte 252
- .2byte 254
- .2byte 262
- .2byte -1
-
-gBattleFrontierTrainerMons_Ricardo:: @ 85D0E8C
- .2byte 164
- .2byte 166
- .2byte 175
- .2byte 178
- .2byte 181
- .2byte 189
- .2byte 191
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 202
- .2byte 203
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 210
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 225
- .2byte 227
- .2byte 230
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 241
- .2byte 246
- .2byte 247
- .2byte 252
- .2byte 254
- .2byte 262
- .2byte -1
-
-gBattleFrontierTrainerMons_Shizuka:: @ 85D0EDE
- .2byte 164
- .2byte 166
- .2byte 175
- .2byte 178
- .2byte 181
- .2byte 189
- .2byte 191
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 202
- .2byte 203
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 210
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 225
- .2byte 227
- .2byte 230
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 241
- .2byte 246
- .2byte 247
- .2byte 252
- .2byte 254
- .2byte 262
- .2byte -1
-
-gBattleFrontierTrainerMons_Joana:: @ 85D0F30
- .2byte 164
- .2byte 166
- .2byte 175
- .2byte 178
- .2byte 181
- .2byte 189
- .2byte 191
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 202
- .2byte 203
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 210
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 225
- .2byte 227
- .2byte 230
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 241
- .2byte 246
- .2byte 247
- .2byte 252
- .2byte 254
- .2byte 262
- .2byte -1
-
-gBattleFrontierTrainerMons_Kelly:: @ 85D0F82
- .2byte 164
- .2byte 166
- .2byte 175
- .2byte 178
- .2byte 181
- .2byte 189
- .2byte 191
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 202
- .2byte 203
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 210
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 225
- .2byte 227
- .2byte 230
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 241
- .2byte 246
- .2byte 247
- .2byte 252
- .2byte 254
- .2byte 262
- .2byte -1
-
-gBattleFrontierTrainerMons_Rayna:: @ 85D0FD4
- .2byte 164
- .2byte 166
- .2byte 175
- .2byte 178
- .2byte 181
- .2byte 189
- .2byte 191
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 197
- .2byte 199
- .2byte 200
- .2byte 202
- .2byte 203
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 210
- .2byte 215
- .2byte 218
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 225
- .2byte 227
- .2byte 230
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 240
- .2byte 241
- .2byte 246
- .2byte 247
- .2byte 252
- .2byte 254
- .2byte 262
- .2byte -1
-
-gBattleFrontierTrainerMons_Evan:: @ 85D1026
- .2byte 162
- .2byte 163
- .2byte 164
- .2byte 165
- .2byte 166
- .2byte 167
- .2byte 168
- .2byte 169
- .2byte 170
- .2byte 171
- .2byte 172
- .2byte 173
- .2byte 174
- .2byte 175
- .2byte 176
- .2byte 177
- .2byte 178
- .2byte 179
- .2byte 180
- .2byte 181
- .2byte 182
- .2byte 183
- .2byte 184
- .2byte 185
- .2byte 186
- .2byte 187
- .2byte 188
- .2byte 189
- .2byte 190
- .2byte 191
- .2byte 192
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 196
- .2byte 197
- .2byte 198
- .2byte 199
- .2byte -1
-
-gBattleFrontierTrainerMons_Jordan:: @ 85D1074
- .2byte 200
- .2byte 201
- .2byte 202
- .2byte 203
- .2byte 204
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 208
- .2byte 209
- .2byte 210
- .2byte 211
- .2byte 212
- .2byte 213
- .2byte 214
- .2byte 215
- .2byte 216
- .2byte 217
- .2byte 218
- .2byte 219
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 224
- .2byte 225
- .2byte 226
- .2byte 227
- .2byte 228
- .2byte 229
- .2byte 230
- .2byte 231
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte -1
-
-gBattleFrontierTrainerMons_Joel:: @ 85D10C0
- .2byte 237
- .2byte 238
- .2byte 239
- .2byte 240
- .2byte 241
- .2byte 242
- .2byte 243
- .2byte 244
- .2byte 245
- .2byte 246
- .2byte 247
- .2byte 248
- .2byte 249
- .2byte 250
- .2byte 251
- .2byte 252
- .2byte 253
- .2byte 254
- .2byte 255
- .2byte 256
- .2byte 257
- .2byte 258
- .2byte 259
- .2byte 260
- .2byte 261
- .2byte 262
- .2byte 263
- .2byte 264
- .2byte 265
- .2byte 266
- .2byte -1
-
-gBattleFrontierTrainerMons_Kristen:: @ 85D10FE
- .2byte 162
- .2byte 163
- .2byte 164
- .2byte 165
- .2byte 166
- .2byte 167
- .2byte 168
- .2byte 169
- .2byte 170
- .2byte 171
- .2byte 172
- .2byte 173
- .2byte 174
- .2byte 175
- .2byte 176
- .2byte 177
- .2byte 178
- .2byte 179
- .2byte 180
- .2byte 181
- .2byte 182
- .2byte 183
- .2byte 184
- .2byte 185
- .2byte 186
- .2byte 187
- .2byte 188
- .2byte 189
- .2byte 190
- .2byte 191
- .2byte 192
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 196
- .2byte 197
- .2byte 198
- .2byte 199
- .2byte -1
-
-gBattleFrontierTrainerMons_Selphy:: @ 85D114C
- .2byte 200
- .2byte 201
- .2byte 202
- .2byte 203
- .2byte 204
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 208
- .2byte 209
- .2byte 210
- .2byte 211
- .2byte 212
- .2byte 213
- .2byte 214
- .2byte 215
- .2byte 216
- .2byte 217
- .2byte 218
- .2byte 219
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 224
- .2byte 225
- .2byte 226
- .2byte 227
- .2byte 228
- .2byte 229
- .2byte 230
- .2byte 231
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte -1
-
-gBattleFrontierTrainerMons_Chloe:: @ 85D1198
- .2byte 237
- .2byte 238
- .2byte 239
- .2byte 240
- .2byte 241
- .2byte 242
- .2byte 243
- .2byte 244
- .2byte 245
- .2byte 246
- .2byte 247
- .2byte 248
- .2byte 249
- .2byte 250
- .2byte 251
- .2byte 252
- .2byte 253
- .2byte 254
- .2byte 255
- .2byte 256
- .2byte 257
- .2byte 258
- .2byte 259
- .2byte 260
- .2byte 261
- .2byte 262
- .2byte 263
- .2byte 264
- .2byte 265
- .2byte 266
- .2byte -1
-
-gBattleFrontierTrainerMons_Norton:: @ 85D11D6
- .2byte 267
- .2byte 268
- .2byte 273
- .2byte 274
- .2byte 276
- .2byte 284
- .2byte 289
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 307
- .2byte 308
- .2byte 311
- .2byte 312
- .2byte 314
- .2byte 317
- .2byte 325
- .2byte 327
- .2byte 328
- .2byte 329
- .2byte 331
- .2byte 332
- .2byte 340
- .2byte 342
- .2byte 347
- .2byte 349
- .2byte 351
- .2byte 352
- .2byte 354
- .2byte 356
- .2byte 359
- .2byte 363
- .2byte 370
- .2byte -1
-
-gBattleFrontierTrainerMons_Lukas:: @ 85D121A
- .2byte 267
- .2byte 268
- .2byte 273
- .2byte 274
- .2byte 276
- .2byte 284
- .2byte 289
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 307
- .2byte 308
- .2byte 311
- .2byte 312
- .2byte 314
- .2byte 317
- .2byte 325
- .2byte 327
- .2byte 328
- .2byte 329
- .2byte 331
- .2byte 332
- .2byte 340
- .2byte 342
- .2byte 347
- .2byte 349
- .2byte 351
- .2byte 352
- .2byte 354
- .2byte 356
- .2byte 359
- .2byte 363
- .2byte 370
- .2byte -1
-
-gBattleFrontierTrainerMons_Zach:: @ 85D125E
- .2byte 267
- .2byte 268
- .2byte 273
- .2byte 274
- .2byte 276
- .2byte 284
- .2byte 289
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 307
- .2byte 308
- .2byte 311
- .2byte 312
- .2byte 314
- .2byte 317
- .2byte 325
- .2byte 327
- .2byte 328
- .2byte 329
- .2byte 331
- .2byte 332
- .2byte 340
- .2byte 342
- .2byte 347
- .2byte 349
- .2byte 351
- .2byte 352
- .2byte 354
- .2byte 356
- .2byte 359
- .2byte 363
- .2byte 370
- .2byte -1
-
-gBattleFrontierTrainerMons_Kaitlyn:: @ 85D12A2
- .2byte 267
- .2byte 268
- .2byte 273
- .2byte 274
- .2byte 276
- .2byte 284
- .2byte 289
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 307
- .2byte 308
- .2byte 311
- .2byte 312
- .2byte 314
- .2byte 317
- .2byte 325
- .2byte 327
- .2byte 328
- .2byte 329
- .2byte 331
- .2byte 332
- .2byte 340
- .2byte 342
- .2byte 347
- .2byte 349
- .2byte 351
- .2byte 352
- .2byte 354
- .2byte 356
- .2byte 359
- .2byte 363
- .2byte 370
- .2byte -1
-
-gBattleFrontierTrainerMons_Breanna:: @ 85D12E6
- .2byte 267
- .2byte 268
- .2byte 273
- .2byte 274
- .2byte 276
- .2byte 284
- .2byte 289
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 307
- .2byte 308
- .2byte 311
- .2byte 312
- .2byte 314
- .2byte 317
- .2byte 325
- .2byte 327
- .2byte 328
- .2byte 329
- .2byte 331
- .2byte 332
- .2byte 340
- .2byte 342
- .2byte 347
- .2byte 349
- .2byte 351
- .2byte 352
- .2byte 354
- .2byte 356
- .2byte 359
- .2byte 363
- .2byte 370
- .2byte -1
-
-gBattleFrontierTrainerMons_Kendra:: @ 85D132A
- .2byte 267
- .2byte 268
- .2byte 273
- .2byte 274
- .2byte 276
- .2byte 284
- .2byte 289
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 307
- .2byte 308
- .2byte 311
- .2byte 312
- .2byte 314
- .2byte 317
- .2byte 325
- .2byte 327
- .2byte 328
- .2byte 329
- .2byte 331
- .2byte 332
- .2byte 340
- .2byte 342
- .2byte 347
- .2byte 349
- .2byte 351
- .2byte 352
- .2byte 354
- .2byte 356
- .2byte 359
- .2byte 363
- .2byte 370
- .2byte -1
-
-gBattleFrontierTrainerMons_Molly:: @ 85D136E
- .2byte 268
- .2byte 270
- .2byte 272
- .2byte 274
- .2byte 282
- .2byte 284
- .2byte 289
- .2byte 290
- .2byte 303
- .2byte 307
- .2byte 311
- .2byte 314
- .2byte 317
- .2byte 322
- .2byte 327
- .2byte 328
- .2byte 331
- .2byte 336
- .2byte 340
- .2byte 342
- .2byte 344
- .2byte 347
- .2byte 352
- .2byte 353
- .2byte 354
- .2byte 356
- .2byte 359
- .2byte -1
-
-gBattleFrontierTrainerMons_Jazmin:: @ 85D13A6
- .2byte 268
- .2byte 270
- .2byte 272
- .2byte 274
- .2byte 282
- .2byte 284
- .2byte 289
- .2byte 290
- .2byte 303
- .2byte 307
- .2byte 311
- .2byte 314
- .2byte 317
- .2byte 322
- .2byte 327
- .2byte 328
- .2byte 331
- .2byte 336
- .2byte 340
- .2byte 342
- .2byte 344
- .2byte 347
- .2byte 352
- .2byte 353
- .2byte 354
- .2byte 356
- .2byte 359
- .2byte -1
-
-gBattleFrontierTrainerMons_Kelsey:: @ 85D13DE
- .2byte 268
- .2byte 270
- .2byte 272
- .2byte 274
- .2byte 282
- .2byte 284
- .2byte 289
- .2byte 290
- .2byte 303
- .2byte 307
- .2byte 311
- .2byte 314
- .2byte 317
- .2byte 322
- .2byte 327
- .2byte 328
- .2byte 331
- .2byte 336
- .2byte 340
- .2byte 342
- .2byte 344
- .2byte 347
- .2byte 352
- .2byte 353
- .2byte 354
- .2byte 356
- .2byte 359
- .2byte -1
-
-gBattleFrontierTrainerMons_Jalen:: @ 85D1416
- .2byte 269
- .2byte 271
- .2byte 275
- .2byte 279
- .2byte 280
- .2byte 281
- .2byte 283
- .2byte 285
- .2byte 286
- .2byte 287
- .2byte 293
- .2byte 294
- .2byte 295
- .2byte 300
- .2byte 302
- .2byte 307
- .2byte 310
- .2byte 311
- .2byte 320
- .2byte 322
- .2byte 326
- .2byte 330
- .2byte 332
- .2byte 335
- .2byte 344
- .2byte 345
- .2byte 346
- .2byte 348
- .2byte 350
- .2byte 353
- .2byte 357
- .2byte -1
-
-gBattleFrontierTrainerMons_Griffen:: @ 85D1456
- .2byte 269
- .2byte 271
- .2byte 275
- .2byte 279
- .2byte 280
- .2byte 281
- .2byte 283
- .2byte 285
- .2byte 286
- .2byte 287
- .2byte 293
- .2byte 294
- .2byte 295
- .2byte 300
- .2byte 302
- .2byte 307
- .2byte 310
- .2byte 311
- .2byte 320
- .2byte 322
- .2byte 326
- .2byte 330
- .2byte 332
- .2byte 335
- .2byte 344
- .2byte 345
- .2byte 346
- .2byte 348
- .2byte 350
- .2byte 353
- .2byte 357
- .2byte -1
-
-gBattleFrontierTrainerMons_Xander:: @ 85D1496
- .2byte 269
- .2byte 271
- .2byte 275
- .2byte 279
- .2byte 280
- .2byte 281
- .2byte 283
- .2byte 285
- .2byte 286
- .2byte 287
- .2byte 293
- .2byte 294
- .2byte 295
- .2byte 300
- .2byte 302
- .2byte 307
- .2byte 310
- .2byte 311
- .2byte 320
- .2byte 322
- .2byte 326
- .2byte 330
- .2byte 332
- .2byte 335
- .2byte 344
- .2byte 345
- .2byte 346
- .2byte 348
- .2byte 350
- .2byte 353
- .2byte 357
- .2byte -1
-
-gBattleFrontierTrainerMons_Marvin:: @ 85D14D6
- .2byte 267
- .2byte 268
- .2byte 269
- .2byte 270
- .2byte 271
- .2byte 272
- .2byte 273
- .2byte 274
- .2byte 275
- .2byte 276
- .2byte 277
- .2byte 278
- .2byte 279
- .2byte 280
- .2byte 281
- .2byte 282
- .2byte 283
- .2byte 284
- .2byte 285
- .2byte 286
- .2byte 287
- .2byte 288
- .2byte 289
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 293
- .2byte 294
- .2byte 295
- .2byte 296
- .2byte 297
- .2byte 298
- .2byte 299
- .2byte 300
- .2byte 301
- .2byte 302
- .2byte 303
- .2byte 304
- .2byte -1
-
-gBattleFrontierTrainerMons_Brennan:: @ 85D1524
- .2byte 305
- .2byte 306
- .2byte 307
- .2byte 308
- .2byte 309
- .2byte 310
- .2byte 311
- .2byte 312
- .2byte 313
- .2byte 314
- .2byte 315
- .2byte 316
- .2byte 317
- .2byte 318
- .2byte 319
- .2byte 320
- .2byte 321
- .2byte 322
- .2byte 323
- .2byte 324
- .2byte 325
- .2byte 326
- .2byte 327
- .2byte 328
- .2byte 329
- .2byte 330
- .2byte 331
- .2byte 332
- .2byte 333
- .2byte 334
- .2byte 335
- .2byte 336
- .2byte 337
- .2byte 338
- .2byte 339
- .2byte 340
- .2byte 341
- .2byte -1
-
-gBattleFrontierTrainerMons_Baley:: @ 85D1570
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte 172
- .2byte 173
- .2byte 177
- .2byte 198
- .2byte 226
- .2byte 238
- .2byte 263
- .2byte 264
- .2byte 277
- .2byte 278
- .2byte 282
- .2byte 303
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte -1
-
-gBattleFrontierTrainerMons_Zackary:: @ 85D1598
- .2byte 271
- .2byte 283
- .2byte 294
- .2byte 295
- .2byte 298
- .2byte 299
- .2byte 300
- .2byte 311
- .2byte 315
- .2byte 320
- .2byte 327
- .2byte 328
- .2byte 330
- .2byte 335
- .2byte 337
- .2byte 338
- .2byte 339
- .2byte 341
- .2byte 346
- .2byte 364
- .2byte 365
- .2byte 366
- .2byte -1
-
-gBattleFrontierTrainerMons_Gabriel:: @ 85D15C6
- .2byte 342
- .2byte 343
- .2byte 344
- .2byte 345
- .2byte 346
- .2byte 347
- .2byte 348
- .2byte 349
- .2byte 350
- .2byte 351
- .2byte 352
- .2byte 353
- .2byte 354
- .2byte 355
- .2byte 356
- .2byte 357
- .2byte 358
- .2byte 359
- .2byte 360
- .2byte 361
- .2byte 362
- .2byte 363
- .2byte 364
- .2byte 365
- .2byte 366
- .2byte 367
- .2byte 368
- .2byte 369
- .2byte 370
- .2byte 371
- .2byte -1
-
-gBattleFrontierTrainerMons_Emily:: @ 85D1604
- .2byte 272
- .2byte 301
- .2byte 309
- .2byte 330
- .2byte 348
- .2byte 349
- .2byte 350
- .2byte 359
- .2byte 360
- .2byte 362
- .2byte 363
- .2byte 365
- .2byte -1
-
-gBattleFrontierTrainerMons_Jordyn:: @ 85D161E
- .2byte 267
- .2byte 269
- .2byte 270
- .2byte 272
- .2byte 273
- .2byte 276
- .2byte 279
- .2byte 284
- .2byte 288
- .2byte 302
- .2byte 304
- .2byte 305
- .2byte 308
- .2byte 309
- .2byte 312
- .2byte 316
- .2byte 319
- .2byte 322
- .2byte 323
- .2byte 325
- .2byte 326
- .2byte 329
- .2byte 331
- .2byte 332
- .2byte 336
- .2byte 340
- .2byte 344
- .2byte 345
- .2byte 351
- .2byte 353
- .2byte 355
- .2byte -1
-
-gBattleFrontierTrainerMons_Sofia:: @ 85D165E
- .2byte 270
- .2byte 272
- .2byte 274
- .2byte 276
- .2byte 279
- .2byte 282
- .2byte 285
- .2byte 290
- .2byte 293
- .2byte 313
- .2byte 314
- .2byte 321
- .2byte 334
- .2byte 340
- .2byte 348
- .2byte 356
- .2byte 359
- .2byte 360
- .2byte -1
-
-gBattleFrontierTrainerMons_Braden:: @ 85D1684
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 380
- .2byte 381
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 385
- .2byte 386
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte -1
-
-gBattleFrontierTrainerMons_Kayden:: @ 85D16C8
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 415
- .2byte 416
- .2byte 417
- .2byte 418
- .2byte 419
- .2byte 420
- .2byte 421
- .2byte 422
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 426
- .2byte 427
- .2byte 428
- .2byte 429
- .2byte 430
- .2byte 431
- .2byte 432
- .2byte 433
- .2byte 434
- .2byte 435
- .2byte 436
- .2byte 437
- .2byte -1
-
-gBattleFrontierTrainerMons_Cooper:: @ 85D170C
- .2byte 438
- .2byte 439
- .2byte 440
- .2byte 441
- .2byte 442
- .2byte 443
- .2byte 444
- .2byte 445
- .2byte 446
- .2byte 447
- .2byte 448
- .2byte 449
- .2byte 450
- .2byte 451
- .2byte 452
- .2byte 453
- .2byte 454
- .2byte 455
- .2byte 456
- .2byte 457
- .2byte 458
- .2byte 459
- .2byte 460
- .2byte 461
- .2byte 462
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte 466
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Julia:: @ 85D174A
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 380
- .2byte 381
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 385
- .2byte 386
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte -1
-
-gBattleFrontierTrainerMons_Amara:: @ 85D178E
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 415
- .2byte 416
- .2byte 417
- .2byte 418
- .2byte 419
- .2byte 420
- .2byte 421
- .2byte 422
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 426
- .2byte 427
- .2byte 428
- .2byte 429
- .2byte 430
- .2byte 431
- .2byte 432
- .2byte 433
- .2byte 434
- .2byte 435
- .2byte 436
- .2byte 437
- .2byte -1
-
-gBattleFrontierTrainerMons_Lynn:: @ 85D17D2
- .2byte 438
- .2byte 439
- .2byte 440
- .2byte 441
- .2byte 442
- .2byte 443
- .2byte 444
- .2byte 445
- .2byte 446
- .2byte 447
- .2byte 448
- .2byte 449
- .2byte 450
- .2byte 451
- .2byte 452
- .2byte 453
- .2byte 454
- .2byte 455
- .2byte 456
- .2byte 457
- .2byte 458
- .2byte 459
- .2byte 460
- .2byte 461
- .2byte 462
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte 466
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Jovan:: @ 85D1810
- .2byte 238
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 375
- .2byte 376
- .2byte 379
- .2byte 382
- .2byte 383
- .2byte 389
- .2byte 394
- .2byte 395
- .2byte 397
- .2byte 398
- .2byte 400
- .2byte 406
- .2byte 408
- .2byte 411
- .2byte 416
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 432
- .2byte 436
- .2byte 438
- .2byte 441
- .2byte 445
- .2byte 453
- .2byte 460
- .2byte 462
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Dominic:: @ 85D1854
- .2byte 238
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 375
- .2byte 376
- .2byte 379
- .2byte 382
- .2byte 383
- .2byte 389
- .2byte 394
- .2byte 395
- .2byte 397
- .2byte 398
- .2byte 400
- .2byte 406
- .2byte 408
- .2byte 411
- .2byte 416
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 432
- .2byte 436
- .2byte 438
- .2byte 441
- .2byte 445
- .2byte 453
- .2byte 460
- .2byte 462
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Nikolas:: @ 85D1898
- .2byte 238
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 375
- .2byte 376
- .2byte 379
- .2byte 382
- .2byte 383
- .2byte 389
- .2byte 394
- .2byte 395
- .2byte 397
- .2byte 398
- .2byte 400
- .2byte 406
- .2byte 408
- .2byte 411
- .2byte 416
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 432
- .2byte 436
- .2byte 438
- .2byte 441
- .2byte 445
- .2byte 453
- .2byte 460
- .2byte 462
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Valeria:: @ 85D18DC
- .2byte 238
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 375
- .2byte 376
- .2byte 379
- .2byte 382
- .2byte 383
- .2byte 389
- .2byte 394
- .2byte 395
- .2byte 397
- .2byte 398
- .2byte 400
- .2byte 406
- .2byte 408
- .2byte 411
- .2byte 416
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 432
- .2byte 436
- .2byte 438
- .2byte 441
- .2byte 445
- .2byte 453
- .2byte 460
- .2byte 462
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Delaney:: @ 85D1920
- .2byte 238
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 375
- .2byte 376
- .2byte 379
- .2byte 382
- .2byte 383
- .2byte 389
- .2byte 394
- .2byte 395
- .2byte 397
- .2byte 398
- .2byte 400
- .2byte 406
- .2byte 408
- .2byte 411
- .2byte 416
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 432
- .2byte 436
- .2byte 438
- .2byte 441
- .2byte 445
- .2byte 453
- .2byte 460
- .2byte 462
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Meghan:: @ 85D1964
- .2byte 238
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 375
- .2byte 376
- .2byte 379
- .2byte 382
- .2byte 383
- .2byte 389
- .2byte 394
- .2byte 395
- .2byte 397
- .2byte 398
- .2byte 400
- .2byte 406
- .2byte 408
- .2byte 411
- .2byte 416
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 432
- .2byte 436
- .2byte 438
- .2byte 441
- .2byte 445
- .2byte 453
- .2byte 460
- .2byte 462
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Roberto:: @ 85D19A8
- .2byte 386
- .2byte 403
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 450
- .2byte 453
- .2byte 454
- .2byte 456
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte -1
-
-gBattleFrontierTrainerMons_Damian:: @ 85D19CC
- .2byte 386
- .2byte 403
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 450
- .2byte 453
- .2byte 454
- .2byte 456
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte -1
-
-gBattleFrontierTrainerMons_Brody:: @ 85D19F0
- .2byte 386
- .2byte 403
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 450
- .2byte 453
- .2byte 454
- .2byte 456
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte -1
-
-gBattleFrontierTrainerMons_Graham:: @ 85D1A14
- .2byte 386
- .2byte 403
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 450
- .2byte 453
- .2byte 454
- .2byte 456
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte -1
-
-gBattleFrontierTrainerMons_Tylor:: @ 85D1A38
- .2byte 374
- .2byte 381
- .2byte 382
- .2byte 385
- .2byte 388
- .2byte 389
- .2byte 391
- .2byte 392
- .2byte 394
- .2byte 409
- .2byte 411
- .2byte 412
- .2byte 419
- .2byte 430
- .2byte 432
- .2byte 436
- .2byte 440
- .2byte 456
- .2byte 460
- .2byte 462
- .2byte 463
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Jaren:: @ 85D1A66
- .2byte 374
- .2byte 381
- .2byte 382
- .2byte 385
- .2byte 388
- .2byte 389
- .2byte 391
- .2byte 392
- .2byte 394
- .2byte 409
- .2byte 411
- .2byte 412
- .2byte 419
- .2byte 430
- .2byte 432
- .2byte 436
- .2byte 440
- .2byte 456
- .2byte 460
- .2byte 462
- .2byte 463
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Cordell:: @ 85D1A94
- .2byte 420
- .2byte 421
- .2byte 422
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 426
- .2byte 427
- .2byte 428
- .2byte 429
- .2byte 430
- .2byte 431
- .2byte 432
- .2byte 433
- .2byte 434
- .2byte 435
- .2byte 436
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 440
- .2byte 441
- .2byte 442
- .2byte 443
- .2byte 444
- .2byte 445
- .2byte 446
- .2byte 447
- .2byte 448
- .2byte 449
- .2byte 450
- .2byte 451
- .2byte 452
- .2byte 453
- .2byte 454
- .2byte 455
- .2byte 456
- .2byte 457
- .2byte 458
- .2byte 459
- .2byte 460
- .2byte 461
- .2byte 462
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte 466
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Jazlyn:: @ 85D1AF6
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 380
- .2byte 381
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 385
- .2byte 386
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 415
- .2byte 416
- .2byte 417
- .2byte 418
- .2byte 419
- .2byte -1
-
-gBattleFrontierTrainerMons_Zachery:: @ 85D1B58
- .2byte 468
- .2byte 469
- .2byte 470
- .2byte 471
- .2byte 472
- .2byte 473
- .2byte 474
- .2byte 475
- .2byte 476
- .2byte 477
- .2byte 478
- .2byte 479
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 483
- .2byte 484
- .2byte 485
- .2byte 486
- .2byte 487
- .2byte 488
- .2byte 489
- .2byte 490
- .2byte 491
- .2byte 492
- .2byte 493
- .2byte 494
- .2byte 495
- .2byte 496
- .2byte 497
- .2byte 498
- .2byte 499
- .2byte 500
- .2byte -1
-
-gBattleFrontierTrainerMons_Johan:: @ 85D1B9C
- .2byte 469
- .2byte 470
- .2byte 471
- .2byte 472
- .2byte 473
- .2byte 474
- .2byte 475
- .2byte 476
- .2byte 477
- .2byte 478
- .2byte 479
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 483
- .2byte 484
- .2byte 485
- .2byte 486
- .2byte 487
- .2byte 488
- .2byte 489
- .2byte 490
- .2byte 491
- .2byte 492
- .2byte 493
- .2byte 494
- .2byte 495
- .2byte 496
- .2byte 497
- .2byte 498
- .2byte 499
- .2byte 500
- .2byte -1
-
-gBattleFrontierTrainerMons_Shea:: @ 85D1BDE
- .2byte 468
- .2byte 469
- .2byte 470
- .2byte 471
- .2byte 472
- .2byte 473
- .2byte 474
- .2byte 475
- .2byte 476
- .2byte 477
- .2byte 478
- .2byte 479
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 483
- .2byte 484
- .2byte 485
- .2byte 486
- .2byte 487
- .2byte 488
- .2byte 489
- .2byte 490
- .2byte 491
- .2byte 492
- .2byte 493
- .2byte 494
- .2byte 495
- .2byte 496
- .2byte 497
- .2byte 498
- .2byte 499
- .2byte 500
- .2byte -1
-
-gBattleFrontierTrainerMons_Kaila:: @ 85D1C22
- .2byte 468
- .2byte 469
- .2byte 470
- .2byte 471
- .2byte 472
- .2byte 473
- .2byte 474
- .2byte 475
- .2byte 476
- .2byte 477
- .2byte 478
- .2byte 479
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 483
- .2byte 484
- .2byte 485
- .2byte 486
- .2byte 487
- .2byte 488
- .2byte 489
- .2byte 490
- .2byte 491
- .2byte 492
- .2byte 493
- .2byte 494
- .2byte 495
- .2byte 496
- .2byte 497
- .2byte 498
- .2byte 499
- .2byte 500
- .2byte -1
-
-gBattleFrontierTrainerMons_Isiah:: @ 85D1C66
- .2byte 501
- .2byte 502
- .2byte 503
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 511
- .2byte 512
- .2byte 513
- .2byte 514
- .2byte 515
- .2byte 516
- .2byte 517
- .2byte 518
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 522
- .2byte 523
- .2byte 524
- .2byte 525
- .2byte 526
- .2byte 527
- .2byte 528
- .2byte 529
- .2byte 530
- .2byte 531
- .2byte 532
- .2byte 533
- .2byte -1
-
-gBattleFrontierTrainerMons_Garrett:: @ 85D1CAA
- .2byte 501
- .2byte 502
- .2byte 503
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 511
- .2byte 512
- .2byte 513
- .2byte 514
- .2byte 515
- .2byte 516
- .2byte 517
- .2byte 518
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 522
- .2byte 523
- .2byte 524
- .2byte 525
- .2byte 526
- .2byte 527
- .2byte 528
- .2byte 529
- .2byte 530
- .2byte 531
- .2byte 532
- .2byte 533
- .2byte -1
-
-gBattleFrontierTrainerMons_Haylie:: @ 85D1CEE
- .2byte 501
- .2byte 502
- .2byte 503
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 511
- .2byte 512
- .2byte 513
- .2byte 514
- .2byte 515
- .2byte 516
- .2byte 517
- .2byte 518
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 522
- .2byte 523
- .2byte 524
- .2byte 525
- .2byte 526
- .2byte 527
- .2byte 528
- .2byte 529
- .2byte 530
- .2byte 531
- .2byte 532
- .2byte 533
- .2byte -1
-
-gBattleFrontierTrainerMons_Megan:: @ 85D1D32
- .2byte 501
- .2byte 502
- .2byte 503
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 511
- .2byte 512
- .2byte 513
- .2byte 514
- .2byte 515
- .2byte 516
- .2byte 517
- .2byte 518
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 522
- .2byte 523
- .2byte 524
- .2byte 525
- .2byte 526
- .2byte 527
- .2byte 528
- .2byte 529
- .2byte 530
- .2byte 531
- .2byte 532
- .2byte 533
- .2byte -1
-
-gBattleFrontierTrainerMons_Issac:: @ 85D1D76
- .2byte 534
- .2byte 535
- .2byte 536
- .2byte 537
- .2byte 538
- .2byte 539
- .2byte 540
- .2byte 541
- .2byte 542
- .2byte 543
- .2byte 544
- .2byte 545
- .2byte 546
- .2byte 547
- .2byte 548
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 552
- .2byte 553
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 560
- .2byte 561
- .2byte 562
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Quinton:: @ 85D1DB4
- .2byte 534
- .2byte 535
- .2byte 536
- .2byte 537
- .2byte 538
- .2byte 539
- .2byte 540
- .2byte 541
- .2byte 542
- .2byte 543
- .2byte 544
- .2byte 545
- .2byte 546
- .2byte 547
- .2byte 548
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 552
- .2byte 553
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 560
- .2byte 561
- .2byte 562
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Salma:: @ 85D1DF2
- .2byte 534
- .2byte 535
- .2byte 536
- .2byte 537
- .2byte 538
- .2byte 539
- .2byte 540
- .2byte 541
- .2byte 542
- .2byte 543
- .2byte 544
- .2byte 545
- .2byte 546
- .2byte 547
- .2byte 548
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 552
- .2byte 553
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 560
- .2byte 561
- .2byte 562
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Ansley:: @ 85D1E30
- .2byte 534
- .2byte 535
- .2byte 536
- .2byte 537
- .2byte 538
- .2byte 539
- .2byte 540
- .2byte 541
- .2byte 542
- .2byte 543
- .2byte 544
- .2byte 545
- .2byte 546
- .2byte 547
- .2byte 548
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 552
- .2byte 553
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 560
- .2byte 561
- .2byte 562
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Holden:: @ 85D1E6E
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 383
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 432
- .2byte 480
- .2byte 481
- .2byte 490
- .2byte 491
- .2byte 494
- .2byte 496
- .2byte 512
- .2byte 513
- .2byte 519
- .2byte 520
- .2byte 528
- .2byte 534
- .2byte 537
- .2byte 541
- .2byte 549
- .2byte -1
-
-gBattleFrontierTrainerMons_Luca:: @ 85D1E9E
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 383
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 432
- .2byte 480
- .2byte 481
- .2byte 490
- .2byte 491
- .2byte 494
- .2byte 496
- .2byte 512
- .2byte 513
- .2byte 519
- .2byte 520
- .2byte 528
- .2byte 534
- .2byte 537
- .2byte 541
- .2byte 549
- .2byte -1
-
-gBattleFrontierTrainerMons_Jamison:: @ 85D1ECE
- .2byte 282
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 469
- .2byte 472
- .2byte 475
- .2byte 476
- .2byte 478
- .2byte 481
- .2byte 484
- .2byte 490
- .2byte 491
- .2byte 497
- .2byte 500
- .2byte 501
- .2byte 509
- .2byte 510
- .2byte 513
- .2byte 516
- .2byte 517
- .2byte 519
- .2byte 520
- .2byte 524
- .2byte 528
- .2byte 530
- .2byte 533
- .2byte 534
- .2byte 537
- .2byte 542
- .2byte 553
- .2byte -1
-
-gBattleFrontierTrainerMons_Gunnar:: @ 85D1F10
- .2byte 282
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 469
- .2byte 472
- .2byte 475
- .2byte 476
- .2byte 478
- .2byte 481
- .2byte 484
- .2byte 490
- .2byte 491
- .2byte 497
- .2byte 500
- .2byte 501
- .2byte 509
- .2byte 510
- .2byte 513
- .2byte 516
- .2byte 517
- .2byte 519
- .2byte 520
- .2byte 524
- .2byte 528
- .2byte 530
- .2byte 533
- .2byte 534
- .2byte 537
- .2byte 542
- .2byte 553
- .2byte -1
-
-gBattleFrontierTrainerMons_Craig:: @ 85D1F52
- .2byte 471
- .2byte 474
- .2byte 475
- .2byte 479
- .2byte 483
- .2byte 485
- .2byte 488
- .2byte 493
- .2byte 495
- .2byte 496
- .2byte 502
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 514
- .2byte 521
- .2byte 525
- .2byte 530
- .2byte 532
- .2byte 535
- .2byte 538
- .2byte 544
- .2byte 545
- .2byte 548
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Pierce:: @ 85D1F96
- .2byte 471
- .2byte 474
- .2byte 475
- .2byte 479
- .2byte 483
- .2byte 485
- .2byte 488
- .2byte 493
- .2byte 495
- .2byte 496
- .2byte 502
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 514
- .2byte 521
- .2byte 525
- .2byte 530
- .2byte 532
- .2byte 535
- .2byte 538
- .2byte 544
- .2byte 545
- .2byte 548
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Regina:: @ 85D1FDA
- .2byte 471
- .2byte 474
- .2byte 475
- .2byte 479
- .2byte 483
- .2byte 485
- .2byte 488
- .2byte 493
- .2byte 495
- .2byte 496
- .2byte 502
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 514
- .2byte 521
- .2byte 525
- .2byte 530
- .2byte 532
- .2byte 535
- .2byte 538
- .2byte 544
- .2byte 545
- .2byte 548
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Alison:: @ 85D201E
- .2byte 471
- .2byte 474
- .2byte 475
- .2byte 479
- .2byte 483
- .2byte 485
- .2byte 488
- .2byte 493
- .2byte 495
- .2byte 496
- .2byte 502
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 514
- .2byte 521
- .2byte 525
- .2byte 530
- .2byte 532
- .2byte 535
- .2byte 538
- .2byte 544
- .2byte 545
- .2byte 548
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Hank:: @ 85D2062
- .2byte 277
- .2byte 278
- .2byte 282
- .2byte 303
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 383
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 432
- .2byte 481
- .2byte 513
- .2byte 519
- .2byte 520
- .2byte 528
- .2byte 575
- .2byte 609
- .2byte 615
- .2byte 616
- .2byte 624
- .2byte -1
-
-gBattleFrontierTrainerMons_Earl:: @ 85D2092
- .2byte 277
- .2byte 278
- .2byte 282
- .2byte 303
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 383
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 432
- .2byte 481
- .2byte 513
- .2byte 519
- .2byte 520
- .2byte 528
- .2byte 575
- .2byte 609
- .2byte 615
- .2byte 616
- .2byte 624
- .2byte -1
-
-gBattleFrontierTrainerMons_Ramiro:: @ 85D20C2
- .2byte 316
- .2byte 333
- .2byte 347
- .2byte 350
- .2byte 354
- .2byte 358
- .2byte 361
- .2byte 362
- .2byte 363
- .2byte 364
- .2byte 573
- .2byte 576
- .2byte 621
- .2byte 626
- .2byte 631
- .2byte -1
-
-gBattleFrontierTrainerMons_Hunter:: @ 85D20E2
- .2byte 316
- .2byte 333
- .2byte 347
- .2byte 350
- .2byte 354
- .2byte 358
- .2byte 361
- .2byte 362
- .2byte 363
- .2byte 364
- .2byte 573
- .2byte 576
- .2byte 621
- .2byte 626
- .2byte 631
- .2byte -1
-
-gBattleFrontierTrainerMons_Aiden:: @ 85D2102
- .2byte 564
- .2byte 575
- .2byte 576
- .2byte 578
- .2byte 579
- .2byte 580
- .2byte 594
- .2byte 595
- .2byte 605
- .2byte 606
- .2byte 608
- .2byte 609
- .2byte 615
- .2byte 619
- .2byte 620
- .2byte 624
- .2byte 625
- .2byte 627
- .2byte 632
- .2byte 642
- .2byte 650
- .2byte 658
- .2byte -1
-
-gBattleFrontierTrainerMons_Xavier:: @ 85D2130
- .2byte 564
- .2byte 575
- .2byte 576
- .2byte 578
- .2byte 579
- .2byte 580
- .2byte 594
- .2byte 595
- .2byte 605
- .2byte 606
- .2byte 608
- .2byte 609
- .2byte 615
- .2byte 619
- .2byte 620
- .2byte 624
- .2byte 625
- .2byte 627
- .2byte 632
- .2byte 642
- .2byte 650
- .2byte 658
- .2byte -1
-
-gBattleFrontierTrainerMons_Clinton:: @ 85D215E
- .2byte 564
- .2byte 565
- .2byte 566
- .2byte 567
- .2byte 568
- .2byte 569
- .2byte 570
- .2byte 571
- .2byte 572
- .2byte 573
- .2byte 574
- .2byte 575
- .2byte 576
- .2byte 577
- .2byte 578
- .2byte 579
- .2byte 580
- .2byte 581
- .2byte 582
- .2byte 583
- .2byte 584
- .2byte 585
- .2byte 586
- .2byte 587
- .2byte 588
- .2byte 589
- .2byte 590
- .2byte 591
- .2byte 592
- .2byte 593
- .2byte 594
- .2byte 595
- .2byte 596
- .2byte 597
- .2byte 598
- .2byte 599
- .2byte 600
- .2byte 601
- .2byte 602
- .2byte 603
- .2byte 604
- .2byte 605
- .2byte 606
- .2byte 607
- .2byte 608
- .2byte 609
- .2byte 610
- .2byte 611
- .2byte -1
-
-gBattleFrontierTrainerMons_Jesse:: @ 85D21C0
- .2byte 564
- .2byte 565
- .2byte 566
- .2byte 567
- .2byte 568
- .2byte 569
- .2byte 570
- .2byte 571
- .2byte 572
- .2byte 573
- .2byte 574
- .2byte 575
- .2byte 576
- .2byte 577
- .2byte 578
- .2byte 579
- .2byte 580
- .2byte 581
- .2byte 582
- .2byte 583
- .2byte 584
- .2byte 585
- .2byte 586
- .2byte 587
- .2byte 588
- .2byte 589
- .2byte 590
- .2byte 591
- .2byte 592
- .2byte 593
- .2byte 594
- .2byte 595
- .2byte 596
- .2byte 597
- .2byte 598
- .2byte 599
- .2byte 600
- .2byte 601
- .2byte 602
- .2byte 603
- .2byte 604
- .2byte 605
- .2byte 606
- .2byte 607
- .2byte 608
- .2byte 609
- .2byte 610
- .2byte 611
- .2byte -1
-
-gBattleFrontierTrainerMons_Eduardo:: @ 85D2222
- .2byte 268
- .2byte 307
- .2byte 317
- .2byte 349
- .2byte 352
- .2byte 573
- .2byte 583
- .2byte 585
- .2byte 588
- .2byte 590
- .2byte 599
- .2byte 614
- .2byte 618
- .2byte 635
- .2byte 639
- .2byte -1
-
-gBattleFrontierTrainerMons_Hal:: @ 85D2242
- .2byte 268
- .2byte 307
- .2byte 317
- .2byte 349
- .2byte 352
- .2byte 573
- .2byte 583
- .2byte 585
- .2byte 588
- .2byte 590
- .2byte 599
- .2byte 614
- .2byte 618
- .2byte 635
- .2byte 639
- .2byte -1
-
-gBattleFrontierTrainerMons_Gage:: @ 85D2262
- .2byte 289
- .2byte 318
- .2byte 319
- .2byte 329
- .2byte 355
- .2byte 375
- .2byte 379
- .2byte 385
- .2byte 386
- .2byte 457
- .2byte 473
- .2byte 477
- .2byte 482
- .2byte 484
- .2byte 553
- .2byte 567
- .2byte 571
- .2byte 577
- .2byte 578
- .2byte 649
- .2byte -1
-
-gBattleFrontierTrainerMons_Arnold:: @ 85D228C
- .2byte 289
- .2byte 318
- .2byte 319
- .2byte 329
- .2byte 355
- .2byte 375
- .2byte 379
- .2byte 385
- .2byte 386
- .2byte 457
- .2byte 473
- .2byte 477
- .2byte 482
- .2byte 484
- .2byte 553
- .2byte 567
- .2byte 571
- .2byte 577
- .2byte 578
- .2byte 649
- .2byte -1
-
-gBattleFrontierTrainerMons_Jarrett:: @ 85D22B6
- .2byte 565
- .2byte 573
- .2byte 576
- .2byte 580
- .2byte 582
- .2byte 584
- .2byte 592
- .2byte 601
- .2byte 602
- .2byte 610
- .2byte 621
- .2byte 623
- .2byte 626
- .2byte 631
- .2byte 634
- .2byte 640
- .2byte 641
- .2byte 644
- .2byte 648
- .2byte 650
- .2byte 651
- .2byte 653
- .2byte 655
- .2byte -1
-
-gBattleFrontierTrainerMons_Garett:: @ 85D22E6
- .2byte 565
- .2byte 573
- .2byte 576
- .2byte 580
- .2byte 582
- .2byte 584
- .2byte 592
- .2byte 601
- .2byte 602
- .2byte 610
- .2byte 621
- .2byte 623
- .2byte 626
- .2byte 631
- .2byte 634
- .2byte 640
- .2byte 641
- .2byte 644
- .2byte 648
- .2byte 650
- .2byte 651
- .2byte 653
- .2byte 655
- .2byte -1
-
-gBattleFrontierTrainerMons_Emanuel:: @ 85D2316
- .2byte 564
- .2byte 565
- .2byte 574
- .2byte 579
- .2byte 582
- .2byte 594
- .2byte 595
- .2byte 605
- .2byte 606
- .2byte 608
- .2byte 609
- .2byte 616
- .2byte 619
- .2byte 620
- .2byte 623
- .2byte 624
- .2byte 625
- .2byte 627
- .2byte 642
- .2byte 643
- .2byte -1
-
-gBattleFrontierTrainerMons_Gustavo:: @ 85D2340
- .2byte 564
- .2byte 565
- .2byte 574
- .2byte 579
- .2byte 582
- .2byte 594
- .2byte 595
- .2byte 605
- .2byte 606
- .2byte 608
- .2byte 609
- .2byte 616
- .2byte 619
- .2byte 620
- .2byte 623
- .2byte 624
- .2byte 625
- .2byte 627
- .2byte 642
- .2byte 643
- .2byte -1
-
-gBattleFrontierTrainerMons_Kameron:: @ 85D236A
- .2byte 568
- .2byte 581
- .2byte 589
- .2byte 598
- .2byte 600
- .2byte 603
- .2byte 607
- .2byte 611
- .2byte 617
- .2byte 618
- .2byte 622
- .2byte 636
- .2byte 643
- .2byte 646
- .2byte 647
- .2byte 652
- .2byte 654
- .2byte 656
- .2byte 659
- .2byte -1
-
-gBattleFrontierTrainerMons_Alfredo:: @ 85D2392
- .2byte 568
- .2byte 581
- .2byte 589
- .2byte 598
- .2byte 600
- .2byte 603
- .2byte 607
- .2byte 611
- .2byte 617
- .2byte 618
- .2byte 622
- .2byte 636
- .2byte 643
- .2byte 646
- .2byte 647
- .2byte 652
- .2byte 654
- .2byte 656
- .2byte 659
- .2byte -1
-
-gBattleFrontierTrainerMons_Ruben:: @ 85D23BA
- .2byte 612
- .2byte 613
- .2byte 614
- .2byte 615
- .2byte 616
- .2byte 617
- .2byte 618
- .2byte 619
- .2byte 620
- .2byte 621
- .2byte 622
- .2byte 623
- .2byte 624
- .2byte 625
- .2byte 626
- .2byte 627
- .2byte 628
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 632
- .2byte 633
- .2byte 634
- .2byte 635
- .2byte 636
- .2byte 637
- .2byte 638
- .2byte 639
- .2byte 640
- .2byte 641
- .2byte 642
- .2byte 643
- .2byte 644
- .2byte 645
- .2byte 646
- .2byte 647
- .2byte 648
- .2byte 649
- .2byte 650
- .2byte 651
- .2byte 652
- .2byte 653
- .2byte 654
- .2byte 655
- .2byte 656
- .2byte 657
- .2byte 658
- .2byte 659
- .2byte -1
-
-gBattleFrontierTrainerMons_Lamar:: @ 85D241C
- .2byte 612
- .2byte 613
- .2byte 614
- .2byte 615
- .2byte 616
- .2byte 617
- .2byte 618
- .2byte 619
- .2byte 620
- .2byte 621
- .2byte 622
- .2byte 623
- .2byte 624
- .2byte 625
- .2byte 626
- .2byte 627
- .2byte 628
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 632
- .2byte 633
- .2byte 634
- .2byte 635
- .2byte 636
- .2byte 637
- .2byte 638
- .2byte 639
- .2byte 640
- .2byte 641
- .2byte 642
- .2byte 643
- .2byte 644
- .2byte 645
- .2byte 646
- .2byte 647
- .2byte 648
- .2byte 649
- .2byte 650
- .2byte 651
- .2byte 652
- .2byte 653
- .2byte 654
- .2byte 655
- .2byte 656
- .2byte 657
- .2byte 658
- .2byte 659
- .2byte -1
-
-gBattleFrontierTrainerMons_Jaxon:: @ 85D247E
- .2byte 660
- .2byte 661
- .2byte 662
- .2byte 663
- .2byte 664
- .2byte 665
- .2byte 666
- .2byte 667
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 671
- .2byte 672
- .2byte 673
- .2byte 674
- .2byte 675
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 679
- .2byte 680
- .2byte 681
- .2byte 682
- .2byte 683
- .2byte 684
- .2byte 685
- .2byte 686
- .2byte 687
- .2byte 688
- .2byte 689
- .2byte 690
- .2byte 691
- .2byte 692
- .2byte -1
-
-gBattleFrontierTrainerMons_Logan:: @ 85D24C2
- .2byte 660
- .2byte 661
- .2byte 662
- .2byte 663
- .2byte 664
- .2byte 665
- .2byte 666
- .2byte 667
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 671
- .2byte 672
- .2byte 673
- .2byte 674
- .2byte 675
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 679
- .2byte 680
- .2byte 681
- .2byte 682
- .2byte 683
- .2byte 684
- .2byte 685
- .2byte 686
- .2byte 687
- .2byte 688
- .2byte 689
- .2byte 690
- .2byte 691
- .2byte 692
- .2byte -1
-
-gBattleFrontierTrainerMons_Emilee:: @ 85D2506
- .2byte 660
- .2byte 661
- .2byte 662
- .2byte 663
- .2byte 664
- .2byte 665
- .2byte 666
- .2byte 667
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 671
- .2byte 672
- .2byte 673
- .2byte 674
- .2byte 675
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 679
- .2byte 680
- .2byte 681
- .2byte 682
- .2byte 683
- .2byte 684
- .2byte 685
- .2byte 686
- .2byte 687
- .2byte 688
- .2byte 689
- .2byte 690
- .2byte 691
- .2byte 692
- .2byte -1
-
-gBattleFrontierTrainerMons_Josie:: @ 85D254A
- .2byte 660
- .2byte 661
- .2byte 662
- .2byte 663
- .2byte 664
- .2byte 665
- .2byte 666
- .2byte 667
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 671
- .2byte 672
- .2byte 673
- .2byte 674
- .2byte 675
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 679
- .2byte 680
- .2byte 681
- .2byte 682
- .2byte 683
- .2byte 684
- .2byte 685
- .2byte 686
- .2byte 687
- .2byte 688
- .2byte 689
- .2byte 690
- .2byte 691
- .2byte 692
- .2byte -1
-
-gBattleFrontierTrainerMons_Armando:: @ 85D258E
- .2byte 693
- .2byte 694
- .2byte 695
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 703
- .2byte 704
- .2byte 705
- .2byte 706
- .2byte 707
- .2byte 708
- .2byte 709
- .2byte 710
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 714
- .2byte 715
- .2byte 716
- .2byte 717
- .2byte 718
- .2byte 719
- .2byte 720
- .2byte 721
- .2byte 722
- .2byte 723
- .2byte 724
- .2byte 725
- .2byte -1
-
-gBattleFrontierTrainerMons_Skyler:: @ 85D25D2
- .2byte 693
- .2byte 694
- .2byte 695
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 703
- .2byte 704
- .2byte 705
- .2byte 706
- .2byte 707
- .2byte 708
- .2byte 709
- .2byte 710
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 714
- .2byte 715
- .2byte 716
- .2byte 717
- .2byte 718
- .2byte 719
- .2byte 720
- .2byte 721
- .2byte 722
- .2byte 723
- .2byte 724
- .2byte 725
- .2byte -1
-
-gBattleFrontierTrainerMons_Ruth:: @ 85D2616
- .2byte 693
- .2byte 694
- .2byte 695
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 703
- .2byte 704
- .2byte 705
- .2byte 706
- .2byte 707
- .2byte 708
- .2byte 709
- .2byte 710
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 714
- .2byte 715
- .2byte 716
- .2byte 717
- .2byte 718
- .2byte 719
- .2byte 720
- .2byte 721
- .2byte 722
- .2byte 723
- .2byte 724
- .2byte 725
- .2byte -1
-
-gBattleFrontierTrainerMons_Melody:: @ 85D265A
- .2byte 693
- .2byte 694
- .2byte 695
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 703
- .2byte 704
- .2byte 705
- .2byte 706
- .2byte 707
- .2byte 708
- .2byte 709
- .2byte 710
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 714
- .2byte 715
- .2byte 716
- .2byte 717
- .2byte 718
- .2byte 719
- .2byte 720
- .2byte 721
- .2byte 722
- .2byte 723
- .2byte 724
- .2byte 725
- .2byte -1
-
-gBattleFrontierTrainerMons_Pedro:: @ 85D269E
- .2byte 347
- .2byte 661
- .2byte 664
- .2byte 669
- .2byte 672
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 680
- .2byte 685
- .2byte 688
- .2byte 694
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 706
- .2byte 713
- .2byte 717
- .2byte 719
- .2byte 722
- .2byte 724
- .2byte 727
- .2byte 730
- .2byte 736
- .2byte 737
- .2byte 740
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Erick:: @ 85D26E6
- .2byte 347
- .2byte 661
- .2byte 664
- .2byte 669
- .2byte 672
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 680
- .2byte 685
- .2byte 688
- .2byte 694
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 706
- .2byte 713
- .2byte 717
- .2byte 719
- .2byte 722
- .2byte 724
- .2byte 727
- .2byte 730
- .2byte 736
- .2byte 737
- .2byte 740
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Elaine:: @ 85D272E
- .2byte 664
- .2byte 665
- .2byte 669
- .2byte 672
- .2byte 676
- .2byte 677
- .2byte 680
- .2byte 685
- .2byte 687
- .2byte 688
- .2byte 694
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 706
- .2byte 713
- .2byte 717
- .2byte 722
- .2byte 724
- .2byte 727
- .2byte 730
- .2byte 736
- .2byte 737
- .2byte 740
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Joyce:: @ 85D2772
- .2byte 664
- .2byte 665
- .2byte 669
- .2byte 672
- .2byte 676
- .2byte 677
- .2byte 680
- .2byte 685
- .2byte 687
- .2byte 688
- .2byte 694
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 706
- .2byte 713
- .2byte 717
- .2byte 722
- .2byte 724
- .2byte 727
- .2byte 730
- .2byte 736
- .2byte 737
- .2byte 740
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Todd:: @ 85D27B6
- .2byte 267
- .2byte 273
- .2byte 305
- .2byte 312
- .2byte 325
- .2byte 332
- .2byte 352
- .2byte 662
- .2byte 665
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 672
- .2byte 673
- .2byte 676
- .2byte 677
- .2byte 679
- .2byte 680
- .2byte 682
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 707
- .2byte 710
- .2byte 718
- .2byte 720
- .2byte 724
- .2byte 725
- .2byte 728
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 734
- .2byte 735
- .2byte 744
- .2byte 748
- .2byte 750
- .2byte 751
- .2byte -1
-
-gBattleFrontierTrainerMons_Gavin:: @ 85D2808
- .2byte 267
- .2byte 273
- .2byte 305
- .2byte 312
- .2byte 325
- .2byte 332
- .2byte 352
- .2byte 662
- .2byte 665
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 672
- .2byte 673
- .2byte 676
- .2byte 677
- .2byte 679
- .2byte 680
- .2byte 682
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 707
- .2byte 710
- .2byte 718
- .2byte 720
- .2byte 724
- .2byte 725
- .2byte 728
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 734
- .2byte 735
- .2byte 744
- .2byte 748
- .2byte 750
- .2byte 751
- .2byte -1
-
-gBattleFrontierTrainerMons_Malory:: @ 85D285A
- .2byte 267
- .2byte 273
- .2byte 305
- .2byte 312
- .2byte 325
- .2byte 332
- .2byte 352
- .2byte 662
- .2byte 665
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 672
- .2byte 673
- .2byte 676
- .2byte 677
- .2byte 679
- .2byte 680
- .2byte 682
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 707
- .2byte 710
- .2byte 718
- .2byte 720
- .2byte 724
- .2byte 725
- .2byte 728
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 734
- .2byte 735
- .2byte 744
- .2byte 748
- .2byte 750
- .2byte 751
- .2byte -1
-
-gBattleFrontierTrainerMons_Esther:: @ 85D28AC
- .2byte 267
- .2byte 273
- .2byte 305
- .2byte 312
- .2byte 325
- .2byte 332
- .2byte 352
- .2byte 662
- .2byte 665
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 672
- .2byte 673
- .2byte 676
- .2byte 677
- .2byte 679
- .2byte 680
- .2byte 682
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 707
- .2byte 710
- .2byte 718
- .2byte 720
- .2byte 724
- .2byte 725
- .2byte 728
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 734
- .2byte 735
- .2byte 744
- .2byte 748
- .2byte 750
- .2byte 751
- .2byte -1
-
-gBattleFrontierTrainerMons_Oscar:: @ 85D28FE
- .2byte 726
- .2byte 727
- .2byte 728
- .2byte 729
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 733
- .2byte 734
- .2byte 735
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 739
- .2byte 740
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 744
- .2byte 745
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 752
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Wilson:: @ 85D293C
- .2byte 726
- .2byte 727
- .2byte 728
- .2byte 729
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 733
- .2byte 734
- .2byte 735
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 739
- .2byte 740
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 744
- .2byte 745
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 752
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Clare:: @ 85D297A
- .2byte 726
- .2byte 727
- .2byte 728
- .2byte 729
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 733
- .2byte 734
- .2byte 735
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 739
- .2byte 740
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 744
- .2byte 745
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 752
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Tess:: @ 85D29B8
- .2byte 726
- .2byte 727
- .2byte 728
- .2byte 729
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 733
- .2byte 734
- .2byte 735
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 739
- .2byte 740
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 744
- .2byte 745
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 752
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Leon:: @ 85D29F6
- .2byte 420
- .2byte 421
- .2byte 422
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 426
- .2byte 427
- .2byte 428
- .2byte 429
- .2byte 430
- .2byte 431
- .2byte 432
- .2byte 433
- .2byte 434
- .2byte 435
- .2byte 436
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 440
- .2byte 441
- .2byte 442
- .2byte 443
- .2byte 516
- .2byte 517
- .2byte 518
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 522
- .2byte 523
- .2byte 524
- .2byte 525
- .2byte 526
- .2byte 527
- .2byte 528
- .2byte 529
- .2byte 530
- .2byte 531
- .2byte 532
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 536
- .2byte 537
- .2byte 538
- .2byte 539
- .2byte 612
- .2byte 613
- .2byte 614
- .2byte 615
- .2byte 616
- .2byte 617
- .2byte 618
- .2byte 619
- .2byte 620
- .2byte 621
- .2byte 622
- .2byte 623
- .2byte 624
- .2byte 625
- .2byte 626
- .2byte 627
- .2byte 628
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 632
- .2byte 633
- .2byte 634
- .2byte 635
- .2byte 708
- .2byte 709
- .2byte 710
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 714
- .2byte 715
- .2byte 716
- .2byte 717
- .2byte 718
- .2byte 719
- .2byte 720
- .2byte 721
- .2byte 722
- .2byte 723
- .2byte 724
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 728
- .2byte 729
- .2byte 730
- .2byte 731
- .2byte -1
-
-gBattleFrontierTrainerMons_Alonzo:: @ 85D2AB8
- .2byte 444
- .2byte 445
- .2byte 446
- .2byte 447
- .2byte 448
- .2byte 449
- .2byte 450
- .2byte 451
- .2byte 452
- .2byte 453
- .2byte 454
- .2byte 455
- .2byte 456
- .2byte 457
- .2byte 458
- .2byte 459
- .2byte 460
- .2byte 461
- .2byte 462
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte 466
- .2byte 467
- .2byte 540
- .2byte 541
- .2byte 542
- .2byte 543
- .2byte 544
- .2byte 545
- .2byte 546
- .2byte 547
- .2byte 548
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 552
- .2byte 553
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 560
- .2byte 561
- .2byte 562
- .2byte 563
- .2byte 636
- .2byte 637
- .2byte 638
- .2byte 639
- .2byte 640
- .2byte 641
- .2byte 642
- .2byte 643
- .2byte 644
- .2byte 645
- .2byte 646
- .2byte 647
- .2byte 648
- .2byte 649
- .2byte 650
- .2byte 651
- .2byte 652
- .2byte 653
- .2byte 654
- .2byte 655
- .2byte 656
- .2byte 657
- .2byte 658
- .2byte 659
- .2byte 732
- .2byte 733
- .2byte 734
- .2byte 735
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 739
- .2byte 740
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 744
- .2byte 745
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 752
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Vince:: @ 85D2B7A
- .2byte 421
- .2byte 425
- .2byte 431
- .2byte 437
- .2byte 439
- .2byte 456
- .2byte 460
- .2byte 465
- .2byte 466
- .2byte 517
- .2byte 521
- .2byte 527
- .2byte 533
- .2byte 535
- .2byte 552
- .2byte 556
- .2byte 561
- .2byte 562
- .2byte 613
- .2byte 617
- .2byte 623
- .2byte 629
- .2byte 631
- .2byte 648
- .2byte 652
- .2byte 657
- .2byte 658
- .2byte 709
- .2byte 713
- .2byte 719
- .2byte 725
- .2byte 727
- .2byte 744
- .2byte 748
- .2byte 753
- .2byte 754
- .2byte 766
- .2byte 777
- .2byte 788
- .2byte 799
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte 804
- .2byte 805
- .2byte 806
- .2byte 807
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte 824
- .2byte 825
- .2byte 826
- .2byte 827
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Bryon:: @ 85D2C44
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 759
- .2byte 760
- .2byte 761
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 766
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 770
- .2byte 771
- .2byte 772
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 777
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 781
- .2byte 782
- .2byte 783
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 788
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 792
- .2byte 793
- .2byte 794
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 799
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte 870
- .2byte 871
- .2byte 872
- .2byte 873
- .2byte 874
- .2byte 875
- .2byte 876
- .2byte 877
- .2byte 878
- .2byte 879
- .2byte 880
- .2byte 881
- .2byte -1
-
-gBattleFrontierTrainerMons_Ava:: @ 85D2CEA
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 380
- .2byte 381
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 385
- .2byte 386
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 468
- .2byte 469
- .2byte 470
- .2byte 471
- .2byte 472
- .2byte 473
- .2byte 474
- .2byte 475
- .2byte 476
- .2byte 477
- .2byte 478
- .2byte 479
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 483
- .2byte 484
- .2byte 485
- .2byte 486
- .2byte 487
- .2byte 488
- .2byte 489
- .2byte 490
- .2byte 491
- .2byte 564
- .2byte 565
- .2byte 566
- .2byte 567
- .2byte 568
- .2byte 569
- .2byte 570
- .2byte 571
- .2byte 572
- .2byte 573
- .2byte 574
- .2byte 575
- .2byte 576
- .2byte 577
- .2byte 578
- .2byte 579
- .2byte 580
- .2byte 581
- .2byte 582
- .2byte 583
- .2byte 584
- .2byte 585
- .2byte 586
- .2byte 587
- .2byte 660
- .2byte 661
- .2byte 662
- .2byte 663
- .2byte 664
- .2byte 665
- .2byte 666
- .2byte 667
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 671
- .2byte 672
- .2byte 673
- .2byte 674
- .2byte 675
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 679
- .2byte 680
- .2byte 681
- .2byte 682
- .2byte 683
- .2byte -1
-
-gBattleFrontierTrainerMons_Miriam:: @ 85D2DAC
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 415
- .2byte 416
- .2byte 417
- .2byte 418
- .2byte 419
- .2byte 492
- .2byte 493
- .2byte 494
- .2byte 495
- .2byte 496
- .2byte 497
- .2byte 498
- .2byte 499
- .2byte 500
- .2byte 501
- .2byte 502
- .2byte 503
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 511
- .2byte 512
- .2byte 513
- .2byte 514
- .2byte 515
- .2byte 588
- .2byte 589
- .2byte 590
- .2byte 591
- .2byte 592
- .2byte 593
- .2byte 594
- .2byte 595
- .2byte 596
- .2byte 597
- .2byte 598
- .2byte 599
- .2byte 600
- .2byte 601
- .2byte 602
- .2byte 603
- .2byte 604
- .2byte 605
- .2byte 606
- .2byte 607
- .2byte 608
- .2byte 609
- .2byte 610
- .2byte 611
- .2byte 684
- .2byte 685
- .2byte 686
- .2byte 687
- .2byte 688
- .2byte 689
- .2byte 690
- .2byte 691
- .2byte 692
- .2byte 693
- .2byte 694
- .2byte 695
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 703
- .2byte 704
- .2byte 705
- .2byte 706
- .2byte 707
- .2byte -1
-
-gBattleFrontierTrainerMons_Carrie:: @ 85D2E6E
- .2byte 421
- .2byte 425
- .2byte 431
- .2byte 437
- .2byte 439
- .2byte 456
- .2byte 460
- .2byte 465
- .2byte 466
- .2byte 517
- .2byte 521
- .2byte 527
- .2byte 533
- .2byte 535
- .2byte 552
- .2byte 556
- .2byte 561
- .2byte 562
- .2byte 613
- .2byte 617
- .2byte 623
- .2byte 629
- .2byte 631
- .2byte 648
- .2byte 652
- .2byte 657
- .2byte 658
- .2byte 709
- .2byte 713
- .2byte 719
- .2byte 725
- .2byte 727
- .2byte 744
- .2byte 748
- .2byte 753
- .2byte 754
- .2byte 765
- .2byte 776
- .2byte 787
- .2byte 798
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte 804
- .2byte 805
- .2byte 806
- .2byte 807
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte 824
- .2byte 825
- .2byte 826
- .2byte 827
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Gillian2:: @ 85D2F38
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 759
- .2byte 760
- .2byte 761
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 765
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 770
- .2byte 771
- .2byte 772
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 776
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 781
- .2byte 782
- .2byte 783
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 787
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 792
- .2byte 793
- .2byte 794
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 798
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte 870
- .2byte 871
- .2byte 872
- .2byte 873
- .2byte 874
- .2byte 875
- .2byte 876
- .2byte 877
- .2byte 878
- .2byte 879
- .2byte 880
- .2byte 881
- .2byte -1
-
-gBattleFrontierTrainerMons_Tyler:: @ 85D2FDE
- .2byte 660
- .2byte 661
- .2byte 662
- .2byte 663
- .2byte 664
- .2byte 665
- .2byte 666
- .2byte 667
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 671
- .2byte 672
- .2byte 673
- .2byte 674
- .2byte 675
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 679
- .2byte 680
- .2byte 681
- .2byte 682
- .2byte 683
- .2byte 684
- .2byte 685
- .2byte 686
- .2byte 687
- .2byte 688
- .2byte 689
- .2byte 690
- .2byte 691
- .2byte 692
- .2byte 693
- .2byte 694
- .2byte 695
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 703
- .2byte 704
- .2byte 705
- .2byte 706
- .2byte 707
- .2byte 708
- .2byte 709
- .2byte 710
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 714
- .2byte 715
- .2byte 716
- .2byte 717
- .2byte 718
- .2byte 719
- .2byte 720
- .2byte 721
- .2byte 722
- .2byte 723
- .2byte 724
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 728
- .2byte 729
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 733
- .2byte 734
- .2byte 735
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 739
- .2byte 740
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 744
- .2byte 745
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 752
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Chaz:: @ 85D30A0
- .2byte 564
- .2byte 565
- .2byte 566
- .2byte 567
- .2byte 568
- .2byte 569
- .2byte 570
- .2byte 571
- .2byte 572
- .2byte 573
- .2byte 574
- .2byte 575
- .2byte 576
- .2byte 577
- .2byte 578
- .2byte 579
- .2byte 580
- .2byte 581
- .2byte 582
- .2byte 583
- .2byte 584
- .2byte 585
- .2byte 586
- .2byte 587
- .2byte 588
- .2byte 589
- .2byte 590
- .2byte 591
- .2byte 592
- .2byte 593
- .2byte 594
- .2byte 595
- .2byte 596
- .2byte 597
- .2byte 598
- .2byte 599
- .2byte 600
- .2byte 601
- .2byte 602
- .2byte 603
- .2byte 604
- .2byte 605
- .2byte 606
- .2byte 607
- .2byte 608
- .2byte 609
- .2byte 610
- .2byte 611
- .2byte 612
- .2byte 613
- .2byte 614
- .2byte 615
- .2byte 616
- .2byte 617
- .2byte 618
- .2byte 619
- .2byte 620
- .2byte 621
- .2byte 622
- .2byte 623
- .2byte 624
- .2byte 625
- .2byte 626
- .2byte 627
- .2byte 628
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 632
- .2byte 633
- .2byte 634
- .2byte 635
- .2byte 636
- .2byte 637
- .2byte 638
- .2byte 639
- .2byte 640
- .2byte 641
- .2byte 642
- .2byte 643
- .2byte 644
- .2byte 645
- .2byte 646
- .2byte 647
- .2byte 648
- .2byte 649
- .2byte 650
- .2byte 651
- .2byte 652
- .2byte 653
- .2byte 654
- .2byte 655
- .2byte 656
- .2byte 657
- .2byte 658
- .2byte 659
- .2byte -1
-
-gBattleFrontierTrainerMons_Nelson:: @ 85D3162
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 759
- .2byte 760
- .2byte 761
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 766
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 770
- .2byte 771
- .2byte 772
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 777
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 781
- .2byte 782
- .2byte 783
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 788
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 792
- .2byte 793
- .2byte 794
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 799
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte 870
- .2byte 871
- .2byte 872
- .2byte 873
- .2byte 874
- .2byte 875
- .2byte 876
- .2byte 877
- .2byte 878
- .2byte 879
- .2byte 880
- .2byte 881
- .2byte -1
-
-gBattleFrontierTrainerMons_Shania:: @ 85D3208
- .2byte 468
- .2byte 469
- .2byte 470
- .2byte 471
- .2byte 472
- .2byte 473
- .2byte 474
- .2byte 475
- .2byte 476
- .2byte 477
- .2byte 478
- .2byte 479
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 483
- .2byte 484
- .2byte 485
- .2byte 486
- .2byte 487
- .2byte 488
- .2byte 489
- .2byte 490
- .2byte 491
- .2byte 492
- .2byte 493
- .2byte 494
- .2byte 495
- .2byte 496
- .2byte 497
- .2byte 498
- .2byte 499
- .2byte 500
- .2byte 501
- .2byte 502
- .2byte 503
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 511
- .2byte 512
- .2byte 513
- .2byte 514
- .2byte 515
- .2byte 516
- .2byte 517
- .2byte 518
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 522
- .2byte 523
- .2byte 524
- .2byte 525
- .2byte 526
- .2byte 527
- .2byte 528
- .2byte 529
- .2byte 530
- .2byte 531
- .2byte 532
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 536
- .2byte 537
- .2byte 538
- .2byte 539
- .2byte 540
- .2byte 541
- .2byte 542
- .2byte 543
- .2byte 544
- .2byte 545
- .2byte 546
- .2byte 547
- .2byte 548
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 552
- .2byte 553
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 560
- .2byte 561
- .2byte 562
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Stella:: @ 85D32CA
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 380
- .2byte 381
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 385
- .2byte 386
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 415
- .2byte 416
- .2byte 417
- .2byte 418
- .2byte 419
- .2byte 420
- .2byte 421
- .2byte 422
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 426
- .2byte 427
- .2byte 428
- .2byte 429
- .2byte 430
- .2byte 431
- .2byte 432
- .2byte 433
- .2byte 434
- .2byte 435
- .2byte 436
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 440
- .2byte 441
- .2byte 442
- .2byte 443
- .2byte 444
- .2byte 445
- .2byte 446
- .2byte 447
- .2byte 448
- .2byte 449
- .2byte 450
- .2byte 451
- .2byte 452
- .2byte 453
- .2byte 454
- .2byte 455
- .2byte 456
- .2byte 457
- .2byte 458
- .2byte 459
- .2byte 460
- .2byte 461
- .2byte 462
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte 466
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Dorine:: @ 85D338C
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 759
- .2byte 760
- .2byte 761
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 765
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 770
- .2byte 771
- .2byte 772
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 776
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 781
- .2byte 782
- .2byte 783
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 787
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 792
- .2byte 793
- .2byte 794
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 798
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte 870
- .2byte 871
- .2byte 872
- .2byte 873
- .2byte 874
- .2byte 875
- .2byte 876
- .2byte 877
- .2byte 878
- .2byte 879
- .2byte 880
- .2byte 881
- .2byte -1
-
-gBattleFrontierTrainerMons_Maddox:: @ 85D3432
- .2byte 403
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 450
- .2byte 454
- .2byte 456
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 465
- .2byte 499
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 529
- .2byte 531
- .2byte 536
- .2byte 546
- .2byte 550
- .2byte 552
- .2byte 555
- .2byte 557
- .2byte 559
- .2byte 561
- .2byte 595
- .2byte 604
- .2byte 605
- .2byte 606
- .2byte 625
- .2byte 627
- .2byte 632
- .2byte 642
- .2byte 646
- .2byte 648
- .2byte 651
- .2byte 653
- .2byte 655
- .2byte 657
- .2byte 691
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 721
- .2byte 723
- .2byte 728
- .2byte 738
- .2byte 742
- .2byte 744
- .2byte 747
- .2byte 749
- .2byte 751
- .2byte 753
- .2byte 765
- .2byte 766
- .2byte 776
- .2byte 777
- .2byte 787
- .2byte 788
- .2byte 798
- .2byte 799
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Davin:: @ 85D34F4
- .2byte 403
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 450
- .2byte 454
- .2byte 456
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 465
- .2byte 499
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 529
- .2byte 531
- .2byte 536
- .2byte 546
- .2byte 550
- .2byte 552
- .2byte 555
- .2byte 557
- .2byte 559
- .2byte 561
- .2byte 595
- .2byte 604
- .2byte 605
- .2byte 606
- .2byte 625
- .2byte 627
- .2byte 632
- .2byte 642
- .2byte 646
- .2byte 648
- .2byte 651
- .2byte 653
- .2byte 655
- .2byte 657
- .2byte 691
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 721
- .2byte 723
- .2byte 728
- .2byte 738
- .2byte 742
- .2byte 744
- .2byte 747
- .2byte 749
- .2byte 751
- .2byte 753
- .2byte 765
- .2byte 766
- .2byte 776
- .2byte 777
- .2byte 787
- .2byte 788
- .2byte 798
- .2byte 799
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Trevon:: @ 85D35B6
- .2byte 403
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 450
- .2byte 454
- .2byte 456
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 465
- .2byte 499
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 529
- .2byte 531
- .2byte 536
- .2byte 546
- .2byte 550
- .2byte 552
- .2byte 555
- .2byte 557
- .2byte 559
- .2byte 561
- .2byte 595
- .2byte 604
- .2byte 605
- .2byte 606
- .2byte 625
- .2byte 627
- .2byte 632
- .2byte 642
- .2byte 646
- .2byte 648
- .2byte 651
- .2byte 653
- .2byte 655
- .2byte 657
- .2byte 691
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 721
- .2byte 723
- .2byte 728
- .2byte 738
- .2byte 742
- .2byte 744
- .2byte 747
- .2byte 749
- .2byte 751
- .2byte 753
- .2byte 765
- .2byte 766
- .2byte 776
- .2byte 777
- .2byte 787
- .2byte 788
- .2byte 798
- .2byte 799
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Mateo:: @ 85D3678
- .2byte 373
- .2byte 382
- .2byte 390
- .2byte 402
- .2byte 403
- .2byte 416
- .2byte 417
- .2byte 424
- .2byte 431
- .2byte 432
- .2byte 435
- .2byte 450
- .2byte 451
- .2byte 469
- .2byte 480
- .2byte 486
- .2byte 498
- .2byte 499
- .2byte 512
- .2byte 513
- .2byte 520
- .2byte 527
- .2byte 528
- .2byte 531
- .2byte 546
- .2byte 547
- .2byte 565
- .2byte 574
- .2byte 582
- .2byte 594
- .2byte 595
- .2byte 608
- .2byte 609
- .2byte 616
- .2byte 623
- .2byte 624
- .2byte 627
- .2byte 642
- .2byte 643
- .2byte 661
- .2byte 670
- .2byte 678
- .2byte 690
- .2byte 691
- .2byte 704
- .2byte 705
- .2byte 712
- .2byte 719
- .2byte 720
- .2byte 723
- .2byte 738
- .2byte 739
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte -1
-
-gBattleFrontierTrainerMons_Bret:: @ 85D36EA
- .2byte 373
- .2byte 382
- .2byte 390
- .2byte 415
- .2byte 419
- .2byte 424
- .2byte 426
- .2byte 430
- .2byte 431
- .2byte 444
- .2byte 451
- .2byte 454
- .2byte 455
- .2byte 464
- .2byte 469
- .2byte 480
- .2byte 486
- .2byte 511
- .2byte 515
- .2byte 520
- .2byte 522
- .2byte 526
- .2byte 527
- .2byte 540
- .2byte 547
- .2byte 550
- .2byte 551
- .2byte 560
- .2byte 565
- .2byte 574
- .2byte 582
- .2byte 607
- .2byte 611
- .2byte 616
- .2byte 618
- .2byte 622
- .2byte 623
- .2byte 636
- .2byte 643
- .2byte 646
- .2byte 647
- .2byte 656
- .2byte 661
- .2byte 670
- .2byte 678
- .2byte 703
- .2byte 707
- .2byte 712
- .2byte 714
- .2byte 718
- .2byte 719
- .2byte 732
- .2byte 739
- .2byte 742
- .2byte 743
- .2byte 752
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte -1
-
-gBattleFrontierTrainerMons_Raul:: @ 85D3764
- .2byte 373
- .2byte 382
- .2byte 383
- .2byte 386
- .2byte 390
- .2byte 423
- .2byte 424
- .2byte 431
- .2byte 433
- .2byte 450
- .2byte 451
- .2byte 466
- .2byte 469
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 486
- .2byte 519
- .2byte 520
- .2byte 527
- .2byte 529
- .2byte 546
- .2byte 547
- .2byte 562
- .2byte 565
- .2byte 574
- .2byte 575
- .2byte 578
- .2byte 582
- .2byte 615
- .2byte 616
- .2byte 623
- .2byte 625
- .2byte 642
- .2byte 643
- .2byte 658
- .2byte 661
- .2byte 670
- .2byte 671
- .2byte 674
- .2byte 678
- .2byte 711
- .2byte 712
- .2byte 719
- .2byte 721
- .2byte 738
- .2byte 739
- .2byte 754
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte -1
-
-gBattleFrontierTrainerMons_Kay:: @ 85D37D6
- .2byte 373
- .2byte 382
- .2byte 387
- .2byte 390
- .2byte 402
- .2byte 403
- .2byte 413
- .2byte 414
- .2byte 424
- .2byte 427
- .2byte 431
- .2byte 433
- .2byte 451
- .2byte 469
- .2byte 470
- .2byte 480
- .2byte 486
- .2byte 498
- .2byte 499
- .2byte 509
- .2byte 510
- .2byte 520
- .2byte 523
- .2byte 527
- .2byte 529
- .2byte 547
- .2byte 565
- .2byte 574
- .2byte 579
- .2byte 582
- .2byte 594
- .2byte 595
- .2byte 605
- .2byte 606
- .2byte 616
- .2byte 619
- .2byte 623
- .2byte 625
- .2byte 643
- .2byte 661
- .2byte 670
- .2byte 675
- .2byte 678
- .2byte 690
- .2byte 691
- .2byte 701
- .2byte 702
- .2byte 712
- .2byte 715
- .2byte 719
- .2byte 721
- .2byte 739
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte -1
-
-gBattleFrontierTrainerMons_Elena:: @ 85D3848
- .2byte 373
- .2byte 382
- .2byte 390
- .2byte 415
- .2byte 419
- .2byte 424
- .2byte 426
- .2byte 430
- .2byte 431
- .2byte 444
- .2byte 451
- .2byte 454
- .2byte 455
- .2byte 464
- .2byte 469
- .2byte 480
- .2byte 486
- .2byte 511
- .2byte 515
- .2byte 520
- .2byte 522
- .2byte 526
- .2byte 527
- .2byte 540
- .2byte 547
- .2byte 550
- .2byte 551
- .2byte 560
- .2byte 565
- .2byte 574
- .2byte 582
- .2byte 607
- .2byte 611
- .2byte 616
- .2byte 618
- .2byte 622
- .2byte 623
- .2byte 636
- .2byte 643
- .2byte 646
- .2byte 647
- .2byte 656
- .2byte 661
- .2byte 670
- .2byte 678
- .2byte 703
- .2byte 707
- .2byte 712
- .2byte 714
- .2byte 718
- .2byte 719
- .2byte 732
- .2byte 739
- .2byte 742
- .2byte 743
- .2byte 752
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte -1
-
-gBattleFrontierTrainerMons_Alana:: @ 85D38C2
- .2byte 373
- .2byte 382
- .2byte 383
- .2byte 386
- .2byte 390
- .2byte 423
- .2byte 424
- .2byte 431
- .2byte 433
- .2byte 450
- .2byte 451
- .2byte 466
- .2byte 469
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 486
- .2byte 519
- .2byte 520
- .2byte 527
- .2byte 529
- .2byte 546
- .2byte 547
- .2byte 562
- .2byte 565
- .2byte 574
- .2byte 575
- .2byte 578
- .2byte 582
- .2byte 615
- .2byte 616
- .2byte 623
- .2byte 625
- .2byte 642
- .2byte 643
- .2byte 658
- .2byte 661
- .2byte 670
- .2byte 671
- .2byte 674
- .2byte 678
- .2byte 711
- .2byte 712
- .2byte 719
- .2byte 721
- .2byte 738
- .2byte 739
- .2byte 754
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte -1
-
-gBattleFrontierTrainerMons_Alexas:: @ 85D3934
- .2byte 382
- .2byte 387
- .2byte 403
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 431
- .2byte 433
- .2byte 435
- .2byte 450
- .2byte 459
- .2byte 461
- .2byte 465
- .2byte 466
- .2byte 470
- .2byte 480
- .2byte 499
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 527
- .2byte 529
- .2byte 531
- .2byte 546
- .2byte 555
- .2byte 557
- .2byte 561
- .2byte 562
- .2byte 574
- .2byte 579
- .2byte 595
- .2byte 615
- .2byte 616
- .2byte 617
- .2byte 623
- .2byte 625
- .2byte 627
- .2byte 642
- .2byte 651
- .2byte 653
- .2byte 657
- .2byte 658
- .2byte 670
- .2byte 675
- .2byte 691
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 719
- .2byte 721
- .2byte 723
- .2byte 738
- .2byte 747
- .2byte 749
- .2byte 753
- .2byte 754
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 804
- .2byte 805
- .2byte 806
- .2byte 807
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Weston:: @ 85D39FE
- .2byte 374
- .2byte 377
- .2byte 404
- .2byte 421
- .2byte 422
- .2byte 426
- .2byte 437
- .2byte 439
- .2byte 446
- .2byte 451
- .2byte 453
- .2byte 457
- .2byte 458
- .2byte 472
- .2byte 475
- .2byte 500
- .2byte 517
- .2byte 518
- .2byte 522
- .2byte 533
- .2byte 535
- .2byte 542
- .2byte 547
- .2byte 549
- .2byte 553
- .2byte 554
- .2byte 566
- .2byte 569
- .2byte 596
- .2byte 613
- .2byte 614
- .2byte 618
- .2byte 629
- .2byte 631
- .2byte 638
- .2byte 643
- .2byte 645
- .2byte 649
- .2byte 650
- .2byte 662
- .2byte 665
- .2byte 692
- .2byte 709
- .2byte 710
- .2byte 714
- .2byte 725
- .2byte 727
- .2byte 734
- .2byte 739
- .2byte 741
- .2byte 745
- .2byte 746
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 766
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 777
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 788
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 799
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Jasper:: @ 85D3AC8
- .2byte 378
- .2byte 388
- .2byte 400
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 416
- .2byte 429
- .2byte 432
- .2byte 438
- .2byte 447
- .2byte 452
- .2byte 456
- .2byte 460
- .2byte 462
- .2byte 463
- .2byte 471
- .2byte 476
- .2byte 496
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 512
- .2byte 525
- .2byte 528
- .2byte 534
- .2byte 543
- .2byte 548
- .2byte 552
- .2byte 556
- .2byte 558
- .2byte 559
- .2byte 570
- .2byte 580
- .2byte 592
- .2byte 601
- .2byte 602
- .2byte 603
- .2byte 608
- .2byte 621
- .2byte 624
- .2byte 630
- .2byte 639
- .2byte 644
- .2byte 648
- .2byte 652
- .2byte 654
- .2byte 655
- .2byte 666
- .2byte 676
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 704
- .2byte 717
- .2byte 720
- .2byte 726
- .2byte 735
- .2byte 740
- .2byte 744
- .2byte 748
- .2byte 750
- .2byte 751
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte 824
- .2byte 825
- .2byte 826
- .2byte 827
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Nadia:: @ 85D3B92
- .2byte 382
- .2byte 387
- .2byte 403
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 431
- .2byte 433
- .2byte 435
- .2byte 450
- .2byte 459
- .2byte 461
- .2byte 465
- .2byte 466
- .2byte 470
- .2byte 480
- .2byte 499
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 527
- .2byte 529
- .2byte 531
- .2byte 546
- .2byte 555
- .2byte 557
- .2byte 561
- .2byte 562
- .2byte 574
- .2byte 579
- .2byte 595
- .2byte 615
- .2byte 616
- .2byte 617
- .2byte 623
- .2byte 625
- .2byte 627
- .2byte 642
- .2byte 651
- .2byte 653
- .2byte 657
- .2byte 658
- .2byte 670
- .2byte 675
- .2byte 691
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 719
- .2byte 721
- .2byte 723
- .2byte 738
- .2byte 747
- .2byte 749
- .2byte 753
- .2byte 754
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 804
- .2byte 805
- .2byte 806
- .2byte 807
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte -1
-
-gBattleFrontierTrainerMons_Miranda:: @ 85D3C5C
- .2byte 374
- .2byte 377
- .2byte 404
- .2byte 421
- .2byte 422
- .2byte 426
- .2byte 437
- .2byte 439
- .2byte 446
- .2byte 451
- .2byte 453
- .2byte 457
- .2byte 458
- .2byte 472
- .2byte 475
- .2byte 500
- .2byte 517
- .2byte 518
- .2byte 522
- .2byte 533
- .2byte 535
- .2byte 542
- .2byte 547
- .2byte 549
- .2byte 553
- .2byte 554
- .2byte 566
- .2byte 569
- .2byte 596
- .2byte 613
- .2byte 614
- .2byte 618
- .2byte 629
- .2byte 631
- .2byte 638
- .2byte 643
- .2byte 645
- .2byte 649
- .2byte 650
- .2byte 662
- .2byte 665
- .2byte 692
- .2byte 709
- .2byte 710
- .2byte 714
- .2byte 725
- .2byte 727
- .2byte 734
- .2byte 739
- .2byte 741
- .2byte 745
- .2byte 746
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 765
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 776
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 787
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 798
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Emma:: @ 85D3D26
- .2byte 378
- .2byte 388
- .2byte 400
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 416
- .2byte 429
- .2byte 432
- .2byte 438
- .2byte 447
- .2byte 452
- .2byte 456
- .2byte 460
- .2byte 462
- .2byte 463
- .2byte 471
- .2byte 476
- .2byte 496
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 512
- .2byte 525
- .2byte 528
- .2byte 534
- .2byte 543
- .2byte 548
- .2byte 552
- .2byte 556
- .2byte 558
- .2byte 559
- .2byte 570
- .2byte 580
- .2byte 592
- .2byte 601
- .2byte 602
- .2byte 603
- .2byte 608
- .2byte 621
- .2byte 624
- .2byte 630
- .2byte 639
- .2byte 644
- .2byte 648
- .2byte 652
- .2byte 654
- .2byte 655
- .2byte 666
- .2byte 676
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 704
- .2byte 717
- .2byte 720
- .2byte 726
- .2byte 735
- .2byte 740
- .2byte 744
- .2byte 748
- .2byte 750
- .2byte 751
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte 824
- .2byte 825
- .2byte 826
- .2byte 827
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte -1
-
-gBattleFrontierTrainerMons_Rolando:: @ 85D3DF0
- .2byte 185
- .2byte 290
- .2byte 377
- .2byte 380
- .2byte 385
- .2byte 401
- .2byte 404
- .2byte 409
- .2byte 410
- .2byte 428
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 446
- .2byte 466
- .2byte 475
- .2byte 478
- .2byte 484
- .2byte 497
- .2byte 500
- .2byte 505
- .2byte 506
- .2byte 524
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 542
- .2byte 562
- .2byte 569
- .2byte 572
- .2byte 577
- .2byte 593
- .2byte 596
- .2byte 601
- .2byte 602
- .2byte 620
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 638
- .2byte 658
- .2byte 665
- .2byte 668
- .2byte 673
- .2byte 689
- .2byte 692
- .2byte 697
- .2byte 698
- .2byte 716
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 734
- .2byte 754
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 766
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 777
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 788
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 799
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 870
- .2byte 871
- .2byte 872
- .2byte 873
- .2byte 874
- .2byte 875
- .2byte -1
-
-gBattleFrontierTrainerMons_Stanly:: @ 85D3EAA
- .2byte 185
- .2byte 290
- .2byte 377
- .2byte 380
- .2byte 385
- .2byte 401
- .2byte 404
- .2byte 409
- .2byte 410
- .2byte 428
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 446
- .2byte 466
- .2byte 475
- .2byte 478
- .2byte 484
- .2byte 497
- .2byte 500
- .2byte 505
- .2byte 506
- .2byte 524
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 542
- .2byte 562
- .2byte 569
- .2byte 572
- .2byte 577
- .2byte 593
- .2byte 596
- .2byte 601
- .2byte 602
- .2byte 620
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 638
- .2byte 658
- .2byte 665
- .2byte 668
- .2byte 673
- .2byte 689
- .2byte 692
- .2byte 697
- .2byte 698
- .2byte 716
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 734
- .2byte 754
- .2byte 759
- .2byte 760
- .2byte 761
- .2byte 766
- .2byte 770
- .2byte 771
- .2byte 772
- .2byte 777
- .2byte 781
- .2byte 782
- .2byte 783
- .2byte 788
- .2byte 792
- .2byte 793
- .2byte 794
- .2byte 799
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 876
- .2byte 877
- .2byte 878
- .2byte 879
- .2byte 880
- .2byte 881
- .2byte -1
-
-gBattleFrontierTrainerMons_Dario:: @ 85D3F64
- .2byte 185
- .2byte 290
- .2byte 377
- .2byte 380
- .2byte 385
- .2byte 401
- .2byte 404
- .2byte 409
- .2byte 410
- .2byte 428
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 446
- .2byte 466
- .2byte 475
- .2byte 478
- .2byte 484
- .2byte 497
- .2byte 500
- .2byte 505
- .2byte 506
- .2byte 524
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 542
- .2byte 562
- .2byte 569
- .2byte 572
- .2byte 577
- .2byte 593
- .2byte 596
- .2byte 601
- .2byte 602
- .2byte 620
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 638
- .2byte 658
- .2byte 665
- .2byte 668
- .2byte 673
- .2byte 689
- .2byte 692
- .2byte 697
- .2byte 698
- .2byte 716
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 734
- .2byte 754
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 766
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 777
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 788
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 799
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte -1
-
-gBattleFrontierTrainerMons_Karlee:: @ 85D401E
- .2byte 185
- .2byte 290
- .2byte 377
- .2byte 380
- .2byte 385
- .2byte 401
- .2byte 404
- .2byte 409
- .2byte 410
- .2byte 428
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 446
- .2byte 466
- .2byte 475
- .2byte 478
- .2byte 484
- .2byte 497
- .2byte 500
- .2byte 505
- .2byte 506
- .2byte 524
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 542
- .2byte 562
- .2byte 569
- .2byte 572
- .2byte 577
- .2byte 593
- .2byte 596
- .2byte 601
- .2byte 602
- .2byte 620
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 638
- .2byte 658
- .2byte 665
- .2byte 668
- .2byte 673
- .2byte 689
- .2byte 692
- .2byte 697
- .2byte 698
- .2byte 716
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 734
- .2byte 754
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 765
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 776
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 787
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 798
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 870
- .2byte 871
- .2byte 872
- .2byte 873
- .2byte 874
- .2byte 875
- .2byte -1
-
-gBattleFrontierTrainerMons_Jaylin:: @ 85D40D8
- .2byte 185
- .2byte 290
- .2byte 377
- .2byte 380
- .2byte 385
- .2byte 401
- .2byte 404
- .2byte 409
- .2byte 410
- .2byte 428
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 446
- .2byte 466
- .2byte 475
- .2byte 478
- .2byte 484
- .2byte 497
- .2byte 500
- .2byte 505
- .2byte 506
- .2byte 524
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 542
- .2byte 562
- .2byte 569
- .2byte 572
- .2byte 577
- .2byte 593
- .2byte 596
- .2byte 601
- .2byte 602
- .2byte 620
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 638
- .2byte 658
- .2byte 665
- .2byte 668
- .2byte 673
- .2byte 689
- .2byte 692
- .2byte 697
- .2byte 698
- .2byte 716
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 734
- .2byte 754
- .2byte 759
- .2byte 760
- .2byte 761
- .2byte 765
- .2byte 770
- .2byte 771
- .2byte 772
- .2byte 776
- .2byte 781
- .2byte 782
- .2byte 783
- .2byte 787
- .2byte 792
- .2byte 793
- .2byte 794
- .2byte 798
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 876
- .2byte 877
- .2byte 878
- .2byte 879
- .2byte 880
- .2byte 881
- .2byte -1
-
-gBattleFrontierTrainerMons_Ingrid:: @ 85D4192
- .2byte 185
- .2byte 290
- .2byte 377
- .2byte 380
- .2byte 385
- .2byte 401
- .2byte 404
- .2byte 409
- .2byte 410
- .2byte 428
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 446
- .2byte 466
- .2byte 475
- .2byte 478
- .2byte 484
- .2byte 497
- .2byte 500
- .2byte 505
- .2byte 506
- .2byte 524
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 542
- .2byte 562
- .2byte 569
- .2byte 572
- .2byte 577
- .2byte 593
- .2byte 596
- .2byte 601
- .2byte 602
- .2byte 620
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 638
- .2byte 658
- .2byte 665
- .2byte 668
- .2byte 673
- .2byte 689
- .2byte 692
- .2byte 697
- .2byte 698
- .2byte 716
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 734
- .2byte 754
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 765
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 776
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 787
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 798
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte -1
-
-gBattleFrontierTrainerMons_Delilah:: @ 85D424C
- .2byte 347
- .2byte 352
- .2byte 374
- .2byte 378
- .2byte 398
- .2byte 421
- .2byte 426
- .2byte 447
- .2byte 472
- .2byte 476
- .2byte 494
- .2byte 517
- .2byte 522
- .2byte 543
- .2byte 566
- .2byte 570
- .2byte 590
- .2byte 613
- .2byte 618
- .2byte 639
- .2byte 662
- .2byte 666
- .2byte 686
- .2byte 709
- .2byte 714
- .2byte 735
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte -1
-
-gBattleFrontierTrainerMons_Carly:: @ 85D428A
- .2byte 344
- .2byte 374
- .2byte 378
- .2byte 394
- .2byte 395
- .2byte 405
- .2byte 413
- .2byte 414
- .2byte 420
- .2byte 421
- .2byte 434
- .2byte 441
- .2byte 457
- .2byte 472
- .2byte 476
- .2byte 490
- .2byte 491
- .2byte 501
- .2byte 509
- .2byte 510
- .2byte 516
- .2byte 517
- .2byte 530
- .2byte 537
- .2byte 553
- .2byte 566
- .2byte 570
- .2byte 586
- .2byte 587
- .2byte 597
- .2byte 605
- .2byte 606
- .2byte 612
- .2byte 613
- .2byte 626
- .2byte 633
- .2byte 649
- .2byte 662
- .2byte 666
- .2byte 682
- .2byte 683
- .2byte 693
- .2byte 701
- .2byte 702
- .2byte 708
- .2byte 709
- .2byte 722
- .2byte 729
- .2byte 745
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte -1
-
-gBattleFrontierTrainerMons_Lexie:: @ 85D42F6
- .2byte 344
- .2byte 347
- .2byte 352
- .2byte 394
- .2byte 395
- .2byte 398
- .2byte 405
- .2byte 413
- .2byte 414
- .2byte 420
- .2byte 421
- .2byte 426
- .2byte 434
- .2byte 441
- .2byte 447
- .2byte 457
- .2byte 490
- .2byte 491
- .2byte 494
- .2byte 501
- .2byte 509
- .2byte 510
- .2byte 516
- .2byte 517
- .2byte 522
- .2byte 530
- .2byte 537
- .2byte 543
- .2byte 553
- .2byte 586
- .2byte 587
- .2byte 590
- .2byte 597
- .2byte 605
- .2byte 606
- .2byte 612
- .2byte 613
- .2byte 618
- .2byte 626
- .2byte 633
- .2byte 639
- .2byte 649
- .2byte 682
- .2byte 683
- .2byte 686
- .2byte 693
- .2byte 701
- .2byte 702
- .2byte 708
- .2byte 709
- .2byte 714
- .2byte 722
- .2byte 729
- .2byte 735
- .2byte 745
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte -1
-
-gBattleFrontierTrainerMons_Miller:: @ 85D436E
- .2byte 345
- .2byte 376
- .2byte 386
- .2byte 387
- .2byte 397
- .2byte 399
- .2byte 402
- .2byte 403
- .2byte 406
- .2byte 408
- .2byte 411
- .2byte 413
- .2byte 414
- .2byte 425
- .2byte 427
- .2byte 429
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 441
- .2byte 445
- .2byte 448
- .2byte 449
- .2byte 450
- .2byte 452
- .2byte 454
- .2byte 456
- .2byte 458
- .2byte 459
- .2byte 460
- .2byte 462
- .2byte 465
- .2byte 466
- .2byte 467
- .2byte 470
- .2byte 474
- .2byte 482
- .2byte 493
- .2byte 495
- .2byte 498
- .2byte 499
- .2byte 502
- .2byte 504
- .2byte 507
- .2byte 509
- .2byte 510
- .2byte 521
- .2byte 523
- .2byte 525
- .2byte 529
- .2byte 531
- .2byte 536
- .2byte 537
- .2byte 541
- .2byte 544
- .2byte 545
- .2byte 546
- .2byte 548
- .2byte 550
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 558
- .2byte 561
- .2byte 562
- .2byte 563
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Marv:: @ 85D441E
- .2byte 345
- .2byte 568
- .2byte 578
- .2byte 579
- .2byte 589
- .2byte 591
- .2byte 594
- .2byte 595
- .2byte 598
- .2byte 600
- .2byte 603
- .2byte 605
- .2byte 606
- .2byte 617
- .2byte 619
- .2byte 621
- .2byte 625
- .2byte 627
- .2byte 632
- .2byte 633
- .2byte 637
- .2byte 640
- .2byte 641
- .2byte 642
- .2byte 644
- .2byte 646
- .2byte 648
- .2byte 650
- .2byte 651
- .2byte 652
- .2byte 654
- .2byte 657
- .2byte 658
- .2byte 659
- .2byte 664
- .2byte 674
- .2byte 675
- .2byte 685
- .2byte 687
- .2byte 690
- .2byte 691
- .2byte 694
- .2byte 696
- .2byte 699
- .2byte 701
- .2byte 702
- .2byte 713
- .2byte 715
- .2byte 717
- .2byte 721
- .2byte 723
- .2byte 728
- .2byte 729
- .2byte 733
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 740
- .2byte 742
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 750
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Layton:: @ 85D44CE
- .2byte 345
- .2byte 425
- .2byte 433
- .2byte 435
- .2byte 445
- .2byte 450
- .2byte 454
- .2byte 456
- .2byte 458
- .2byte 459
- .2byte 460
- .2byte 465
- .2byte 466
- .2byte 521
- .2byte 529
- .2byte 531
- .2byte 541
- .2byte 546
- .2byte 550
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 561
- .2byte 562
- .2byte 617
- .2byte 625
- .2byte 627
- .2byte 637
- .2byte 642
- .2byte 646
- .2byte 648
- .2byte 650
- .2byte 651
- .2byte 652
- .2byte 657
- .2byte 658
- .2byte 713
- .2byte 721
- .2byte 723
- .2byte 733
- .2byte 738
- .2byte 742
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 753
- .2byte 754
- .2byte 804
- .2byte 805
- .2byte 806
- .2byte 807
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte 824
- .2byte 825
- .2byte 826
- .2byte 827
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Brooks:: @ 85D4582
- .2byte 660
- .2byte 661
- .2byte 662
- .2byte 663
- .2byte 664
- .2byte 665
- .2byte 666
- .2byte 667
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 671
- .2byte 672
- .2byte 673
- .2byte 674
- .2byte 675
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 679
- .2byte 680
- .2byte 681
- .2byte 682
- .2byte 683
- .2byte 684
- .2byte 685
- .2byte 686
- .2byte 687
- .2byte 688
- .2byte 689
- .2byte 690
- .2byte 691
- .2byte 692
- .2byte 693
- .2byte 694
- .2byte 695
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 703
- .2byte 704
- .2byte 705
- .2byte 706
- .2byte 707
- .2byte 708
- .2byte 709
- .2byte 710
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 714
- .2byte 715
- .2byte 716
- .2byte 717
- .2byte 718
- .2byte 719
- .2byte 720
- .2byte 721
- .2byte 722
- .2byte 723
- .2byte 724
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 728
- .2byte 729
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 733
- .2byte 734
- .2byte 735
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 739
- .2byte 740
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 744
- .2byte 745
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 752
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Gregory:: @ 85D4644
- .2byte 421
- .2byte 425
- .2byte 431
- .2byte 437
- .2byte 439
- .2byte 456
- .2byte 460
- .2byte 465
- .2byte 466
- .2byte 517
- .2byte 521
- .2byte 527
- .2byte 533
- .2byte 535
- .2byte 552
- .2byte 556
- .2byte 561
- .2byte 562
- .2byte 613
- .2byte 617
- .2byte 623
- .2byte 629
- .2byte 631
- .2byte 648
- .2byte 652
- .2byte 657
- .2byte 658
- .2byte 709
- .2byte 713
- .2byte 719
- .2byte 725
- .2byte 727
- .2byte 744
- .2byte 748
- .2byte 753
- .2byte 754
- .2byte 765
- .2byte 766
- .2byte 776
- .2byte 777
- .2byte 787
- .2byte 788
- .2byte 798
- .2byte 799
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte 804
- .2byte 805
- .2byte 806
- .2byte 807
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte 824
- .2byte 825
- .2byte 826
- .2byte 827
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Reese:: @ 85D470E
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 759
- .2byte 760
- .2byte 761
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 765
- .2byte 766
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 770
- .2byte 771
- .2byte 772
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 776
- .2byte 777
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 781
- .2byte 782
- .2byte 783
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 787
- .2byte 788
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 792
- .2byte 793
- .2byte 794
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 798
- .2byte 799
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte 842
- .2byte 843
- .2byte 844
- .2byte 845
- .2byte 846
- .2byte 847
- .2byte 848
- .2byte 849
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte 870
- .2byte 871
- .2byte 872
- .2byte 873
- .2byte 874
- .2byte 875
- .2byte 876
- .2byte 877
- .2byte 878
- .2byte 879
- .2byte 880
- .2byte 881
- .2byte -1
-
-gBattleFrontierTrainerMons_Mason:: @ 85D47C4
- .2byte 660
- .2byte 661
- .2byte 662
- .2byte 663
- .2byte 664
- .2byte 665
- .2byte 666
- .2byte 667
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 671
- .2byte 672
- .2byte 673
- .2byte 674
- .2byte 675
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 679
- .2byte 680
- .2byte 681
- .2byte 682
- .2byte 683
- .2byte 684
- .2byte 685
- .2byte 686
- .2byte 687
- .2byte 688
- .2byte 689
- .2byte 690
- .2byte 691
- .2byte 692
- .2byte 693
- .2byte 694
- .2byte 695
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 703
- .2byte 704
- .2byte 705
- .2byte 706
- .2byte 707
- .2byte 708
- .2byte 709
- .2byte 710
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 714
- .2byte 715
- .2byte 716
- .2byte 717
- .2byte 718
- .2byte 719
- .2byte 720
- .2byte 721
- .2byte 722
- .2byte 723
- .2byte 724
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 728
- .2byte 729
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 733
- .2byte 734
- .2byte 735
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 739
- .2byte 740
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 744
- .2byte 745
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 752
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Toby:: @ 85D4886
- .2byte 564
- .2byte 565
- .2byte 566
- .2byte 567
- .2byte 568
- .2byte 569
- .2byte 570
- .2byte 571
- .2byte 572
- .2byte 573
- .2byte 574
- .2byte 575
- .2byte 576
- .2byte 577
- .2byte 578
- .2byte 579
- .2byte 580
- .2byte 581
- .2byte 582
- .2byte 583
- .2byte 584
- .2byte 585
- .2byte 586
- .2byte 587
- .2byte 588
- .2byte 589
- .2byte 590
- .2byte 591
- .2byte 592
- .2byte 593
- .2byte 594
- .2byte 595
- .2byte 596
- .2byte 597
- .2byte 598
- .2byte 599
- .2byte 600
- .2byte 601
- .2byte 602
- .2byte 603
- .2byte 604
- .2byte 605
- .2byte 606
- .2byte 607
- .2byte 608
- .2byte 609
- .2byte 610
- .2byte 611
- .2byte 612
- .2byte 613
- .2byte 614
- .2byte 615
- .2byte 616
- .2byte 617
- .2byte 618
- .2byte 619
- .2byte 620
- .2byte 621
- .2byte 622
- .2byte 623
- .2byte 624
- .2byte 625
- .2byte 626
- .2byte 627
- .2byte 628
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 632
- .2byte 633
- .2byte 634
- .2byte 635
- .2byte 636
- .2byte 637
- .2byte 638
- .2byte 639
- .2byte 640
- .2byte 641
- .2byte 642
- .2byte 643
- .2byte 644
- .2byte 645
- .2byte 646
- .2byte 647
- .2byte 648
- .2byte 649
- .2byte 650
- .2byte 651
- .2byte 652
- .2byte 653
- .2byte 654
- .2byte 655
- .2byte 656
- .2byte 657
- .2byte 658
- .2byte 659
- .2byte -1
-
-gBattleFrontierTrainerMons_Dorothy:: @ 85D4948
- .2byte 468
- .2byte 469
- .2byte 470
- .2byte 471
- .2byte 472
- .2byte 473
- .2byte 474
- .2byte 475
- .2byte 476
- .2byte 477
- .2byte 478
- .2byte 479
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 483
- .2byte 484
- .2byte 485
- .2byte 486
- .2byte 487
- .2byte 488
- .2byte 489
- .2byte 490
- .2byte 491
- .2byte 492
- .2byte 493
- .2byte 494
- .2byte 495
- .2byte 496
- .2byte 497
- .2byte 498
- .2byte 499
- .2byte 500
- .2byte 501
- .2byte 502
- .2byte 503
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 511
- .2byte 512
- .2byte 513
- .2byte 514
- .2byte 515
- .2byte 516
- .2byte 517
- .2byte 518
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 522
- .2byte 523
- .2byte 524
- .2byte 525
- .2byte 526
- .2byte 527
- .2byte 528
- .2byte 529
- .2byte 530
- .2byte 531
- .2byte 532
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 536
- .2byte 537
- .2byte 538
- .2byte 539
- .2byte 540
- .2byte 541
- .2byte 542
- .2byte 543
- .2byte 544
- .2byte 545
- .2byte 546
- .2byte 547
- .2byte 548
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 552
- .2byte 553
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 560
- .2byte 561
- .2byte 562
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Piper:: @ 85D4A0A
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 380
- .2byte 381
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 385
- .2byte 386
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 415
- .2byte 416
- .2byte 417
- .2byte 418
- .2byte 419
- .2byte 420
- .2byte 421
- .2byte 422
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 426
- .2byte 427
- .2byte 428
- .2byte 429
- .2byte 430
- .2byte 431
- .2byte 432
- .2byte 433
- .2byte 434
- .2byte 435
- .2byte 436
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 440
- .2byte 441
- .2byte 442
- .2byte 443
- .2byte 444
- .2byte 445
- .2byte 446
- .2byte 447
- .2byte 448
- .2byte 449
- .2byte 450
- .2byte 451
- .2byte 452
- .2byte 453
- .2byte 454
- .2byte 455
- .2byte 456
- .2byte 457
- .2byte 458
- .2byte 459
- .2byte 460
- .2byte 461
- .2byte 462
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte 466
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Finn:: @ 85D4ACC
- .2byte 317
- .2byte 371
- .2byte 373
- .2byte 377
- .2byte 390
- .2byte 392
- .2byte 399
- .2byte 431
- .2byte 452
- .2byte 456
- .2byte 469
- .2byte 475
- .2byte 486
- .2byte 488
- .2byte 495
- .2byte 527
- .2byte 548
- .2byte 552
- .2byte 565
- .2byte 569
- .2byte 573
- .2byte 576
- .2byte 580
- .2byte 582
- .2byte 584
- .2byte 591
- .2byte 592
- .2byte 601
- .2byte 602
- .2byte 610
- .2byte 621
- .2byte 623
- .2byte 626
- .2byte 631
- .2byte 634
- .2byte 640
- .2byte 641
- .2byte 644
- .2byte 648
- .2byte 650
- .2byte 651
- .2byte 653
- .2byte 655
- .2byte 661
- .2byte 665
- .2byte 669
- .2byte 672
- .2byte 676
- .2byte 678
- .2byte 680
- .2byte 687
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 706
- .2byte 717
- .2byte 719
- .2byte 722
- .2byte 727
- .2byte 730
- .2byte 736
- .2byte 737
- .2byte 740
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 749
- .2byte 751
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte -1
-
-gBattleFrontierTrainerMons_Samir:: @ 85D4B6E
- .2byte 317
- .2byte 371
- .2byte 373
- .2byte 377
- .2byte 390
- .2byte 392
- .2byte 399
- .2byte 431
- .2byte 452
- .2byte 456
- .2byte 469
- .2byte 475
- .2byte 486
- .2byte 488
- .2byte 495
- .2byte 527
- .2byte 548
- .2byte 552
- .2byte 565
- .2byte 569
- .2byte 573
- .2byte 576
- .2byte 580
- .2byte 582
- .2byte 584
- .2byte 591
- .2byte 592
- .2byte 601
- .2byte 602
- .2byte 610
- .2byte 621
- .2byte 623
- .2byte 626
- .2byte 631
- .2byte 634
- .2byte 640
- .2byte 641
- .2byte 644
- .2byte 648
- .2byte 650
- .2byte 651
- .2byte 653
- .2byte 655
- .2byte 661
- .2byte 665
- .2byte 669
- .2byte 672
- .2byte 676
- .2byte 678
- .2byte 680
- .2byte 687
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 706
- .2byte 717
- .2byte 719
- .2byte 722
- .2byte 727
- .2byte 730
- .2byte 736
- .2byte 737
- .2byte 740
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 749
- .2byte 751
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte -1
-
-gBattleFrontierTrainerMons_Fiona:: @ 85D4C10
- .2byte 317
- .2byte 371
- .2byte 373
- .2byte 377
- .2byte 381
- .2byte 384
- .2byte 388
- .2byte 390
- .2byte 392
- .2byte 399
- .2byte 400
- .2byte 409
- .2byte 410
- .2byte 418
- .2byte 429
- .2byte 431
- .2byte 434
- .2byte 439
- .2byte 442
- .2byte 448
- .2byte 449
- .2byte 452
- .2byte 456
- .2byte 458
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 469
- .2byte 471
- .2byte 475
- .2byte 479
- .2byte 483
- .2byte 486
- .2byte 488
- .2byte 495
- .2byte 496
- .2byte 505
- .2byte 506
- .2byte 514
- .2byte 525
- .2byte 527
- .2byte 530
- .2byte 535
- .2byte 538
- .2byte 544
- .2byte 545
- .2byte 548
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 557
- .2byte 559
- .2byte 565
- .2byte 569
- .2byte 582
- .2byte 584
- .2byte 591
- .2byte 623
- .2byte 644
- .2byte 648
- .2byte 661
- .2byte 665
- .2byte 678
- .2byte 680
- .2byte 687
- .2byte 719
- .2byte 740
- .2byte 744
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte -1
-
-gBattleFrontierTrainerMons_Gloria:: @ 85D4CB2
- .2byte 317
- .2byte 371
- .2byte 373
- .2byte 377
- .2byte 381
- .2byte 384
- .2byte 388
- .2byte 390
- .2byte 392
- .2byte 399
- .2byte 400
- .2byte 409
- .2byte 410
- .2byte 418
- .2byte 429
- .2byte 431
- .2byte 434
- .2byte 439
- .2byte 442
- .2byte 448
- .2byte 449
- .2byte 452
- .2byte 456
- .2byte 458
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 469
- .2byte 471
- .2byte 475
- .2byte 479
- .2byte 483
- .2byte 486
- .2byte 488
- .2byte 495
- .2byte 496
- .2byte 505
- .2byte 506
- .2byte 514
- .2byte 525
- .2byte 527
- .2byte 530
- .2byte 535
- .2byte 538
- .2byte 544
- .2byte 545
- .2byte 548
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 557
- .2byte 559
- .2byte 565
- .2byte 569
- .2byte 582
- .2byte 584
- .2byte 591
- .2byte 623
- .2byte 644
- .2byte 648
- .2byte 661
- .2byte 665
- .2byte 678
- .2byte 680
- .2byte 687
- .2byte 719
- .2byte 740
- .2byte 744
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte -1
-
-gBattleFrontierTrainerMons_Nico:: @ 85D4D54
- .2byte 660
- .2byte 661
- .2byte 662
- .2byte 663
- .2byte 664
- .2byte 665
- .2byte 666
- .2byte 667
- .2byte 668
- .2byte 669
- .2byte 670
- .2byte 671
- .2byte 672
- .2byte 673
- .2byte 674
- .2byte 675
- .2byte 676
- .2byte 677
- .2byte 678
- .2byte 679
- .2byte 680
- .2byte 681
- .2byte 682
- .2byte 683
- .2byte 684
- .2byte 685
- .2byte 686
- .2byte 687
- .2byte 688
- .2byte 689
- .2byte 690
- .2byte 691
- .2byte 692
- .2byte 693
- .2byte 694
- .2byte 695
- .2byte 696
- .2byte 697
- .2byte 698
- .2byte 699
- .2byte 700
- .2byte 701
- .2byte 702
- .2byte 703
- .2byte 704
- .2byte 705
- .2byte 706
- .2byte 707
- .2byte 708
- .2byte 709
- .2byte 710
- .2byte 711
- .2byte 712
- .2byte 713
- .2byte 714
- .2byte 715
- .2byte 716
- .2byte 717
- .2byte 718
- .2byte 719
- .2byte 720
- .2byte 721
- .2byte 722
- .2byte 723
- .2byte 724
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 728
- .2byte 729
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 733
- .2byte 734
- .2byte 735
- .2byte 736
- .2byte 737
- .2byte 738
- .2byte 739
- .2byte 740
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 744
- .2byte 745
- .2byte 746
- .2byte 747
- .2byte 748
- .2byte 749
- .2byte 750
- .2byte 751
- .2byte 752
- .2byte 753
- .2byte 754
- .2byte 755
- .2byte -1
-
-gBattleFrontierTrainerMons_Jeremy:: @ 85D4E16
- .2byte 564
- .2byte 565
- .2byte 566
- .2byte 567
- .2byte 568
- .2byte 569
- .2byte 570
- .2byte 571
- .2byte 572
- .2byte 573
- .2byte 574
- .2byte 575
- .2byte 576
- .2byte 577
- .2byte 578
- .2byte 579
- .2byte 580
- .2byte 581
- .2byte 582
- .2byte 583
- .2byte 584
- .2byte 585
- .2byte 586
- .2byte 587
- .2byte 588
- .2byte 589
- .2byte 590
- .2byte 591
- .2byte 592
- .2byte 593
- .2byte 594
- .2byte 595
- .2byte 596
- .2byte 597
- .2byte 598
- .2byte 599
- .2byte 600
- .2byte 601
- .2byte 602
- .2byte 603
- .2byte 604
- .2byte 605
- .2byte 606
- .2byte 607
- .2byte 608
- .2byte 609
- .2byte 610
- .2byte 611
- .2byte 612
- .2byte 613
- .2byte 614
- .2byte 615
- .2byte 616
- .2byte 617
- .2byte 618
- .2byte 619
- .2byte 620
- .2byte 621
- .2byte 622
- .2byte 623
- .2byte 624
- .2byte 625
- .2byte 626
- .2byte 627
- .2byte 628
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 632
- .2byte 633
- .2byte 634
- .2byte 635
- .2byte 636
- .2byte 637
- .2byte 638
- .2byte 639
- .2byte 640
- .2byte 641
- .2byte 642
- .2byte 643
- .2byte 644
- .2byte 645
- .2byte 646
- .2byte 647
- .2byte 648
- .2byte 649
- .2byte 650
- .2byte 651
- .2byte 652
- .2byte 653
- .2byte 654
- .2byte 655
- .2byte 656
- .2byte 657
- .2byte 658
- .2byte 659
- .2byte -1
-
-gBattleFrontierTrainerMons_Caitlin:: @ 85D4ED8
- .2byte 468
- .2byte 469
- .2byte 470
- .2byte 471
- .2byte 472
- .2byte 473
- .2byte 474
- .2byte 475
- .2byte 476
- .2byte 477
- .2byte 478
- .2byte 479
- .2byte 480
- .2byte 481
- .2byte 482
- .2byte 483
- .2byte 484
- .2byte 485
- .2byte 486
- .2byte 487
- .2byte 488
- .2byte 489
- .2byte 490
- .2byte 491
- .2byte 492
- .2byte 493
- .2byte 494
- .2byte 495
- .2byte 496
- .2byte 497
- .2byte 498
- .2byte 499
- .2byte 500
- .2byte 501
- .2byte 502
- .2byte 503
- .2byte 504
- .2byte 505
- .2byte 506
- .2byte 507
- .2byte 508
- .2byte 509
- .2byte 510
- .2byte 511
- .2byte 512
- .2byte 513
- .2byte 514
- .2byte 515
- .2byte 516
- .2byte 517
- .2byte 518
- .2byte 519
- .2byte 520
- .2byte 521
- .2byte 522
- .2byte 523
- .2byte 524
- .2byte 525
- .2byte 526
- .2byte 527
- .2byte 528
- .2byte 529
- .2byte 530
- .2byte 531
- .2byte 532
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 536
- .2byte 537
- .2byte 538
- .2byte 539
- .2byte 540
- .2byte 541
- .2byte 542
- .2byte 543
- .2byte 544
- .2byte 545
- .2byte 546
- .2byte 547
- .2byte 548
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 552
- .2byte 553
- .2byte 554
- .2byte 555
- .2byte 556
- .2byte 557
- .2byte 558
- .2byte 559
- .2byte 560
- .2byte 561
- .2byte 562
- .2byte 563
- .2byte -1
-
-gBattleFrontierTrainerMons_Reena:: @ 85D4F9A
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 380
- .2byte 381
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 385
- .2byte 386
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 412
- .2byte 413
- .2byte 414
- .2byte 415
- .2byte 416
- .2byte 417
- .2byte 418
- .2byte 419
- .2byte 420
- .2byte 421
- .2byte 422
- .2byte 423
- .2byte 424
- .2byte 425
- .2byte 426
- .2byte 427
- .2byte 428
- .2byte 429
- .2byte 430
- .2byte 431
- .2byte 432
- .2byte 433
- .2byte 434
- .2byte 435
- .2byte 436
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 440
- .2byte 441
- .2byte 442
- .2byte 443
- .2byte 444
- .2byte 445
- .2byte 446
- .2byte 447
- .2byte 448
- .2byte 449
- .2byte 450
- .2byte 451
- .2byte 452
- .2byte 453
- .2byte 454
- .2byte 455
- .2byte 456
- .2byte 457
- .2byte 458
- .2byte 459
- .2byte 460
- .2byte 461
- .2byte 462
- .2byte 463
- .2byte 464
- .2byte 465
- .2byte 466
- .2byte 467
- .2byte -1
-
-gBattleFrontierTrainerMons_Avery:: @ 85D505C
- .2byte 21
- .2byte 238
- .2byte 282
- .2byte 303
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 383
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 432
- .2byte 481
- .2byte 513
- .2byte 519
- .2byte 520
- .2byte 528
- .2byte 575
- .2byte 609
- .2byte 615
- .2byte 616
- .2byte 624
- .2byte 671
- .2byte 705
- .2byte 711
- .2byte 712
- .2byte 720
- .2byte -1
-
-gBattleFrontierTrainerMons_Liam:: @ 85D5096
- .2byte 21
- .2byte 238
- .2byte 282
- .2byte 303
- .2byte 331
- .2byte 343
- .2byte 368
- .2byte 369
- .2byte 383
- .2byte 417
- .2byte 423
- .2byte 424
- .2byte 432
- .2byte 481
- .2byte 513
- .2byte 519
- .2byte 520
- .2byte 528
- .2byte 575
- .2byte 609
- .2byte 615
- .2byte 616
- .2byte 624
- .2byte 671
- .2byte 705
- .2byte 711
- .2byte 712
- .2byte 720
- .2byte -1
-
-gBattleFrontierTrainerMons_Theo:: @ 85D50D0
- .2byte 333
- .2byte 347
- .2byte 350
- .2byte 354
- .2byte 358
- .2byte 361
- .2byte 362
- .2byte 363
- .2byte 364
- .2byte 371
- .2byte 381
- .2byte 384
- .2byte 429
- .2byte 434
- .2byte 439
- .2byte 479
- .2byte 483
- .2byte 525
- .2byte 530
- .2byte 535
- .2byte 573
- .2byte 576
- .2byte 621
- .2byte 626
- .2byte 631
- .2byte 669
- .2byte 672
- .2byte 717
- .2byte 722
- .2byte 727
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte -1
-
-gBattleFrontierTrainerMons_Bailey:: @ 85D5116
- .2byte 333
- .2byte 347
- .2byte 350
- .2byte 354
- .2byte 358
- .2byte 361
- .2byte 362
- .2byte 363
- .2byte 364
- .2byte 371
- .2byte 381
- .2byte 384
- .2byte 429
- .2byte 434
- .2byte 439
- .2byte 479
- .2byte 483
- .2byte 525
- .2byte 530
- .2byte 535
- .2byte 573
- .2byte 576
- .2byte 621
- .2byte 626
- .2byte 631
- .2byte 669
- .2byte 672
- .2byte 717
- .2byte 722
- .2byte 727
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte -1
-
-gBattleFrontierTrainerMons_Hugo:: @ 85D515C
- .2byte 383
- .2byte 386
- .2byte 402
- .2byte 403
- .2byte 416
- .2byte 417
- .2byte 423
- .2byte 432
- .2byte 433
- .2byte 435
- .2byte 450
- .2byte 466
- .2byte 481
- .2byte 482
- .2byte 498
- .2byte 499
- .2byte 512
- .2byte 513
- .2byte 519
- .2byte 528
- .2byte 529
- .2byte 531
- .2byte 546
- .2byte 562
- .2byte 575
- .2byte 578
- .2byte 594
- .2byte 595
- .2byte 608
- .2byte 609
- .2byte 615
- .2byte 624
- .2byte 625
- .2byte 627
- .2byte 642
- .2byte 658
- .2byte 671
- .2byte 674
- .2byte 690
- .2byte 691
- .2byte 704
- .2byte 705
- .2byte 711
- .2byte 720
- .2byte 721
- .2byte 723
- .2byte 738
- .2byte 754
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte -1
-
-gBattleFrontierTrainerMons_Bryce:: @ 85D51EA
- .2byte 383
- .2byte 386
- .2byte 402
- .2byte 403
- .2byte 416
- .2byte 417
- .2byte 423
- .2byte 432
- .2byte 433
- .2byte 435
- .2byte 450
- .2byte 466
- .2byte 481
- .2byte 482
- .2byte 498
- .2byte 499
- .2byte 512
- .2byte 513
- .2byte 519
- .2byte 528
- .2byte 529
- .2byte 531
- .2byte 546
- .2byte 562
- .2byte 575
- .2byte 578
- .2byte 594
- .2byte 595
- .2byte 608
- .2byte 609
- .2byte 615
- .2byte 624
- .2byte 625
- .2byte 627
- .2byte 642
- .2byte 658
- .2byte 671
- .2byte 674
- .2byte 690
- .2byte 691
- .2byte 704
- .2byte 705
- .2byte 711
- .2byte 720
- .2byte 721
- .2byte 723
- .2byte 738
- .2byte 754
- .2byte 762
- .2byte 763
- .2byte 764
- .2byte 773
- .2byte 774
- .2byte 775
- .2byte 784
- .2byte 785
- .2byte 786
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 836
- .2byte 837
- .2byte 838
- .2byte 839
- .2byte 840
- .2byte 841
- .2byte -1
-
-gBattleFrontierTrainerMons_Gideon:: @ 85D5278
- .2byte 441
- .2byte 445
- .2byte 448
- .2byte 449
- .2byte 451
- .2byte 453
- .2byte 454
- .2byte 455
- .2byte 458
- .2byte 537
- .2byte 541
- .2byte 544
- .2byte 545
- .2byte 547
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 554
- .2byte 633
- .2byte 637
- .2byte 640
- .2byte 641
- .2byte 643
- .2byte 645
- .2byte 646
- .2byte 647
- .2byte 650
- .2byte 729
- .2byte 733
- .2byte 736
- .2byte 737
- .2byte 739
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 746
- .2byte -1
-
-gBattleFrontierTrainerMons_Triston:: @ 85D52C2
- .2byte 441
- .2byte 445
- .2byte 448
- .2byte 449
- .2byte 451
- .2byte 453
- .2byte 454
- .2byte 455
- .2byte 458
- .2byte 537
- .2byte 541
- .2byte 544
- .2byte 545
- .2byte 547
- .2byte 549
- .2byte 550
- .2byte 551
- .2byte 554
- .2byte 633
- .2byte 637
- .2byte 640
- .2byte 641
- .2byte 643
- .2byte 645
- .2byte 646
- .2byte 647
- .2byte 650
- .2byte 729
- .2byte 733
- .2byte 736
- .2byte 737
- .2byte 739
- .2byte 741
- .2byte 742
- .2byte 743
- .2byte 746
- .2byte -1
-
-gBattleFrontierTrainerMons_Charles:: @ 85D530C
- .2byte 352
- .2byte 381
- .2byte 391
- .2byte 393
- .2byte 396
- .2byte 398
- .2byte 407
- .2byte 422
- .2byte 426
- .2byte 443
- .2byte 447
- .2byte 479
- .2byte 487
- .2byte 489
- .2byte 492
- .2byte 494
- .2byte 503
- .2byte 518
- .2byte 522
- .2byte 539
- .2byte 543
- .2byte 573
- .2byte 583
- .2byte 585
- .2byte 588
- .2byte 590
- .2byte 599
- .2byte 614
- .2byte 618
- .2byte 635
- .2byte 639
- .2byte 669
- .2byte 679
- .2byte 681
- .2byte 684
- .2byte 686
- .2byte 695
- .2byte 710
- .2byte 714
- .2byte 731
- .2byte 735
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 870
- .2byte 871
- .2byte 872
- .2byte 873
- .2byte 874
- .2byte 875
- .2byte -1
-
-gBattleFrontierTrainerMons_Raymond:: @ 85D5384
- .2byte 374
- .2byte 376
- .2byte 381
- .2byte 404
- .2byte 407
- .2byte 422
- .2byte 439
- .2byte 443
- .2byte 459
- .2byte 472
- .2byte 500
- .2byte 506
- .2byte 507
- .2byte 518
- .2byte 532
- .2byte 546
- .2byte 566
- .2byte 585
- .2byte 588
- .2byte 628
- .2byte 635
- .2byte 679
- .2byte 681
- .2byte 684
- .2byte 710
- .2byte 731
- .2byte 785
- .2byte 795
- .2byte 796
- .2byte 797
- .2byte 817
- .2byte 842
- .2byte 843
- .2byte 846
- .2byte 847
- .2byte -1
-
-gBattleFrontierTrainerMons_Dirk:: @ 85D53CC
- .2byte 355
- .2byte 375
- .2byte 379
- .2byte 385
- .2byte 386
- .2byte 412
- .2byte 435
- .2byte 440
- .2byte 454
- .2byte 457
- .2byte 459
- .2byte 465
- .2byte 473
- .2byte 477
- .2byte 482
- .2byte 484
- .2byte 508
- .2byte 531
- .2byte 536
- .2byte 550
- .2byte 553
- .2byte 555
- .2byte 561
- .2byte 567
- .2byte 571
- .2byte 577
- .2byte 578
- .2byte 604
- .2byte 627
- .2byte 632
- .2byte 646
- .2byte 649
- .2byte 651
- .2byte 657
- .2byte 663
- .2byte 667
- .2byte 673
- .2byte 674
- .2byte 700
- .2byte 723
- .2byte 728
- .2byte 742
- .2byte 745
- .2byte 747
- .2byte 753
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte -1
-
-gBattleFrontierTrainerMons_Harold:: @ 85D5448
- .2byte 355
- .2byte 375
- .2byte 379
- .2byte 385
- .2byte 386
- .2byte 412
- .2byte 435
- .2byte 440
- .2byte 454
- .2byte 457
- .2byte 459
- .2byte 465
- .2byte 473
- .2byte 477
- .2byte 482
- .2byte 484
- .2byte 508
- .2byte 531
- .2byte 536
- .2byte 550
- .2byte 553
- .2byte 555
- .2byte 561
- .2byte 567
- .2byte 571
- .2byte 577
- .2byte 578
- .2byte 604
- .2byte 627
- .2byte 632
- .2byte 646
- .2byte 649
- .2byte 651
- .2byte 657
- .2byte 663
- .2byte 667
- .2byte 673
- .2byte 674
- .2byte 700
- .2byte 723
- .2byte 728
- .2byte 742
- .2byte 745
- .2byte 747
- .2byte 753
- .2byte 756
- .2byte 757
- .2byte 758
- .2byte 767
- .2byte 768
- .2byte 769
- .2byte 778
- .2byte 779
- .2byte 780
- .2byte 789
- .2byte 790
- .2byte 791
- .2byte 828
- .2byte 829
- .2byte 830
- .2byte 831
- .2byte -1
-
-gBattleFrontierTrainerMons_Omar:: @ 85D54C4
- .2byte 373
- .2byte 388
- .2byte 390
- .2byte 392
- .2byte 400
- .2byte 409
- .2byte 410
- .2byte 418
- .2byte 431
- .2byte 442
- .2byte 448
- .2byte 449
- .2byte 452
- .2byte 456
- .2byte 458
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 469
- .2byte 471
- .2byte 486
- .2byte 488
- .2byte 496
- .2byte 505
- .2byte 506
- .2byte 514
- .2byte 527
- .2byte 538
- .2byte 544
- .2byte 545
- .2byte 548
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 557
- .2byte 559
- .2byte 565
- .2byte 580
- .2byte 582
- .2byte 584
- .2byte 592
- .2byte 601
- .2byte 602
- .2byte 610
- .2byte 623
- .2byte 634
- .2byte 640
- .2byte 641
- .2byte 644
- .2byte 648
- .2byte 650
- .2byte 651
- .2byte 653
- .2byte 655
- .2byte 661
- .2byte 676
- .2byte 678
- .2byte 680
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 706
- .2byte 719
- .2byte 730
- .2byte 736
- .2byte 737
- .2byte 740
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 749
- .2byte 751
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte -1
-
-gBattleFrontierTrainerMons_Peter:: @ 85D5566
- .2byte 373
- .2byte 388
- .2byte 390
- .2byte 392
- .2byte 400
- .2byte 409
- .2byte 410
- .2byte 418
- .2byte 431
- .2byte 442
- .2byte 448
- .2byte 449
- .2byte 452
- .2byte 456
- .2byte 458
- .2byte 459
- .2byte 461
- .2byte 463
- .2byte 469
- .2byte 471
- .2byte 486
- .2byte 488
- .2byte 496
- .2byte 505
- .2byte 506
- .2byte 514
- .2byte 527
- .2byte 538
- .2byte 544
- .2byte 545
- .2byte 548
- .2byte 552
- .2byte 554
- .2byte 555
- .2byte 557
- .2byte 559
- .2byte 565
- .2byte 580
- .2byte 582
- .2byte 584
- .2byte 592
- .2byte 601
- .2byte 602
- .2byte 610
- .2byte 623
- .2byte 634
- .2byte 640
- .2byte 641
- .2byte 644
- .2byte 648
- .2byte 650
- .2byte 651
- .2byte 653
- .2byte 655
- .2byte 661
- .2byte 676
- .2byte 678
- .2byte 680
- .2byte 688
- .2byte 697
- .2byte 698
- .2byte 706
- .2byte 719
- .2byte 730
- .2byte 736
- .2byte 737
- .2byte 740
- .2byte 744
- .2byte 746
- .2byte 747
- .2byte 749
- .2byte 751
- .2byte 808
- .2byte 809
- .2byte 810
- .2byte 811
- .2byte 820
- .2byte 821
- .2byte 822
- .2byte 823
- .2byte -1
-
-gBattleFrontierTrainerMons_Dev:: @ 85D5608
- .2byte 372
- .2byte 387
- .2byte 402
- .2byte 403
- .2byte 413
- .2byte 414
- .2byte 416
- .2byte 417
- .2byte 427
- .2byte 428
- .2byte 432
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 450
- .2byte 466
- .2byte 468
- .2byte 470
- .2byte 498
- .2byte 499
- .2byte 509
- .2byte 510
- .2byte 512
- .2byte 513
- .2byte 523
- .2byte 524
- .2byte 528
- .2byte 529
- .2byte 531
- .2byte 536
- .2byte 546
- .2byte 562
- .2byte 564
- .2byte 579
- .2byte 594
- .2byte 595
- .2byte 605
- .2byte 606
- .2byte 608
- .2byte 609
- .2byte 619
- .2byte 620
- .2byte 624
- .2byte 625
- .2byte 627
- .2byte 632
- .2byte 642
- .2byte 658
- .2byte 660
- .2byte 675
- .2byte 690
- .2byte 691
- .2byte 701
- .2byte 702
- .2byte 704
- .2byte 705
- .2byte 715
- .2byte 716
- .2byte 720
- .2byte 721
- .2byte 723
- .2byte 728
- .2byte 738
- .2byte 754
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Corey:: @ 85D56A6
- .2byte 372
- .2byte 387
- .2byte 402
- .2byte 403
- .2byte 413
- .2byte 414
- .2byte 416
- .2byte 417
- .2byte 427
- .2byte 428
- .2byte 432
- .2byte 433
- .2byte 435
- .2byte 440
- .2byte 450
- .2byte 466
- .2byte 468
- .2byte 470
- .2byte 498
- .2byte 499
- .2byte 509
- .2byte 510
- .2byte 512
- .2byte 513
- .2byte 523
- .2byte 524
- .2byte 528
- .2byte 529
- .2byte 531
- .2byte 536
- .2byte 546
- .2byte 562
- .2byte 564
- .2byte 579
- .2byte 594
- .2byte 595
- .2byte 605
- .2byte 606
- .2byte 608
- .2byte 609
- .2byte 619
- .2byte 620
- .2byte 624
- .2byte 625
- .2byte 627
- .2byte 632
- .2byte 642
- .2byte 658
- .2byte 660
- .2byte 675
- .2byte 690
- .2byte 691
- .2byte 701
- .2byte 702
- .2byte 704
- .2byte 705
- .2byte 715
- .2byte 716
- .2byte 720
- .2byte 721
- .2byte 723
- .2byte 728
- .2byte 738
- .2byte 754
- .2byte 832
- .2byte 833
- .2byte 834
- .2byte 835
- .2byte 860
- .2byte 861
- .2byte 862
- .2byte 863
- .2byte 864
- .2byte 865
- .2byte 866
- .2byte 867
- .2byte 868
- .2byte 869
- .2byte -1
-
-gBattleFrontierTrainerMons_Andre:: @ 85D5744
- .2byte 374
- .2byte 378
- .2byte 415
- .2byte 419
- .2byte 421
- .2byte 426
- .2byte 430
- .2byte 444
- .2byte 451
- .2byte 454
- .2byte 455
- .2byte 464
- .2byte 472
- .2byte 476
- .2byte 511
- .2byte 515
- .2byte 517
- .2byte 522
- .2byte 526
- .2byte 540
- .2byte 547
- .2byte 550
- .2byte 551
- .2byte 560
- .2byte 566
- .2byte 570
- .2byte 607
- .2byte 611
- .2byte 613
- .2byte 618
- .2byte 622
- .2byte 636
- .2byte 643
- .2byte 646
- .2byte 647
- .2byte 656
- .2byte 662
- .2byte 666
- .2byte 703
- .2byte 707
- .2byte 709
- .2byte 714
- .2byte 718
- .2byte 732
- .2byte 739
- .2byte 742
- .2byte 743
- .2byte 752
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte -1
-
-gBattleFrontierTrainerMons_Ferris:: @ 85D57C2
- .2byte 374
- .2byte 378
- .2byte 415
- .2byte 419
- .2byte 421
- .2byte 426
- .2byte 430
- .2byte 444
- .2byte 451
- .2byte 454
- .2byte 455
- .2byte 464
- .2byte 472
- .2byte 476
- .2byte 511
- .2byte 515
- .2byte 517
- .2byte 522
- .2byte 526
- .2byte 540
- .2byte 547
- .2byte 550
- .2byte 551
- .2byte 560
- .2byte 566
- .2byte 570
- .2byte 607
- .2byte 611
- .2byte 613
- .2byte 618
- .2byte 622
- .2byte 636
- .2byte 643
- .2byte 646
- .2byte 647
- .2byte 656
- .2byte 662
- .2byte 666
- .2byte 703
- .2byte 707
- .2byte 709
- .2byte 714
- .2byte 718
- .2byte 732
- .2byte 739
- .2byte 742
- .2byte 743
- .2byte 752
- .2byte 800
- .2byte 801
- .2byte 802
- .2byte 803
- .2byte 850
- .2byte 851
- .2byte 852
- .2byte 853
- .2byte 854
- .2byte 855
- .2byte 856
- .2byte 857
- .2byte 858
- .2byte 859
- .2byte -1
-
-gBattleFrontierTrainerMons_Alivia:: @ 85D5840
- .2byte 399
- .2byte 400
- .2byte 409
- .2byte 422
- .2byte 438
- .2byte 441
- .2byte 445
- .2byte 448
- .2byte 449
- .2byte 451
- .2byte 452
- .2byte 454
- .2byte 455
- .2byte 489
- .2byte 492
- .2byte 493
- .2byte 503
- .2byte 526
- .2byte 532
- .2byte 535
- .2byte 536
- .2byte 560
- .2byte 573
- .2byte 583
- .2byte 590
- .2byte 592
- .2byte 608
- .2byte 611
- .2byte 620
- .2byte 651
- .2byte 682
- .2byte 688
- .2byte 714
- .2byte 729
- .2byte 732
- .2byte -1
-
-gBattleFrontierTrainerMons_Paige:: @ 85D5888
- .2byte 399
- .2byte 400
- .2byte 409
- .2byte 422
- .2byte 438
- .2byte 441
- .2byte 445
- .2byte 448
- .2byte 449
- .2byte 451
- .2byte 452
- .2byte 454
- .2byte 455
- .2byte 489
- .2byte 492
- .2byte 493
- .2byte 503
- .2byte 526
- .2byte 532
- .2byte 535
- .2byte 536
- .2byte 560
- .2byte 573
- .2byte 583
- .2byte 590
- .2byte 592
- .2byte 608
- .2byte 611
- .2byte 620
- .2byte 651
- .2byte 682
- .2byte 688
- .2byte 714
- .2byte 729
- .2byte 732
- .2byte -1
-
-gBattleFrontierTrainerMons_Anya:: @ 85D58D0
- .2byte 442
- .2byte 443
- .2byte 444
- .2byte 446
- .2byte 447
- .2byte 538
- .2byte 539
- .2byte 540
- .2byte 542
- .2byte 543
- .2byte 634
- .2byte 635
- .2byte 636
- .2byte 638
- .2byte 639
- .2byte 730
- .2byte 731
- .2byte 732
- .2byte 734
- .2byte 735
- .2byte -1
-
-gBattleFrontierTrainerMons_Dawn:: @ 85D58FA
- .2byte 377
- .2byte 381
- .2byte 410
- .2byte 421
- .2byte 422
- .2byte 443
- .2byte 456
- .2byte 460
- .2byte 461
- .2byte 471
- .2byte 472
- .2byte 473
- .2byte 484
- .2byte 491
- .2byte 502
- .2byte 503
- .2byte 507
- .2byte 508
- .2byte 515
- .2byte 520
- .2byte 540
- .2byte 549
- .2byte 569
- .2byte 574
- .2byte 583
- .2byte 586
- .2byte 601
- .2byte 622
- .2byte 624
- .2byte 639
- .2byte 644
- .2byte 655
- .2byte 734
- .2byte 804
- .2byte 810
- .2byte 815
- .2byte 823
- .2byte 831
- .2byte 843
- .2byte -1
-
-gBattleFrontierTrainerMons_Abby:: @ 85D594A
- .2byte 185
- .2byte 290
- .2byte 313
- .2byte 334
- .2byte 348
- .2byte 359
- .2byte 360
- .2byte 377
- .2byte 380
- .2byte 382
- .2byte 385
- .2byte 394
- .2byte 395
- .2byte 398
- .2byte 400
- .2byte 401
- .2byte 404
- .2byte 409
- .2byte 410
- .2byte 416
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 441
- .2byte 445
- .2byte 446
- .2byte 453
- .2byte 475
- .2byte 478
- .2byte 480
- .2byte 484
- .2byte 490
- .2byte 491
- .2byte 494
- .2byte 496
- .2byte 497
- .2byte 500
- .2byte 505
- .2byte 506
- .2byte 512
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 537
- .2byte 541
- .2byte 542
- .2byte 549
- .2byte 569
- .2byte 572
- .2byte 574
- .2byte 577
- .2byte 586
- .2byte 587
- .2byte 590
- .2byte 592
- .2byte 593
- .2byte 596
- .2byte 601
- .2byte 602
- .2byte 608
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 633
- .2byte 637
- .2byte 638
- .2byte 645
- .2byte 665
- .2byte 668
- .2byte 670
- .2byte 673
- .2byte 682
- .2byte 683
- .2byte 686
- .2byte 688
- .2byte 689
- .2byte 692
- .2byte 697
- .2byte 698
- .2byte 704
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 729
- .2byte 733
- .2byte 734
- .2byte 741
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte -1
-
-gBattleFrontierTrainerMons_Gretel:: @ 85D5A0A
- .2byte 185
- .2byte 290
- .2byte 313
- .2byte 334
- .2byte 348
- .2byte 359
- .2byte 360
- .2byte 377
- .2byte 380
- .2byte 382
- .2byte 385
- .2byte 394
- .2byte 395
- .2byte 398
- .2byte 400
- .2byte 401
- .2byte 404
- .2byte 409
- .2byte 410
- .2byte 416
- .2byte 437
- .2byte 438
- .2byte 439
- .2byte 441
- .2byte 445
- .2byte 446
- .2byte 453
- .2byte 475
- .2byte 478
- .2byte 480
- .2byte 484
- .2byte 490
- .2byte 491
- .2byte 494
- .2byte 496
- .2byte 497
- .2byte 500
- .2byte 505
- .2byte 506
- .2byte 512
- .2byte 533
- .2byte 534
- .2byte 535
- .2byte 537
- .2byte 541
- .2byte 542
- .2byte 549
- .2byte 569
- .2byte 572
- .2byte 574
- .2byte 577
- .2byte 586
- .2byte 587
- .2byte 590
- .2byte 592
- .2byte 593
- .2byte 596
- .2byte 601
- .2byte 602
- .2byte 608
- .2byte 629
- .2byte 630
- .2byte 631
- .2byte 633
- .2byte 637
- .2byte 638
- .2byte 645
- .2byte 665
- .2byte 668
- .2byte 670
- .2byte 673
- .2byte 682
- .2byte 683
- .2byte 686
- .2byte 688
- .2byte 689
- .2byte 692
- .2byte 697
- .2byte 698
- .2byte 704
- .2byte 725
- .2byte 726
- .2byte 727
- .2byte 729
- .2byte 733
- .2byte 734
- .2byte 741
- .2byte 812
- .2byte 813
- .2byte 814
- .2byte 815
- .2byte 816
- .2byte 817
- .2byte 818
- .2byte 819
- .2byte -1
diff --git a/data/battle_frontier/battle_frontier_trainers.inc b/data/battle_frontier/battle_frontier_trainers.inc
deleted file mode 100644
index 8b05d88eb..000000000
--- a/data/battle_frontier/battle_frontier_trainers.inc
+++ /dev/null
@@ -1,7801 +0,0 @@
- .align 2
-gBattleFrontierTrainers:: @ 85D5ACC
-@ 0
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "BRADY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NEVER
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_LOSE
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_I
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_QUES
- .2byte -1
- .2byte EC_WORD_BUT
- .2byte EC_WORD_HOW
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Brady
-
-@ 1
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "CONNER$", 8
-@ pre-battle speech
- .2byte EC_WORD_LOSING
- .2byte EC_WORD_DOESN_T
- .2byte EC_WORD_BUG
- .2byte EC_WORD_ME
- .2byte -1
- .2byte -1
-@ win speech
- .2byte EC_WORD_A
- .2byte EC_WORD_WIN
- .2byte EC_WORD_IS
- .2byte EC_WORD_JUST
- .2byte EC_WORD_AWESOME
- .2byte -1
-@ loss speech
- .2byte EC_WORD_DARN
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_LOSING
- .2byte EC_WORD_DOES
- .2byte EC_WORD_BUG
- .2byte EC_WORD_ME
- .4byte gBattleFrontierTrainerMons_Conner
-
-@ 2
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "BRADLEY$", 8
-@ pre-battle speech
- .2byte EC_WORD_HEY_THERE
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MY
- .2byte EC_WORD_OPPONENT
- .2byte EC_WORD_TODAY
-@ win speech
- .2byte EC_WORD_HAHAHA
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_SEE_YA
- .2byte EC_WORD_LATER
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_TOMORROW
- .2byte EC_WORD_IS
- .2byte EC_WORD_WHEN
- .2byte EC_WORD_WE
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_BATTLE
- .4byte gBattleFrontierTrainerMons_Bradley
-
-@ 3
- .4byte FACILITY_CLASS_LASS
- .string "CYBIL$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_NOT_VERY
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_AT
- .2byte EC_WORD_ALL
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_SAD
- .2byte EC_WORD_TO
- .2byte EC_WORD_SEE
- .2byte EC_WORD_YOU
- .2byte EC_MOVE2(STRUGGLE)
-@ loss speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_BE
- .2byte EC_WORD_HAPPENING
- .2byte EC_WORD_TO_ME
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Cybil
-
-@ 4
- .4byte FACILITY_CLASS_LASS
- .string "RODETTE$", 8
-@ pre-battle speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_SO
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_INCREDIBLE
- .2byte EC_WORD_HOW
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_OH_DEAR
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_JUST
- .2byte EC_WORD_NO
- .2byte EC_WORD_GOOD
- .4byte gBattleFrontierTrainerMons_Rodette
-
-@ 5
- .4byte FACILITY_CLASS_LASS
- .string "PEGGY$", 8
-@ pre-battle speech
- .2byte EC_WORD_GET
- .2byte EC_WORD_READY
- .2byte EC_WORD_TO
- .2byte EC_WORD_BE
- .2byte EC_WORD_DESTROYED
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_HAHAHA
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_LOLLING
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_SAD
- .2byte EC_WORD_THANKS
- .2byte EC_WORD_TO
- .2byte EC_WORD_YOU
- .4byte gBattleFrontierTrainerMons_Peggy
-
-@ 6
- .4byte FACILITY_CLASS_SCHOOL_KID_M
- .string "KEITH$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_JUST
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_YOU
- .2byte EC_WORD_KNOW
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_ENOUGH
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_MORE
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Keith
-
-@ 7
- .4byte FACILITY_CLASS_SCHOOL_KID_M
- .string "GRAYSON$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_CHILD_S_PLAY
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_DONE
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WE
- .2byte EC_WORD_WERE
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_TOYS
- .2byte EC_WORD_TO
- .2byte EC_WORD_YOU
- .4byte gBattleFrontierTrainerMons_Grayson
-
-@ 8
- .4byte FACILITY_CLASS_SCHOOL_KID_M
- .string "GLENN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WOULD
- .2byte EC_WORD_BE
- .2byte EC_WORD_COOL
- .2byte EC_WORD_IF_I_WIN
- .2byte -1
-@ win speech
- .2byte EC_WORD_COOL
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I_AM
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_BE
- .2byte EC_WORD_COOL
- .4byte gBattleFrontierTrainerMons_Glenn
-
-@ 9
- .4byte FACILITY_CLASS_SCHOOL_KID_F
- .string "LILIANA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_GIVE_UP
- .2byte EC_WORD_UNTIL
- .2byte EC_WORD_I
- .2byte EC_WORD_WIN
-@ win speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_IS
- .2byte EC_WORD_NO
- .2byte EC_WORD_SURRENDER
- .2byte EC_WORD_IN
- .2byte EC_WORD_ME
-@ loss speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_IT
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_I
- .2byte EC_WORD_GIVE_UP
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Liliana
-
-@ 10
- .4byte FACILITY_CLASS_SCHOOL_KID_F
- .string "ELISE$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_STRATEGY
- .2byte EC_WORD_IS
- .2byte EC_WORD_FROM
- .2byte EC_WORD_MY
- .2byte EC_WORD_FATHER
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WIN
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_FATHER
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_WON
-@ loss speech
- .2byte EC_WORD_FORGIVE
- .2byte EC_WORD_ME
- .2byte EC_WORD_FATHER
- .2byte EC_WORD_FOR
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_LOST
- .4byte gBattleFrontierTrainerMons_Elise
-
-@ 11
- .4byte FACILITY_CLASS_SCHOOL_KID_F
- .string "ZOEY$", 8
-@ pre-battle speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_IT
-@ win speech
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_SO
- .2byte EC_WORD_MUCH
-@ loss speech
- .2byte EC_WORD_WERE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_BEING
- .2byte EC_WORD_SERIOUS
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Zoey
-
-@ 12
- .4byte FACILITY_CLASS_RICH_BOY
- .string "MANUEL$", 8
-@ pre-battle speech
- .2byte EC_WORD_ME
- .2byte EC_WORD_LOSE
- .2byte EC_WORD_QUES
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_PREPOSTEROUS
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_NATURALLY
- .2byte EC_WORD_I
- .2byte EC_WORD_WIN
- .2byte -1
- .2byte -1
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WAAAH
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_LOST
- .2byte EC_WORD_MOTHER
- .4byte gBattleFrontierTrainerMons_Manuel
-
-@ 13
- .4byte FACILITY_CLASS_RICH_BOY
- .string "RUSS$", 8
-@ pre-battle speech
- .2byte EC_WORD_THEY
- .2byte EC_WORD_ALL
- .2byte EC_WORD_WANT
- .2byte EC_WORD_MY
- .2byte EC_WORD_FABULOUS
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_PARTY
-@ loss speech
- .2byte EC_WORD_HOW
- .2byte EC_WORD_COULD
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DO
- .2byte EC_WORD_THAT
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Russ
-
-@ 14
- .4byte FACILITY_CLASS_RICH_BOY
- .string "DUSTIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_COOL
- .2byte EC_WORD_POKEMON
- .2byte -1
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_MYSELF
- .2byte EC_WORD_WHEN_I_WIN
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_MYSELF
- .2byte EC_WORD_IF_I_LOSE
- .2byte EC_WORD_TOO
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Dustin
-
-@ 15
- .4byte FACILITY_CLASS_LADY
- .string "TINA$", 8
-@ pre-battle speech
- .2byte EC_WORD_IF_I_WIN
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_MOVE2(SWEET_KISS)
-@ win speech
- .2byte EC_WORD_HERE_IT_IS
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE2(SWEET_KISS)
- .2byte EC_WORD_FROM
- .2byte EC_WORD_MY
- .2byte EC_POKEMON2(JYNX)
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WANT
- .2byte EC_WORD_A
- .2byte EC_MOVE(SWIFT)
- .2byte EC_MOVE2(MEGA_KICK)
- .2byte EC_WORD_INSTEAD
- .4byte gBattleFrontierTrainerMons_Tina
-
-@ 16
- .4byte FACILITY_CLASS_LADY
- .string "GILLIAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_GOURMET
- .2byte EC_WORD_THING
- .2byte EC_WORD_IS
- .2byte EC_WORD_SO
- .2byte EC_WORD_YESTERDAY
-@ win speech
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_NEVER
- .2byte EC_WORD_GO
- .2byte EC_WORD_OUT
- .2byte EC_WORD_OF
- .2byte EC_WORD_FASHION
-@ loss speech
- .2byte EC_WORD_LOSING
- .2byte EC_WORD_DOESN_T
- .2byte EC_WORD_DISAPPOINT
- .2byte EC_WORD_ME
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Gillian
-
-@ 17
- .4byte FACILITY_CLASS_LADY
- .string "ZOE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVEN_T
- .2byte EC_WORD_A
- .2byte EC_WORD_WORRY
- .2byte EC_WORD_AT
- .2byte EC_WORD_ALL
-@ win speech
- .2byte EC_WORD_LIFE
- .2byte EC_WORD_IS
- .2byte EC_WORD_ALWAYS
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_TO_ME
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WORRY
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_SKILL
- .4byte gBattleFrontierTrainerMons_Zoe
-
-@ 18
- .4byte FACILITY_CLASS_CAMPER
- .string "CHEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TOTALLY
- .2byte EC_WORD_READY
- .2byte EC_WORD_TO
- .2byte EC_WORD_ROCK
- .2byte EC_WORD_TODAY
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_READY
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO
- .2byte EC_WORD_ON
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_LOST
- .2byte EC_WORD_MY
- .2byte EC_MOVE(FOCUS_ENERGY)
- .2byte EC_WORD_AND
- .2byte EC_WORD_TOUGHNESS
- .4byte gBattleFrontierTrainerMons_Chen
-
-@ 19
- .4byte FACILITY_CLASS_CAMPER
- .string "AL$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_SAYS
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_TOUGH
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_ME
- .2byte EC_WORD_WHO_IS
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_TOUGH
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_TOUGH
- .4byte gBattleFrontierTrainerMons_Al
-
-@ 20
- .4byte FACILITY_CLASS_CAMPER
- .string "MITCH$", 8
-@ pre-battle speech
- .2byte EC_WORD_MOTHER
- .2byte EC_WORD_NATURE
- .2byte EC_WORD_IS
- .2byte EC_WORD_MY
- .2byte EC_WORD_ALLY
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_WAS
- .2byte EC_WORD_THAT
- .2byte EC_WORD_ENOUGH
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_MOTHER
- .2byte EC_WORD_NATURE
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_LET_ME_WIN
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Mitch
-
-@ 21
- .4byte FACILITY_CLASS_PICNICKER
- .string "ANNE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_WAIT
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_NOW
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_HAPPINESS
- .2byte EC_WORD_IS
- .2byte EC_WORD_OVERWHELMING
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU_VE
- .2byte EC_WORD_DESTROYED
- .2byte EC_WORD_MY
- .2byte EC_WORD_HAPPINESS
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Anne
-
-@ 22
- .4byte FACILITY_CLASS_PICNICKER
- .string "ALIZE$", 8
-@ pre-battle speech
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_AND
- .2byte EC_WORD_AWFULLY
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_ME
-@ win speech
- .2byte EC_WORD_YUP
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_AND
- .2byte EC_WORD_AWFULLY
- .2byte EC_WORD_STRONG
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_WEAK
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_CUTE
- .4byte gBattleFrontierTrainerMons_Alize
-
-@ 23
- .4byte FACILITY_CLASS_PICNICKER
- .string "LAUREN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_OLD
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ALSO
- .2byte EC_WORD_GOOD
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SAID
- .2byte EC_WORD_I_WAS
- .2byte EC_WORD_OLD
- .2byte EC_WORD_BUT
- .2byte EC_WORD_GOOD
-@ loss speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_A
- .2byte EC_WORD_WEIRD
- .2byte EC_WORD_DREAM
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Lauren
-
-@ 24
- .4byte FACILITY_CLASS_TUBER_M
- .string "KIPP$", 8
-@ pre-battle speech
- .2byte EC_WORD_IF_I_WIN
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO
- .2byte EC_MOVE2(SURF)
-@ win speech
- .2byte EC_WORD_YEAH
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_OFF
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(SURF)
-@ loss speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_NO
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_A
- .2byte EC_MOVE(WHIRLPOOL)
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Kipp
-
-@ 25
- .4byte FACILITY_CLASS_TUBER_M
- .string "JASON$", 8
-@ pre-battle speech
- .2byte EC_WORD_TEACH
- .2byte EC_WORD_ME
- .2byte EC_WORD_A
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_STRATEGY
- .2byte -1
-@ win speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_STRATEGY
- .2byte EC_WORD_QUES_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WOW
- .2byte EC_WORD_THAT
- .2byte EC_WORD_IS
- .2byte EC_WORD_AN
- .2byte EC_WORD_AWESOME
- .2byte EC_WORD_STRATEGY
- .4byte gBattleFrontierTrainerMons_Jason
-
-@ 26
- .4byte FACILITY_CLASS_TUBER_M
- .string "JOHN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_NEW
- .2byte EC_WORD_TRAINER
- .2byte -1
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NEW
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NEW
- .2byte EC_WORD_SO
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_IF_I_LOSE
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_John
-
-@ 27
- .4byte FACILITY_CLASS_TUBER_F
- .string "ANN$", 8
-@ pre-battle speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_SO
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_IT
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_IS
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SO
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN
- .2byte EC_WORD_CRY
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SO
- .2byte EC_WORD_SAD
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_CRY
- .4byte gBattleFrontierTrainerMons_Ann
-
-@ 28
- .4byte FACILITY_CLASS_TUBER_F
- .string "EILEEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_PRETEND
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_AN
- .2byte EC_WORD_ADULT
- .2byte EC_WORD_OK_QUES
-@ win speech
- .2byte EC_WORD_SO
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_AN
- .2byte EC_WORD_ADULT
- .2byte EC_WORD_FEELING
-@ loss speech
- .2byte EC_WORD_AN
- .2byte EC_WORD_ADULT
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_BEAT
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Eileen
-
-@ 29
- .4byte FACILITY_CLASS_TUBER_F
- .string "CARLIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_SUMMER
- .2byte EC_WORD_VACATION
- .2byte EC_WORD_IS
- .2byte EC_WORD_FOR
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_SUMMER
- .2byte EC_WORD_VACATION
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BE
- .2byte EC_WORD_AWESOME
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T_WIN
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_THIS
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Carlie
-
-@ 30
- .4byte FACILITY_CLASS_SWIMMER_M
- .string "GORDON$", 8
-@ pre-battle speech
- .2byte EC_WORD_VICTORY
- .2byte EC_WORD_WILL
- .2byte EC_WORD_COME
- .2byte EC_WORD_TO_ME
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_OH_YEAH
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_WON
-@ loss speech
- .2byte EC_WORD_NOTHING
- .2byte EC_WORD_IS
- .2byte EC_WORD_WORKING
- .2byte EC_WORD_OUT
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .4byte gBattleFrontierTrainerMons_Gordon
-
-@ 31
- .4byte FACILITY_CLASS_SWIMMER_M
- .string "AYDEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_A
- .2byte EC_WORD_HOT
- .2byte EC_WORD_BATTLE
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_WATER
- .2byte EC_WORD_TO
- .2byte EC_WORD_COOL
- .2byte EC_WORD_DOWN
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_ME
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_ICE
- .2byte EC_WORD_COLD
- .4byte gBattleFrontierTrainerMons_Ayden
-
-@ 32
- .4byte FACILITY_CLASS_SWIMMER_M
- .string "MARCO$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_MOVE2(SURF)
- .2byte EC_WORD_IN
- .2byte EC_WORD_THE
- .2byte EC_WORD_WINTER
- .2byte EC_WORD_TOO
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_GO
- .2byte EC_MOVE2(SURF)
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_NOW
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_MOVE2(BEAT_UP)
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(SURF)
- .2byte EC_WORD_BOARD
- .4byte gBattleFrontierTrainerMons_Marco
-
-@ 33
- .4byte FACILITY_CLASS_SWIMMER_F
- .string "CIERRA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_TO
- .2byte EC_WORD_SYNCHRONIZE
- .2byte EC_WORD_MY
- .2byte EC_WORD_SWIFT_SWIM
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_SYNCHRONIZE
- .2byte EC_WORD_WITH
- .2byte EC_WORD_ME
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_SYNCHRONIZE
- .2byte EC_WORD_BETTER
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Cierra
-
-@ 34
- .4byte FACILITY_CLASS_SWIMMER_F
- .string "MARCY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_WORD_KNOCKOUT
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN_T_WIN
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_AFTER
- .2byte EC_WORD_ALL
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_WORD_KNOCKOUT
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_NOT
- .2byte EC_WORD_THE
- .2byte EC_WORD_KNOCKOUT
- .2byte EC_WORD_I
- .2byte EC_WORD_MEAN
- .4byte gBattleFrontierTrainerMons_Marcy
-
-@ 35
- .4byte FACILITY_CLASS_SWIMMER_F
- .string "KATHY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_WON
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_MATCH
- .2byte EC_WORD_TODAY
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_SO
- .2byte EC_WORD_GREAT
- .2byte EC_WORD_TO
- .2byte EC_WORD_WIN
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_I
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_NOT
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_LOST
- .4byte gBattleFrontierTrainerMons_Kathy
-
-@ 36
- .4byte FACILITY_CLASS_POKEFAN_M
- .string "PEYTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NEVER
- .2byte EC_WORD_DISAPPOINTED
- .2byte EC_WORD_WITH
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_IF
- .2byte EC_WORD_WE
- .2byte EC_WORD_WIN
- .2byte EC_WORD_TOGETHER
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_MORE
- .2byte EC_WORD_IF_I_LOSE
- .4byte gBattleFrontierTrainerMons_Peyton
-
-@ 37
- .4byte FACILITY_CLASS_POKEFAN_M
- .string "JULIAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_TOTALLY
- .2byte EC_WORD_OUT
- .2byte EC_WORD_OF
- .2byte EC_WORD_THE
- .2byte EC_WORD_QUESTION
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DO
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Julian
-
-@ 38
- .4byte FACILITY_CLASS_POKEFAN_M
- .string "QUINN$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_BUT
- .2byte EC_WORD_A
- .2byte EC_WORD_DREAM
-@ win speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_WORD_BEAUTIFUL
- .2byte EC_WORD_DREAM
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_AN
- .2byte EC_WORD_AWFUL
- .2byte EC_MOVE(NIGHTMARE)
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Quinn
-
-@ 39
- .4byte FACILITY_CLASS_POKEFAN_F
- .string "HAYLEE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_HOW
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_OVERWHELMING
- .2byte EC_WORD_JOY
- .2byte EC_WORD_OVER
- .2byte EC_WORD_THIS
-@ loss speech
- .2byte EC_WORD_DESTROYED
- .2byte EC_WORD_IS
- .2byte EC_WORD_THE
- .2byte EC_WORD_WAY
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .4byte gBattleFrontierTrainerMons_Haylee
-
-@ 40
- .4byte FACILITY_CLASS_POKEFAN_F
- .string "AMANDA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_COME
- .2byte EC_WORD_FROM
- .2byte EC_WORD_A
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_FAMILY
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_TREASURE
- .2byte EC_WORD_THIS
- .2byte EC_WORD_WIN
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO_HOME
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_NOW
- .4byte gBattleFrontierTrainerMons_Amanda
-
-@ 41
- .4byte FACILITY_CLASS_POKEFAN_F
- .string "STACY$", 8
-@ pre-battle speech
- .2byte EC_WORD_ALL
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_THEIR
- .2byte EC_WORD_OWN
- .2byte EC_WORD_CUTE_CHARM
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SEE
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_I
- .2byte EC_WORD_NOT
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Stacy
-
-@ 42
- .4byte FACILITY_CLASS_PKMN_BREEDER_M
- .string "RAFAEL$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_SEE
- .2byte EC_WORD_SOME
- .2byte EC_WORD_SPIRIT
-@ win speech
- .2byte EC_WORD_THAT_S_IT_EXCL
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_THE
- .2byte EC_WORD_SPIRIT
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WELL
- .2byte EC_WORD_SO
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_FOR
- .2byte EC_WORD_OUR
- .2byte EC_WORD_SPIRIT
- .4byte gBattleFrontierTrainerMons_Rafael
-
-@ 43
- .4byte FACILITY_CLASS_PKMN_BREEDER_M
- .string "OLIVER$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_GENIUS
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_HOW
- .2byte EC_WORD_A
- .2byte EC_WORD_GENIUS
- .2byte EC_WORD_WORKS
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MORE
- .2byte EC_WORD_A
- .2byte EC_WORD_GENIUS
- .2byte EC_WORD_THAN
- .2byte EC_WORD_I_AM
- .4byte gBattleFrontierTrainerMons_Oliver
-
-@ 44
- .4byte FACILITY_CLASS_PKMN_BREEDER_M
- .string "PAYTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_TRAIN
- .2byte EC_WORD_FROM
- .2byte EC_WORD_THE
- .2byte EC_WORD_EGG
- .2byte EC_WORD_UP
-@ win speech
- .2byte EC_WORD_WELL
- .2byte EC_WORD_DONE
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte -1
- .2byte -1
-@ loss speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_A
- .2byte EC_MOVE2(SOFT_BOILED)
- .2byte EC_WORD_LOSS
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Payton
-
-@ 45
- .4byte FACILITY_CLASS_POKEMON_BREEDER_F
- .string "PAMELA$", 8
-@ pre-battle speech
- .2byte EC_WORD_ALL
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_A
- .2byte EC_WORD_KIND
- .2byte EC_WORD_TRAINER
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_TOO
- .2byte EC_WORD_BAD
- .2byte EC_WORD_YOU
- .2byte EC_WORD_LOST
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_KIND
- .2byte EC_WORD_AND
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_ALSO
- .2byte EC_WORD_STRONG
- .4byte gBattleFrontierTrainerMons_Pamela
-
-@ 46
- .4byte FACILITY_CLASS_POKEMON_BREEDER_F
- .string "ELIZA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_MY
- .2byte EC_WORD_CHILDREN
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SO
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
-@ loss speech
- .2byte EC_WORD_OH_DEAR
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SO
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_THIS
- .4byte gBattleFrontierTrainerMons_Eliza
-
-@ 47
- .4byte FACILITY_CLASS_POKEMON_BREEDER_F
- .string "MARISA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_PROMISE
- .2byte EC_WORD_TO
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_SERIOUSLY
- .2byte -1
-@ win speech
- .2byte EC_WORD_PROMISE
- .2byte EC_WORD_ME
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WILL
- .2byte EC_WORD_DO
- .2byte EC_WORD_BETTER
-@ loss speech
- .2byte EC_WORD_PROMISE
- .2byte EC_WORD_ME
- .2byte EC_WORD_ANOTHER
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Marisa
-
-@ 48
- .4byte FACILITY_CLASS_BUG_CATCHER
- .string "LEWIS$", 8
-@ pre-battle speech
- .2byte EC_WORD_A_LITTLE
- .2byte EC_WORD_BUG
- .2byte EC_WORD_IS
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_QUES
- .2byte EC_WORD_HAHAHA
-@ win speech
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_A
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_BUG
-@ loss speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_A
- .2byte EC_WORD_BUG
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Lewis
-
-@ 49
- .4byte FACILITY_CLASS_BUG_CATCHER
- .string "YOSHI$", 8
-@ pre-battle speech
- .2byte EC_WORD_BUG
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_ME
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_LOVEY_DOVEY
-@ win speech
- .2byte EC_WORD_BUG
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_THE
- .2byte EC_WORD_BEST
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_IGNORANT
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_BUG
- .2byte EC_WORD_POKEMON
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Yoshi
-
-@ 50
- .4byte FACILITY_CLASS_BUG_CATCHER
- .string "DESTIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_WAY
- .2byte EC_WORD_TOO
- .2byte EC_WORD_HOT
- .2byte EC_WORD_HERE
- .2byte -1
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_TO
- .2byte EC_MOVE(OVERHEAT)
- .2byte -1
- .2byte -1
-@ loss speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_SOME
- .2byte EC_WORD_WATER
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Destin
-
-@ 51
- .4byte FACILITY_CLASS_NINJA_BOY
- .string "KEON$", 8
-@ pre-battle speech
- .2byte EC_WORD_FORGIVE
- .2byte EC_WORD_ME
- .2byte EC_WORD_BUT
- .2byte EC_WORD_HERE_I_COME
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_FORGIVE
- .2byte EC_WORD_ME
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_OVERWHELMING
- .2byte EC_WORD_POWER
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Keon
-
-@ 52
- .4byte FACILITY_CLASS_NINJA_BOY
- .string "STUART$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_PROMISE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_A
- .2byte EC_WORD_HOT
- .2byte EC_WORD_BATTLE
-@ win speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_MASTER
- .2byte EC_WORD_OF
- .2byte EC_WORD_COOL
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_ME
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SEE
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_SO
- .2byte EC_WORD_COOL
- .4byte gBattleFrontierTrainerMons_Stuart
-
-@ 53
- .4byte FACILITY_CLASS_NINJA_BOY
- .string "NESTOR$", 8
-@ pre-battle speech
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_ME
- .2byte EC_WORD_A
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_SMOOTH
- .2byte EC_WORD_MOVE
-@ win speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_WAS
- .2byte EC_WORD_NOTHING
- .2byte EC_WORD_SMOOTH
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_THAT
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_ARE
- .2byte EC_WORD_SMOOTH
- .2byte EC_WORD_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Nestor
-
-@ 54
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "DERRICK$", 8
-@ pre-battle speech
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_SEE
- .2byte EC_WORD_YOU
- .2byte EC_MOVE2(MEDITATE)
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_ME
-@ win speech
- .2byte EC_WORD_HOW
- .2byte EC_WORD_I
- .2byte EC_MOVE2(MEDITATE)
- .2byte EC_WORD_IS
- .2byte EC_WORD_JUST
- .2byte EC_WORD_BEAUTIFUL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_MOVE2(MEDITATE)
- .2byte EC_WORD_FOR
- .2byte EC_WORD_A
- .2byte EC_MOVE2(CALM_MIND)
- .4byte gBattleFrontierTrainerMons_Derrick
-
-@ 55
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "BRYSON$", 8
-@ pre-battle speech
- .2byte EC_MOVE2(POISON_POWDER)
- .2byte EC_WORD_IS
- .2byte EC_WORD_IN
- .2byte EC_WORD_OUR
- .2byte EC_MOVE2(COTTON_SPORE)
- .2byte EC_WORD_MOVE
-@ win speech
- .2byte EC_WORD_HOW_DO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_OUR
- .2byte EC_MOVE2(POISON_POWDER)
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(COTTON_SPORE)
- .2byte EC_WORD_WAS
- .2byte EC_WORD_USELESS
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Bryson
-
-@ 56
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "CLAYTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_HUH_QUES
- .2byte -1
- .2byte -1
- .2byte EC_WORD_WHERE
- .2byte EC_WORD_IS_IT_QUES
- .2byte -1
-@ win speech
- .2byte EC_WORD_WHERE
- .2byte EC_WORD_IS_IT_QUES
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_LOST
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKENAV
-@ loss speech
- .2byte EC_WORD_WHERE
- .2byte EC_WORD_IS_IT_QUES
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_LOST
- .2byte EC_WORD_MY
- .2byte EC_WORD_SENSE
- .4byte gBattleFrontierTrainerMons_Clayton
-
-@ 57
- .4byte FACILITY_CLASS_FISHERMAN
- .string "TRENTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME_OVER
- .2byte EC_WORD_FOR
- .2byte EC_WORD_SOME
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_WATER
- .2byte -1
-@ win speech
- .2byte EC_WORD_MMM
- .2byte EC_WORD_DO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WANT
- .2byte EC_WORD_SOME
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_GOT
- .2byte EC_WORD_THIS
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_WATER
- .2byte EC_WORD_SHOPPING
- .4byte gBattleFrontierTrainerMons_Trenton
-
-@ 58
- .4byte FACILITY_CLASS_FISHERMAN
- .string "JENSON$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_WILL
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DOWNCAST
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_THE
- .2byte EC_MOVE(CUT)
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_THE
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_WHO_IS
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_DOWNCAST
- .4byte gBattleFrontierTrainerMons_Jenson
-
-@ 59
- .4byte FACILITY_CLASS_FISHERMAN
- .string "WESLEY$", 8
-@ pre-battle speech
- .2byte EC_POKEMON2(MEW)
- .2byte EC_POKEMON2(MEW)
- .2byte EC_WORD_IS
- .2byte EC_WORD_HOW
- .2byte EC_WORD_I
- .2byte EC_WORD_CRY
-@ win speech
- .2byte EC_WORD_YES
- .2byte EC_WORD_I
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_POKEMON2(MEW)
- .2byte EC_POKEMON2(MEW)
- .2byte EC_WORD_EXCL
- .2byte EC_POKEMON2(MEW)
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Wesley
-
-@ 60
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "ANTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_GET
- .2byte EC_WORD_READY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .2byte EC_WORD_TO
- .2byte EC_MOVE(THRASH)
-@ win speech
- .2byte EC_WORD_WAHAHAHA
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_THAT
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_TOUGH
- .2byte EC_WORD_LOSS
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(SWALLOW)
- .4byte gBattleFrontierTrainerMons_Anton
-
-@ 61
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "LAWSON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_YOUNG
- .2byte EC_WORD_AT
- .2byte EC_WORD_HEART
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_NOT
- .2byte EC_WORD_COOL
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_NOT
- .2byte EC_WORD_AT
- .2byte EC_WORD_ALL
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_OLD
- .2byte EC_WORD_AND
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_SHAKY
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Lawson
-
-@ 62
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "SAMMY$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_PARTY
- .2byte EC_WORD_IS
- .2byte EC_WORD_READY
- .2byte EC_WORD_TO
- .2byte EC_WORD_ROCK
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_PARTY
- .2byte EC_WORD_IS
- .2byte EC_WORD_JUST
- .2byte EC_WORD_INCREDIBLE
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CRY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_PARTY
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Sammy
-
-@ 63
- .4byte FACILITY_CLASS_COLLECTOR
- .string "ARNIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NO_1
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_NO
- .2byte EC_WORD_RIVAL
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_LOSE
-@ loss speech
- .2byte EC_WORD_NO
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_ACCEPT
- .2byte EC_WORD_THIS
- .4byte gBattleFrontierTrainerMons_Arnie
-
-@ 64
- .4byte FACILITY_CLASS_COLLECTOR
- .string "ADRIAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_YAHOO
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_YAHOO
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_GOOD_BYE
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_GOOD_BYE
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Adrian
-
-@ 65
- .4byte FACILITY_CLASS_COLLECTOR
- .string "TRISTAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_CONFUSED
- .2byte EC_WORD_QUES
- .2byte -1
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_WORD_GENIUS
-@ win speech
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte -1
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_WORD_GENIUS
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_A
- .2byte EC_WORD_GENIUS
- .2byte EC_WORD_IN
- .2byte EC_WORD_BATTLE
- .4byte gBattleFrontierTrainerMons_Tristan
-
-@ 66
- .4byte FACILITY_CLASS_PARASOL_LADY
- .string "JULIANA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_THINK
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SHOPPING
- .2byte EC_WORD_TOO
- .2byte EC_WORD_MUCH
-@ win speech
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_A
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_PLUSH_DOLL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SO
- .2byte EC_WORD_WANT
- .2byte EC_WORD_ANOTHER
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_PLUSH_DOLL
- .4byte gBattleFrontierTrainerMons_Juliana
-
-@ 67
- .4byte FACILITY_CLASS_PARASOL_LADY
- .string "RYLEE$", 8
-@ pre-battle speech
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_ME
- .2byte EC_WORD_THAT
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_GUTS
-@ win speech
- .2byte EC_WORD_BYE_BYE
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_NO
- .2byte EC_WORD_GUTS
-@ loss speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_GUTSY
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_QUITE
- .2byte EC_WORD_SUPER
- .4byte gBattleFrontierTrainerMons_Rylee
-
-@ 68
- .4byte FACILITY_CLASS_PARASOL_LADY
- .string "CHELSEA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SERIOUSLY
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_TO
- .2byte EC_WORD_WIN
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_MY
- .2byte EC_WORD_WILL
- .2byte EC_WORD_TO
- .2byte EC_WORD_WIN
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_FAR
- .2byte EC_WORD_TOO_STRONG
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Chelsea
-
-@ 69
- .4byte FACILITY_CLASS_BEAUTY
- .string "DANELA$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_MUST_BE
- .2byte EC_WORD_MY
- .2byte EC_WORD_OPPONENT
- .2byte EC_WORD_NOW
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_OH_DEAR
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_GIVE_UP
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_AND
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_GOOD_BYE
- .4byte gBattleFrontierTrainerMons_Danela
-
-@ 70
- .4byte FACILITY_CLASS_BEAUTY
- .string "LIZBETH$", 8
-@ pre-battle speech
- .2byte EC_WORD_IF_I_LOSE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_MOVE2(PRESENT)
-@ win speech
- .2byte EC_WORD_HERE_IT_IS
- .2byte EC_WORD_A_LITTLE
- .2byte EC_WORD_PRAISE
- .2byte EC_WORD_AS
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE2(PRESENT)
-@ loss speech
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE2(PRESENT)
- .2byte EC_WORD_QUES_EXCL
- .2byte EC_WORD_HERE_IT_IS
- .2byte EC_WORD_A
- .2byte EC_MOVE(DOUBLE_SLAP)
- .4byte gBattleFrontierTrainerMons_Lizbeth
-
-@ 71
- .4byte FACILITY_CLASS_BEAUTY
- .string "AMELIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_BELIEVE
- .2byte EC_WORD_IN
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_APPEAL
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_SENSE
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_WORD_DISASTER
-@ loss speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_AWFUL
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_HOME
- .4byte gBattleFrontierTrainerMons_Amelia
-
-@ 72
- .4byte FACILITY_CLASS_AROMA_LADY
- .string "JILLIAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_IS
- .2byte EC_WORD_THAT
- .2byte EC_WORD_I
- .2byte EC_WORD_SMELL
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_THE
- .2byte EC_MOVE(SWEET_SCENT)
- .2byte EC_WORD_OF
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_WATER
-@ loss speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_OFFENSIVE
- .2byte EC_WORD_STENCH
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHAT
- .4byte gBattleFrontierTrainerMons_Jillian
-
-@ 73
- .4byte FACILITY_CLASS_AROMA_LADY
- .string "ABBIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_TRY
- .2byte EC_WORD_MY
- .2byte EC_WORD_SECRET
- .2byte EC_MOVE(AROMATHERAPY)
- .2byte EC_WORD_OK_QUES
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE(AROMATHERAPY)
- .2byte EC_WORD_IS
- .2byte EC_WORD_TERRIBLE
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
-@ loss speech
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SMELL
- .2byte EC_WORD_A
- .2byte EC_WORD_THING
- .2byte EC_WORD_QUES_EXCL
- .4byte gBattleFrontierTrainerMons_Abbie
-
-@ 74
- .4byte FACILITY_CLASS_AROMA_LADY
- .string "BRIANA$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BOY
- .2byte EC_WORD_FRIEND
- .2byte EC_WORD_WORKS
- .2byte EC_WORD_TOO
- .2byte EC_WORD_MUCH
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_MISS
- .2byte EC_WORD_HIM
- .2byte EC_WORD_MORE
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SO
- .2byte EC_WORD_LONESOME
- .2byte EC_WORD_WITHOUT
- .2byte EC_WORD_HIM
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Briana
-
-@ 75
- .4byte FACILITY_CLASS_GUITARIST
- .string "ANTONIO$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_HOW
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO
- .2byte EC_WORD_GO
-@ win speech
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_TO
- .2byte EC_WORD_DANCE
-@ loss speech
- .2byte EC_WORD_GO
- .2byte EC_WORD_GO
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_JUST
- .2byte EC_MOVE(FLAIL)
- .2byte EC_WORD_ABOUT
- .4byte gBattleFrontierTrainerMons_Antonio
-
-@ 76
- .4byte FACILITY_CLASS_GUITARIST
- .string "JADEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_HELLO
- .2byte EC_WORD_I
- .2byte EC_WORD_THINK
- .2byte EC_WORD_I
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_YOU
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_ME
- .2byte EC_MOVE(THRASH)
- .2byte EC_WORD_IN
- .2byte EC_MOVE2(FRUSTRATION)
-@ loss speech
- .2byte EC_WORD_THIS_IS_IT_EXCL
- .2byte -1
- .2byte -1
- .2byte EC_WORD_GOOD_BYE
- .2byte EC_WORD_FOREVER
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Jaden
-
-@ 77
- .4byte FACILITY_CLASS_GUITARIST
- .string "DAKOTA$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_TO
- .2byte EC_WORD_DANCE
- .2byte EC_WORD_WITH
- .2byte EC_WORD_POWER
-@ win speech
- .2byte EC_WORD_GOT
- .2byte EC_WORD_IT
- .2byte EC_WORD_QUES
- .2byte EC_WORD_DANCE
- .2byte EC_WORD_WITH
- .2byte EC_WORD_POWER
-@ loss speech
- .2byte EC_WORD_OKAY
- .2byte EC_WORD_YOU
- .2byte EC_WORD_UNDERSTAND
- .2byte EC_WORD_ALL_RIGHT
- .2byte EC_WORD_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Dakota
-
-@ 78
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "BRAYDEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_COLOR_CHANGE
- .2byte EC_WORD_VERSION
- .2byte EC_WORD_TOYS
- .2byte EC_WORD_ARE
- .2byte EC_WORD_USELESS
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_COLLECT
- .2byte EC_WORD_NORMAL
- .2byte EC_WORD_VERSION
- .2byte EC_WORD_TOYS
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_MOVE2(ATTRACT)
- .2byte EC_WORD_COLOR_CHANGE
- .2byte EC_WORD_VERSION
- .2byte EC_WORD_TOYS
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Brayden
-
-@ 79
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "CORSON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_GET
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(BEAT_UP)
- .2byte EC_WORD_ON
- .2byte EC_WORD_YOU
-@ win speech
- .2byte EC_WORD_TOO
- .2byte EC_WORD_EASY
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SO
- .2byte EC_WORD_COOL
-@ loss speech
- .2byte EC_WORD_WHY
- .2byte EC_WORD_QUES_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_MOVE2(CURSE)
- .2byte EC_WORD_YOU
- .4byte gBattleFrontierTrainerMons_Corson
-
-@ 80
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "TREVIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_IS
- .2byte EC_WORD_NONE
- .2byte EC_WORD_BETTER
- .2byte EC_WORD_THAN
- .2byte EC_WORD_ME
-@ win speech
- .2byte EC_WORD_YES_SIR_EXCL
- .2byte -1
- .2byte -1
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_THE
- .2byte EC_WORD_BEST
-@ loss speech
- .2byte EC_WORD_SERIOUS
- .2byte EC_WORD_QUES_EXCL
- .2byte -1
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Trevin
-
-@ 81
- .4byte FACILITY_CLASS_SAILOR
- .string "PATRICK$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_PERFECT
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_GIVE_UP
- .2byte EC_WORD_NOW
- .2byte -1
-@ win speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_BE
- .2byte EC_WORD_DISAPPOINTED
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_PERFECT
- .2byte -1
-@ loss speech
- .2byte EC_WORD_BUT
- .2byte EC_WORD_HOW
- .2byte EC_WORD_QUES
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_PERFECT
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Patrick
-
-@ 82
- .4byte FACILITY_CLASS_SAILOR
- .string "KADEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_ARE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_UP
- .2byte EC_WORD_TO
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WERE
- .2byte EC_WORD_A
- .2byte EC_WORD_SURPRISE
- .2byte EC_WORD_TO_ME
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_WHO
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Kaden
-
-@ 83
- .4byte FACILITY_CLASS_SAILOR
- .string "MAXWELL$", 8
-@ pre-battle speech
- .2byte EC_WORD_HEY_THERE
- .2byte EC_WORD_WHO_IS
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_RIVAL
- .2byte EC_WORD_QUES
- .2byte -1
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_RIVAL
- .2byte EC_WORD_IS
- .2byte EC_WORD_MY
- .2byte EC_WORD_GIRL
- .2byte EC_WORD_FRIEND
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_MAKING
- .2byte EC_WORD_YOU
- .2byte EC_WORD_MY
- .2byte EC_WORD_RIVAL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Maxwell
-
-@ 84
- .4byte FACILITY_CLASS_HIKER
- .string "DARYL$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_HOW
- .2byte EC_WORD_TO
- .2byte EC_MOVE(CHARGE)
-@ win speech
- .2byte EC_WORD_AM
- .2byte EC_WORD_I
- .2byte EC_WORD_OVERWHELMING
- .2byte EC_WORD_OR
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_A
- .2byte EC_WORD_LEGEND
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Daryl
-
-@ 85
- .4byte FACILITY_CLASS_HIKER
- .string "KENNETH$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_BETTER
- .2byte EC_WORD_NOT
- .2byte EC_MOVE2(SLACK_OFF)
- .2byte EC_WORD_WITH
- .2byte EC_WORD_ME
-@ win speech
- .2byte EC_WORD_DID
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(TAUNT)
- .2byte EC_WORD_INTIMIDATE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Kenneth
-
-@ 86
- .4byte FACILITY_CLASS_HIKER
- .string "RICH$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE(FACADE)
- .2byte EC_WORD_DOESN_T
- .2byte EC_MOVE2(TRICK)
- .2byte EC_WORD_ME
- .2byte -1
-@ win speech
- .2byte EC_WORD_SERIOUSLY
- .2byte EC_WORD_ARE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_OK_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_TOUGH
- .2byte EC_WORD_ON
- .2byte EC_WORD_ME
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Rich
-
-@ 87
- .4byte FACILITY_CLASS_KINDLER
- .string "CADEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_BE
- .2byte EC_WORD_DEFEATED
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_FIRE
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_FIRE
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TIRED
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_SO
- .2byte EC_WORD_HOT
- .4byte gBattleFrontierTrainerMons_Caden
-
-@ 88
- .4byte FACILITY_CLASS_KINDLER
- .string "MARLON$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_POKEDEX
- .2byte EC_WORD_IS
- .2byte EC_WORD_A_LITTLE
- .2byte EC_WORD_RADIO
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_A_LITTLE
- .2byte EC_WORD_RADIO
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_TOTALLY
- .2byte EC_WORD_COOL
-@ loss speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_NOT
- .2byte EC_WORD_QUES
- .2byte EC_WORD_IS
- .2byte EC_WORD_POKENAV
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Marlon
-
-@ 89
- .4byte FACILITY_CLASS_KINDLER
- .string "NASH$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ON
- .2byte EC_WORD_FIRE
- .2byte EC_WORD_BABY
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LEFT
- .2byte EC_WORD_YOU
- .2byte EC_WORD_JUST
- .2byte EC_WORD_AN
- .2byte EC_MOVE2(EMBER)
-@ loss speech
- .2byte EC_WORD_AIYEEH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_NO
- .2byte EC_WORD_WATER
- .2byte EC_WORD_PLEASE
- .4byte gBattleFrontierTrainerMons_Nash
-
-@ 90
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_M
- .string "ROBBY$", 8
-@ pre-battle speech
- .2byte EC_WORD_HAHAHA
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_TO
- .2byte EC_WORD_MEET_YOU
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_THE
- .2byte EC_WORD_LEADER
- .2byte EC_WORD_WITH
- .2byte EC_WORD_REFRESHING
- .2byte EC_WORD_SERENE_GRACE
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_MOVE(THRASH)
- .2byte EC_WORD_MY
- .2byte EC_WORD_TOYS
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Robby
-
-@ 91
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_M
- .string "REECE$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(QUICK_ATTACK)
- .2byte EC_WORD_CAN
- .2byte EC_WORD_BEAT
- .2byte EC_WORD_A
- .2byte EC_MOVE2(TELEPORT)
-@ win speech
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_I
- .2byte EC_WORD_SAID
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_DARN
- .2byte EC_WORD_FAST
-@ loss speech
- .2byte EC_WORD_I_WAS
- .2byte EC_WORD_KIDDING
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_THAT
- .2byte EC_MOVE2(TELEPORT)
- .2byte EC_WORD_THING
- .4byte gBattleFrontierTrainerMons_Reece
-
-@ 92
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_F
- .string "KATHRYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_TRAIN
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_ENOUGH
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_DON_T
- .2byte EC_MOVE2(TAUNT)
- .2byte EC_WORD_ME
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_THAT
- .2byte EC_WORD_OK_QUES
-@ loss speech
- .2byte EC_WORD_WHY
- .2byte EC_WORD_COULDN_T
- .2byte EC_WORD_I
- .2byte EC_WORD_WIN
- .2byte EC_WORD_THIS
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Kathryn
-
-@ 93
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_F
- .string "ELLEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_CRUSH
- .2byte EC_WORD_YOU
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_AN
- .2byte EC_WORD_EGG
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_A
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_VICTORY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
-@ loss speech
- .2byte EC_WORD_TOO
- .2byte EC_WORD_TOUGH
- .2byte EC_WORD_TO
- .2byte EC_WORD_CRUSH
- .2byte EC_WORD_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Ellen
-
-@ 94
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_M
- .string "RAMON$", 8
-@ pre-battle speech
- .2byte EC_WORD_OKAY
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_PERFECTION
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_THAT
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_SECRET
- .2byte EC_WORD_WHY
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_HAPPY
- .4byte gBattleFrontierTrainerMons_Ramon
-
-@ 95
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_M
- .string "ARTHUR$", 8
-@ pre-battle speech
- .2byte EC_WORD_HERE_I_COME
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_READY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_IT
- .2byte EC_WORD_ALL
-@ win speech
- .2byte EC_WORD_THAT_S_IT_EXCL
- .2byte -1
- .2byte -1
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_FABULOUS
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_NOT
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Arthur
-
-@ 96
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_F
- .string "ALONDRA$", 8
-@ pre-battle speech
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_DAY
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_WORD_GREAT
- .2byte EC_WORD_DAY
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(DIVE)
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BE
- .2byte EC_WORD_A
- .2byte EC_WORD_LEGEND
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(DIVE)
- .2byte EC_WORD_LEFT
- .2byte EC_WORD_ME
- .2byte EC_WORD_COLD
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Alondra
-
-@ 97
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_F
- .string "ADRIANA$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME
- .2byte EC_WORD_SEE
- .2byte EC_WORD_AN
- .2byte EC_WORD_INCREDIBLE
- .2byte EC_WORD_SWIFT_SWIM
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_IT
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_SO
- .2byte EC_WORD_EASY
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_MOVE2(BEAT_UP)
- .2byte EC_WORD_AND
- .2byte EC_WORD_TIRED
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Adriana
-
-@ 98
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_M
- .string "MALIK$", 8
-@ pre-battle speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_NOT
- .2byte EC_WORD_ANOTHER
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_FINALLY
- .2byte EC_WORD_WON
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TIRED
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_FINALLY
- .2byte EC_WORD_LOST
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TIRED
- .4byte gBattleFrontierTrainerMons_Malik
-
-@ 99
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_F
- .string "JILL$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_THE
- .2byte EC_MOVE2(QUICK_ATTACK)
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_THE
- .2byte EC_MOVE2(QUICK_ATTACK)
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_WINS
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_THE
- .2byte EC_MOVE2(QUICK_ATTACK)
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_GIVES
- .2byte EC_WORD_UP
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Jill
-
-@ 100
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_M
- .string "ERIK$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_THE
- .2byte EC_WORD_SPEED_BOOST
- .2byte EC_WORD_HERO
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_FROM
- .2byte EC_WORD_THE
- .2byte EC_WORD_SPEED_BOOST
- .2byte EC_WORD_HERO
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_WAAAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_NO
- .2byte EC_WORD_NO
- .2byte EC_WORD_EXCL_EXCL
- .4byte gBattleFrontierTrainerMons_Erik
-
-@ 101
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_F
- .string "YAZMIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WOULD
- .2byte EC_WORD_RATHER
- .2byte EC_WORD_RUN
- .2byte EC_WORD_THAN
- .2byte EC_WORD_BIKE
-@ win speech
- .2byte EC_WORD_YES
- .2byte EC_WORD_I
- .2byte EC_WORD_WOULD
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_RATHER
- .2byte EC_WORD_RUN
-@ loss speech
- .2byte EC_WORD_BYE_BYE
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_RUN_AWAY
- .4byte gBattleFrontierTrainerMons_Yazmin
-
-@ 102
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_M
- .string "JAMAL$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_BE
- .2byte EC_WORD_A
- .2byte EC_WORD_FATHER
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_WAIT
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_BABY
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BABY
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BE
- .2byte EC_WORD_TOTALLY
- .2byte EC_WORD_AWESOME
- .4byte gBattleFrontierTrainerMons_Jamal
-
-@ 103
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_F
- .string "LESLIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_BE
- .2byte EC_WORD_A
- .2byte EC_WORD_MOTHER
-@ win speech
- .2byte EC_WORD_A
- .2byte EC_WORD_BABY
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BE
- .2byte EC_WORD_A_LITTLE
- .2byte EC_WORD_CHALLENGE
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TOO
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_TO
- .2byte EC_WORD_BE
- .2byte EC_WORD_ANGRY
- .4byte gBattleFrontierTrainerMons_Leslie
-
-@ 104
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_M
- .string "DAVE$", 8
-@ pre-battle speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_I
- .2byte EC_WORD_DO
- .2byte EC_WORD_TODAY
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_SOME
- .2byte EC_WORD_SPORTS
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_GO
- .2byte EC_WORD_PLAY
- .2byte EC_WORD_A
- .2byte EC_WORD_GAME
- .4byte gBattleFrontierTrainerMons_Dave
-
-@ 105
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_M
- .string "CARLO$", 8
-@ pre-battle speech
- .2byte EC_WORD_HAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_YEAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DO
- .2byte EC_WORD_THINGS
- .2byte EC_WORD_AT
- .2byte EC_MOVE(EXTREME_SPEED)
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LOST
- .2byte EC_WORD_AT
- .2byte EC_MOVE(EXTREME_SPEED)
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Carlo
-
-@ 106
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_F
- .string "EMILIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_ME
- .2byte EC_WORD_WORRY
- .2byte EC_WORD_QUES
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_NONE
-@ win speech
- .2byte EC_WORD_AHAHA
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_FANTASTIC
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_AHAHA
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_ENTERTAINING
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Emilia
-
-@ 107
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_F
- .string "DALIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BIKE
- .2byte EC_WORD_IS
- .2byte EC_WORD_VERY
- .2byte EC_WORD_EXPENSIVE
- .2byte -1
-@ win speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_COME
- .2byte EC_WORD_NEAR
- .2byte EC_WORD_MY
- .2byte EC_WORD_BIKE
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BIKE
- .2byte EC_WORD_IS
- .2byte EC_WORD_MY
- .2byte EC_WORD_BEST
- .2byte EC_WORD_FRIEND
- .4byte gBattleFrontierTrainerMons_Dalia
-
-@ 108
- .4byte FACILITY_CLASS_BLACK_BELT
- .string "HITOMI$", 8
-@ pre-battle speech
- .2byte EC_WORD_YEAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_HAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_QUES_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_QUES_EXCL
-@ loss speech
- .2byte EC_WORD_AIYEEH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_EXCL_EXCL
- .4byte gBattleFrontierTrainerMons_Hitomi
-
-@ 109
- .4byte FACILITY_CLASS_BLACK_BELT
- .string "RICARDO$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_PLAY
- .2byte EC_WORD_TIME
- .2byte EC_WORD_IS
- .2byte EC_WORD_OVER
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_OUT
- .2byte EC_WORD_OF
- .2byte EC_WORD_HERE
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_HIT
- .2byte EC_WORD_ME
- .2byte EC_WORD_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Ricardo
-
-@ 110
- .4byte FACILITY_CLASS_BLACK_BELT
- .string "SHIZUKA$", 8
-@ pre-battle speech
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_ME
- .2byte EC_WORD_THAT
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_SERIOUS
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_FORGET
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_YOU
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_PERFECT
- .2byte EC_WORD_IN
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_WAY
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Shizuka
-
-@ 111
- .4byte FACILITY_CLASS_BATTLE_GIRL
- .string "JOANA$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_LOSE
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_AWAY
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_THE
- .2byte EC_WORD_WINNER
- .2byte EC_WORD_HEAR
- .2byte EC_WORD_ME
- .2byte EC_MOVE2(ROAR)
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_REFUSE
- .2byte EC_WORD_TO
- .2byte EC_WORD_ACCEPT
- .2byte EC_WORD_THAT
- .2byte EC_MOVE(OUTRAGE)
- .4byte gBattleFrontierTrainerMons_Joana
-
-@ 112
- .4byte FACILITY_CLASS_BATTLE_GIRL
- .string "KELLY$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_NIGHT
- .2byte EC_WORD_SCHOOL
- .2byte EC_WORD_IS
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_SCARY
-@ win speech
- .2byte EC_WORD_A
- .2byte EC_WORD_LADY
- .2byte EC_WORD_GHOST
- .2byte EC_WORD_APPEARS
- .2byte EC_WORD_THERE
- .2byte -1
-@ loss speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_HOME
- .2byte EC_WORD_WORK
- .2byte EC_WORD_IS
- .2byte EC_WORD_AWFULLY
- .2byte EC_WORD_SCARY
- .4byte gBattleFrontierTrainerMons_Kelly
-
-@ 113
- .4byte FACILITY_CLASS_BATTLE_GIRL
- .string "RAYNA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NO_1
- .2byte EC_WORD_WHEN
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_POWER
-@ win speech
- .2byte EC_WORD_UNDERSTAND
- .2byte EC_WORD_MY
- .2byte EC_WORD_POWER
- .2byte EC_WORD_NOW
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_TERRIBLE
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TERRIBLE
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Rayna
-
-@ 114
- .4byte FACILITY_CLASS_EXPERT_M
- .string "EVAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_HAS
- .2byte EC_WORD_A
- .2byte EC_WORD_SMELL
- .2byte -1
-@ win speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_THE
- .2byte EC_MOVE(SWEET_SCENT)
- .2byte EC_WORD_OF
- .2byte EC_WORD_VICTORY
-@ loss speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_AWFUL
- .2byte EC_WORD_STENCH
- .2byte EC_WORD_OF
- .2byte EC_WORD_A
- .2byte EC_WORD_LOSS
- .4byte gBattleFrontierTrainerMons_Evan
-
-@ 115
- .4byte FACILITY_CLASS_EXPERT_M
- .string "JORDAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_BEAT
- .2byte EC_WORD_ME
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_QUES_EXCL
- .2byte -1
- .2byte EC_WORD_BUT
- .2byte EC_WORD_HOW
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Jordan
-
-@ 116
- .4byte FACILITY_CLASS_EXPERT_M
- .string "JOEL$", 8
-@ pre-battle speech
- .2byte EC_WORD_FUFUFU
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte -1
- .2byte -1
- .2byte -1
-@ win speech
- .2byte EC_WORD_GIGGLE
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte -1
- .2byte -1
- .2byte -1
-@ loss speech
- .2byte EC_WORD_HAHAHA
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Joel
-
-@ 117
- .4byte FACILITY_CLASS_EXPERT_F
- .string "KRISTEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_HAHAHA
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte EC_WORD_A
- .2byte EC_WORD_KID
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_JUST
- .2byte EC_WORD_A_LITTLE
- .2byte EC_WORD_KID
- .2byte EC_WORD_AFTER
- .2byte EC_WORD_ALL
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_A
- .2byte EC_WORD_TOUGH
- .2byte EC_WORD_KID
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_HUMPH
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Kristen
-
-@ 118
- .4byte FACILITY_CLASS_EXPERT_F
- .string "SELPHY$", 8
-@ pre-battle speech
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_IS_IT_QUES
- .2byte -1
- .2byte -1
- .2byte -1
-@ win speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_YES
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_WHY
- .2byte EC_WORD_NOT
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_NO
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_WHY
- .2byte EC_WORD_NOT
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Selphy
-
-@ 119
- .4byte FACILITY_CLASS_EXPERT_F
- .string "CHLOE$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME
- .2byte EC_WORD_WE
- .2byte EC_WORD_WILL
- .2byte EC_WORD_DO
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_NOW
-@ win speech
- .2byte EC_WORD_MORE
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_ANOTHER
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_YOU
- .2byte EC_WORD_ARE
- .4byte gBattleFrontierTrainerMons_Chloe
-
-@ 120
- .4byte FACILITY_CLASS_PSYCHIC_M
- .string "NORTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_YOU
- .2byte -1
- .2byte -1
-@ win speech
- .2byte EC_WORD_EXCUSE_ME
- .2byte EC_WORD_BUT
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_A
- .2byte EC_WORD_PUSHOVER
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_SOME
- .2byte EC_WORD_KIND
- .2byte EC_WORD_OF
- .2byte EC_WORD_AWESOME
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Norton
-
-@ 121
- .4byte FACILITY_CLASS_PSYCHIC_M
- .string "LUKAS$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_JOKING
- .2byte EC_WORD_IS
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_TERRIBLE
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_ROCK_HEAD
- .2byte EC_WORD_EXISTS
- .2byte EC_WORD_TO
- .2byte EC_WORD_SHINE
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_ROCK_HEAD
- .2byte EC_WORD_COME
- .2byte EC_WORD_TO
- .2byte EC_WORD_SHINE
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Lukas
-
-@ 122
- .4byte FACILITY_CLASS_PSYCHIC_M
- .string "ZACH$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_AN
- .2byte EC_WORD_EXCELLENT
- .2byte EC_MOVE2(MIMIC)
- .2byte EC_WORD_OF
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_A_LITTLE
- .2byte EC_POKEMON2(TOGEPI)
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ANGRY
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_A
- .2byte EC_POKEMON2(MANKEY)
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Zach
-
-@ 123
- .4byte FACILITY_CLASS_PSYCHIC_F
- .string "KAITLYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CRUSH
- .2byte EC_WORD_THINGS
- .2byte EC_WORD_WITH
- .2byte EC_WORD_PSYCHIC
- .2byte EC_WORD_POWER
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_VICTORY
- .2byte EC_WORD_WILL
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_THE
- .2byte EC_WORD_NEWS
-@ loss speech
- .2byte EC_WORD_NO
- .2byte EC_WORD_NO
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_THIS
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_DO
- .4byte gBattleFrontierTrainerMons_Kaitlyn
-
-@ 124
- .4byte FACILITY_CLASS_PSYCHIC_F
- .string "BREANNA$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_WILL
- .2byte EC_WORD_CRUSH
- .2byte EC_WORD_YOU
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_SOME
- .2byte EC_WORD_MORE
- .2byte EC_WORD_OF
- .2byte EC_WORD_THIS
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_GUTS
- .2byte EC_WORD_AND
- .2byte EC_WORD_SKILL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Breanna
-
-@ 125
- .4byte FACILITY_CLASS_PSYCHIC_F
- .string "KENDRA$", 8
-@ pre-battle speech
- .2byte EC_WORD_IF
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_SMART
- .2byte EC_WORD_STOP
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_NOW
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SAID
- .2byte EC_WORD_THAT
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_STOP
-@ loss speech
- .2byte EC_WORD_WHY
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_STOP
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Kendra
-
-@ 126
- .4byte FACILITY_CLASS_HEX_MANIAC
- .string "MOLLY$", 8
-@ pre-battle speech
- .2byte EC_WORD_WILL
- .2byte EC_WORD_MY
- .2byte EC_WORD_CUTE_CHARM
- .2byte EC_MOVE2(ATTRACT)
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_MY
- .2byte EC_WORD_TOYS
- .2byte EC_WORD_NOW
-@ loss speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_HOW
- .2byte EC_WORD_COULD
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Molly
-
-@ 127
- .4byte FACILITY_CLASS_HEX_MANIAC
- .string "JAZMIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_FORECAST
- .2byte EC_WORD_TERRIBLE
- .2byte EC_WORD_THINGS
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
-@ win speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_WASN_T
- .2byte EC_WORD_MY
- .2byte EC_WORD_FORECAST
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(FORESIGHT)
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_ME
- .2byte EC_WORD_THIS
- .4byte gBattleFrontierTrainerMons_Jazmin
-
-@ 128
- .4byte FACILITY_CLASS_HEX_MANIAC
- .string "KELSEY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVEN_T
- .2byte EC_WORD_SLEPT
- .2byte EC_WORD_IN
- .2byte EC_WORD_DAYS
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_SLEEP
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BE
- .2byte EC_WORD_EXCELLENT
- .2byte EC_WORD_NOW
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_DESTROYED
- .2byte EC_WORD_MY
- .2byte EC_WORD_SLEEP
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Kelsey
-
-@ 129
- .4byte FACILITY_CLASS_POKEMANIAC
- .string "JALEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_ALLOW
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_TO
- .2byte EC_MOVE(THRASH)
-@ win speech
- .2byte EC_WORD_HAHAHA
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_ARE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_ANGRY
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_WHY
- .2byte EC_WORD_IS
- .2byte EC_WORD_THIS
- .2byte EC_WORD_SO
- .2byte EC_WORD_HARD
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Jalen
-
-@ 130
- .4byte FACILITY_CLASS_POKEMANIAC
- .string "GRIFFEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_MOVE2(SWALLOW)
- .2byte EC_MOVE2(SLUDGE)
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(TRANSFORM)
- .2byte EC_WORD_MYSELF
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_MOVE(GROWTH)
- .2byte EC_WORD_OF
- .2byte EC_MOVE2(ACID_ARMOR)
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_MOVE(GROWTH)
- .2byte EC_WORD_OF
- .2byte EC_WORD_SUCTION_CUPS
- .4byte gBattleFrontierTrainerMons_Griffen
-
-@ 131
- .4byte FACILITY_CLASS_POKEMANIAC
- .string "XANDER$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_GOT
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ON
- .2byte EC_WORD_RENTAL
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_INCREDIBLE
- .2byte EC_WORD_MY
- .2byte EC_WORD_RENTAL
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_WON
-@ loss speech
- .2byte EC_WORD_RENTAL
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_UP
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(SCRATCH)
- .4byte gBattleFrontierTrainerMons_Xander
-
-@ 132
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "MARVIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_UP
- .2byte EC_WORD_TO
- .2byte EC_WORD_THE
- .2byte EC_WORD_CHALLENGE
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_THINK
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_ENOUGH
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_PERFECT
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_SO
- .2byte EC_WORD_MUCH
- .4byte gBattleFrontierTrainerMons_Marvin
-
-@ 133
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "BRENNAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_MOVE2(WISH)
- .2byte EC_WORD_TO
- .2byte EC_WORD_SEE
- .2byte EC_WORD_THE
- .2byte EC_WORD_NEWS
-@ win speech
- .2byte EC_WORD_COMICS
- .2byte EC_WORD_GET
- .2byte EC_WORD_DAMP
- .2byte EC_WORD_FROM
- .2byte EC_WORD_DRIZZLE
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_TIGHT
- .2byte EC_WORD_MONEY
- .2byte EC_WORD_LIVING
- .2byte EC_WORD_CHANNEL
- .2byte EC_WORD_QUES_EXCL
- .4byte gBattleFrontierTrainerMons_Brennan
-
-@ 134
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "BALEY$", 8
-@ pre-battle speech
- .2byte EC_MOVE(SCREECH)
- .2byte EC_WORD_IS
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_MUSIC
- .2byte EC_WORD_TO_ME
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE(SCREECH)
- .2byte EC_WORD_STRATEGY
- .2byte EC_WORD_IS
- .2byte EC_WORD_THE
- .2byte EC_WORD_BEST
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_SOUNDPROOF
- .2byte EC_WORD_QUES
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Baley
-
-@ 135
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "ZACKARY$", 8
-@ pre-battle speech
- .2byte EC_WORD_CAN
- .2byte EC_WORD_YOU
- .2byte EC_MOVE(DIG)
- .2byte EC_WORD_IT
- .2byte EC_WORD_YO
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_MOVE2(TAKE_DOWN)
- .2byte EC_WORD_TAKE
- .2byte EC_WORD_A
- .2byte EC_MOVE2(DIVE)
- .2byte EC_WORD_YO
- .2byte EC_WORD_YO
-@ loss speech
- .2byte EC_WORD_BREAK
- .2byte EC_WORD_DOWN
- .2byte EC_MOVE2(DIVE)
- .2byte EC_WORD_TIME
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .4byte gBattleFrontierTrainerMons_Zackary
-
-@ 136
- .4byte FACILITY_CLASS_COLLECTOR
- .string "GABRIEL$", 8
-@ pre-battle speech
- .2byte EC_MOVE2(POUND)
- .2byte EC_WORD_THE
- .2byte EC_WORD_THICK_FAT
- .2byte EC_WORD_ON
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(BELLY_DRUM)
-@ win speech
- .2byte EC_MOVE2(POUND)
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(BELLY_DRUM)
- .2byte EC_MOVE2(POUND)
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(BELLY_DRUM)
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(BELLY_DRUM)
- .2byte EC_WORD_WAS
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Gabriel
-
-@ 137
- .4byte FACILITY_CLASS_PARASOL_LADY
- .string "EMILY$", 8
-@ pre-battle speech
- .2byte EC_WORD_HOW
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_A_TINY_BIT
- .2byte EC_WORD_OF
- .2byte EC_MOVE(HYPNOSIS)
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE(HYPNOSIS)
- .2byte EC_WORD_STRATEGY
- .2byte EC_WORD_WORKS
- .2byte EC_WORD_TO
- .2byte EC_WORD_PERFECTION
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE(HYPNOSIS)
- .2byte EC_WORD_STRATEGY
- .2byte EC_WORD_WENT
- .2byte EC_WORD_BADLY
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Emily
-
-@ 138
- .4byte FACILITY_CLASS_BEAUTY
- .string "JORDYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_MY
- .2byte EC_WORD_SECRET
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_AS
- .2byte EC_WORD_I
- .2byte EC_WORD_APPEAR
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_BUT
- .2byte EC_WORD_HOW
- .2byte EC_WORD_DID
- .2byte EC_WORD_YOU
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Jordyn
-
-@ 139
- .4byte FACILITY_CLASS_AROMA_LADY
- .string "SOFIA$", 8
-@ pre-battle speech
- .2byte EC_POKEMON(LOUDRED)
- .2byte EC_WORD_PROBABLY
- .2byte EC_WORD_HAS
- .2byte EC_WORD_A
- .2byte EC_MOVE(SWEET_SCENT)
- .2byte -1
-@ win speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_THE
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_THAT
- .2byte EC_WORD_I
- .2byte EC_WORD_GET
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WORK
- .2byte EC_WORD_AT
- .2byte EC_WORD_THE
- .2byte EC_WORD_DEPT_STORE
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Sofia
-
-@ 140
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "BRADEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_CHOOSE_YOU
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_THIS_IS_IT_EXCL
- .2byte -1
- .2byte -1
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_AWESOME
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_MYSELF
-@ loss speech
- .2byte EC_WORD_ALL_RIGHT
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_SURRENDER
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Braden
-
-@ 141
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "KAYDEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_THEY
- .2byte EC_WORD_OVERDO
- .2byte EC_WORD_THAT
- .2byte EC_WORD_GOURMET
- .2byte EC_WORD_THING
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_THAT
- .2byte EC_WORD_GOURMET
- .2byte EC_WORD_THING
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
-@ loss speech
- .2byte EC_WORD_HEY
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_TASTY
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Kayden
-
-@ 142
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "COOPER$", 8
-@ pre-battle speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_ABSOLUTELY
- .2byte EC_WORD_BE
- .2byte EC_WORD_A
- .2byte EC_WORD_PUSHOVER
-@ win speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_TOO
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SORRY
- .4byte gBattleFrontierTrainerMons_Cooper
-
-@ 143
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "JULIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_SPIRIT
- .2byte EC_WORD_ALONE
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WIN
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_ACCEPT
- .2byte EC_WORD_THIS
- .2byte EC_WORD_WITH
- .2byte EC_WORD_SERENE_GRACE
-@ loss speech
- .2byte EC_WORD_FOR_NOW
- .2byte EC_WORD_GOOD_BYE
- .2byte EC_WORD_BUT
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_NOT
- .2byte EC_WORD_OVER
- .4byte gBattleFrontierTrainerMons_Julia
-
-@ 144
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "AMARA$", 8
-@ pre-battle speech
- .2byte EC_WORD_WROOOAAR_EXCL
- .2byte EC_WORD_EXCL_EXCL
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SO
- .2byte EC_WORD_READY
- .2byte EC_WORD_EXCL_EXCL
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LOSE
- .2byte EC_WORD_MYSELF
- .2byte EC_WORD_IF
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_EXCITING
-@ loss speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_TOO
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(TACKLE)
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Amara
-
-@ 145
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "LYNN$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_SECRET
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_BE
- .2byte EC_WORD_HIDDEN
- .2byte EC_WORD_FOREVER
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_SECRET
- .2byte EC_WORD_NOW
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN_T
- .2byte EC_MOVE(SAFEGUARD)
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_OWN
- .2byte EC_WORD_SECRET
- .4byte gBattleFrontierTrainerMons_Lynn
-
-@ 146
- .4byte FACILITY_CLASS_PKMN_RANGER_M
- .string "JOVAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_SENSE
- .2byte EC_WORD_IS
- .2byte EC_WORD_SADLY
- .2byte EC_WORD_LACKING
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_SENSE
- .2byte EC_WORD_IS
- .2byte EC_WORD_COOL
- .2byte EC_WORD_ISN_T_IT_QUES
-@ loss speech
- .2byte EC_WORD_I_WAS
- .2byte EC_WORD_MINUS
- .2byte EC_WORD_MY
- .2byte EC_WORD_NORMAL
- .2byte EC_WORD_POWER
- .2byte EC_WORD_TODAY
- .4byte gBattleFrontierTrainerMons_Jovan
-
-@ 147
- .4byte FACILITY_CLASS_PKMN_RANGER_M
- .string "DOMINIC$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_THIS
- .2byte EC_WORD_EXCELLENT
- .2byte EC_WORD_CAMERA
- .2byte -1
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_CAMERA
- .2byte EC_WORD_WAS
- .2byte EC_WORD_AWFULLY
- .2byte EC_WORD_EXPENSIVE
- .2byte -1
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_CAMERA
- .2byte EC_WORD_DOESN_T
- .2byte EC_WORD_MISS
- .2byte EC_WORD_A
- .2byte EC_WORD_THING
- .4byte gBattleFrontierTrainerMons_Dominic
-
-@ 148
- .4byte FACILITY_CLASS_PKMN_RANGER_M
- .string "NIKOLAS$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_MOVE2(MIMIC)
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_AFTER
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_BATTLE
-@ win speech
- .2byte EC_WORD_IF_I_WIN
- .2byte EC_WORD_I
- .2byte EC_WORD_PRETEND
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_POKEMON2(TAUROS)
-@ loss speech
- .2byte EC_WORD_IF_I_LOSE
- .2byte EC_WORD_I
- .2byte EC_WORD_PRETEND
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_POKEMON2(MILTANK)
- .4byte gBattleFrontierTrainerMons_Nikolas
-
-@ 149
- .4byte FACILITY_CLASS_PKMN_RANGER_F
- .string "VALERIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_MOVE2(WISH)
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WOULD
- .2byte EC_WORD_NOT
- .2byte EC_MOVE2(GLARE)
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_REALLY
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_WORD_REALLY
- .2byte EC_MOVE(SCARY_FACE)
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Valeria
-
-@ 150
- .4byte FACILITY_CLASS_PKMN_RANGER_F
- .string "DELANEY$", 8
-@ pre-battle speech
- .2byte EC_WORD_SCHOOL
- .2byte EC_WORD_IS
- .2byte EC_WORD_OVER
- .2byte EC_WORD_TIME
- .2byte EC_WORD_TO
- .2byte EC_WORD_PLAY
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BOY
- .2byte EC_WORD_FRIEND
- .2byte EC_WORD_IS
- .2byte EC_WORD_FROM
- .2byte EC_WORD_SCHOOL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_TO
- .2byte EC_WORD_WORK
- .2byte EC_WORD_NEXT
- .2byte EC_WORD_WEEK
- .4byte gBattleFrontierTrainerMons_Delaney
-
-@ 151
- .4byte FACILITY_CLASS_PKMN_RANGER_F
- .string "MEGHAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_SCHOOL
- .2byte EC_WORD_IS
- .2byte EC_WORD_OUT
- .2byte EC_WORD_TIME
- .2byte EC_WORD_TO
- .2byte EC_WORD_PLAY
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BOY
- .2byte EC_WORD_FRIEND
- .2byte EC_WORD_LIKES
- .2byte EC_WORD_COMICS
- .2byte -1
-@ loss speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_BACK
- .2byte EC_WORD_TO
- .2byte EC_WORD_SCHOOL
- .2byte EC_WORD_SOON
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Meghan
-
-@ 152
- .4byte FACILITY_CLASS_DRAGON_TAMER
- .string "ROBERTO$", 8
-@ pre-battle speech
- .2byte EC_WORD_DRAGON
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_INVINCIBLE
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WEREN_T
- .2byte EC_WORD_BAD
- .2byte EC_WORD_I_WAS
- .2byte EC_WORD_JUST
- .2byte EC_WORD_BETTER
-@ loss speech
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SATISFIED
- .2byte EC_WORD_YET
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Roberto
-
-@ 153
- .4byte FACILITY_CLASS_DRAGON_TAMER
- .string "DAMIAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_PURE_POWER
- .2byte EC_WORD_IS
- .2byte EC_WORD_MACHINE
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(MACH_PUNCH)
- .2byte EC_WORD_WILL
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_A
- .2byte EC_MOVE(BRICK_BREAK)
-@ loss speech
- .2byte EC_WORD_ARRGH
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_NO
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Damian
-
-@ 154
- .4byte FACILITY_CLASS_DRAGON_TAMER
- .string "BRODY$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_SENSE
- .2byte EC_WORD_SEEMS
- .2byte EC_POKEMON(ODDISH)
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_MY
- .2byte EC_WORD_FAMILY
- .2byte EC_WORD_STAY_AT_HOME
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_QUESTION
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_SENSE
- .2byte EC_WORD_SERIOUSLY
- .4byte gBattleFrontierTrainerMons_Brody
-
-@ 155
- .4byte FACILITY_CLASS_DRAGON_TAMER
- .string "GRAHAM$", 8
-@ pre-battle speech
- .2byte EC_WORD_YEAH
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_YEAH_YEAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_WAHAHAHA
- .2byte EC_WORD_WAHAHAHA
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_WAHAHAHA
- .2byte EC_WORD_WAHAHAHA
- .2byte EC_WORD_EXCL_EXCL
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_MY
- .2byte EC_WORD_BAD
- .4byte gBattleFrontierTrainerMons_Graham
-
-@ 156
- .4byte FACILITY_CLASS_POKEFAN_M
- .string "TYLOR$", 8
-@ pre-battle speech
- .2byte EC_WORD_ARE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(HEAT_WAVE)
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YES
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ON
- .2byte EC_WORD_FIRE
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I_WAS
- .2byte EC_WORD_ON
- .2byte EC_WORD_FIRE
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
- .4byte gBattleFrontierTrainerMons_Tylor
-
-@ 157
- .4byte FACILITY_CLASS_POKEFAN_F
- .string "JAREN$", 8
-@ pre-battle speech
- .2byte EC_WORD_FIGHTING
- .2byte EC_WORD_SPIRIT
- .2byte EC_WORD_QUES
- .2byte EC_WORD_ME
- .2byte EC_WORD_QUES
- .2byte -1
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_MORE
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_POKEMON
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_QUITE
- .2byte EC_WORD_CUTE
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Jaren
-
-@ 158
- .4byte FACILITY_CLASS_PKMN_BREEDER_M
- .string "CORDELL$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_IS
- .2byte EC_WORD_DECIDED
- .2byte EC_WORD_ON
- .2byte EC_WORD_SPIRIT
-@ win speech
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_ACCEPT
- .2byte EC_WORD_THAT
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BE
- .2byte EC_WORD_ON
- .2byte EC_WORD_MY
- .2byte EC_WORD_WAY
- .4byte gBattleFrontierTrainerMons_Cordell
-
-@ 159
- .4byte FACILITY_CLASS_POKEMON_BREEDER_F
- .string "JAZLYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_IS
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEDEX
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_AWESOME
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_OH_YEAH
- .2byte EC_WORD_WOW
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEDEX
- .2byte EC_WORD_IS
- .2byte EC_WORD_SUPER
-@ loss speech
- .2byte EC_WORD_AN
- .2byte EC_WORD_AVANT_GARDE
- .2byte EC_WORD_POKEDEX
- .2byte EC_WORD_WOULD
- .2byte EC_WORD_BE
- .2byte EC_WORD_AWESOME
- .4byte gBattleFrontierTrainerMons_Jazlyn
-
-@ 160
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "ZACHERY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_MY
- .2byte EC_WORD_OWN
- .2byte EC_WORD_PLACE
- .2byte EC_WORD_YEEHAW_EXCL
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_AN
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_TIME
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_FLATTEN
- .2byte EC_WORD_MY
- .2byte EC_WORD_HAPPINESS
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Zachery
-
-@ 161
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "JOHAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_WINTER
- .2byte EC_WORD_WILL
- .2byte EC_WORD_SOON
- .2byte EC_WORD_BE
- .2byte EC_WORD_HERE
- .2byte -1
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_ALLOWANCE
- .2byte EC_WORD_COULD
- .2byte EC_WORD_USE
- .2byte EC_WORD_A
- .2byte EC_MOVE2(HELPING_HAND)
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ALWAYS
- .2byte EC_WORD_USE
- .2byte EC_WORD_MY
- .2byte EC_WORD_ALLOWANCE
- .2byte EC_WORD_UP
- .4byte gBattleFrontierTrainerMons_Johan
-
-@ 162
- .4byte FACILITY_CLASS_LASS
- .string "SHEA$", 8
-@ pre-battle speech
- .2byte EC_WORD_DO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_WITH
- .2byte EC_WORD_BEAUTY
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_IN
- .2byte EC_WORD_AN
- .2byte EC_WORD_UGLY
- .2byte EC_WORD_WAY
-@ loss speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_IS
- .2byte EC_WORD_BEAUTY
- .2byte EC_WORD_TO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Shea
-
-@ 163
- .4byte FACILITY_CLASS_LASS
- .string "KAILA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_THIRSTY
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_NOW
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_COULD
- .2byte EC_WORD_USE
- .2byte EC_WORD_A
- .2byte EC_WORD_COLD
- .2byte EC_WORD_DRINK
-@ loss speech
- .2byte EC_WORD_THAT
- .2byte EC_WORD_LOSS
- .2byte EC_WORD_IS
- .2byte EC_WORD_HARD
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(SWALLOW)
- .4byte gBattleFrontierTrainerMons_Kaila
-
-@ 164
- .4byte FACILITY_CLASS_SCHOOL_KID_M
- .string "ISIAH$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_PRETEND
- .2byte EC_WORD_TO
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_A_LOT
- .2byte -1
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_MOVE2(TRICK)
- .2byte EC_WORD_MOTHER
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_ALLOWANCE
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_MORE
- .4byte gBattleFrontierTrainerMons_Isiah
-
-@ 165
- .4byte FACILITY_CLASS_SCHOOL_KID_M
- .string "GARRETT$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_COMICS
- .2byte EC_WORD_AND
- .2byte EC_WORD_THIS
- .2byte EC_WORD_GAME
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_THIS
- .2byte EC_WORD_MUSIC
- .2byte EC_WORD_IDOL
- .2byte EC_WORD_TOO
-@ loss speech
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_TO
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_MORE
- .4byte gBattleFrontierTrainerMons_Garrett
-
-@ 166
- .4byte FACILITY_CLASS_SCHOOL_KID_F
- .string "HAYLIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WORRY
- .2byte EC_WORD_TOO
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_TO
- .2byte EC_WORD_SLEEP
-@ win speech
- .2byte EC_WORD_A
- .2byte EC_WORD_WIN
- .2byte EC_WORD_GIVES
- .2byte EC_WORD_ME
- .2byte EC_WORD_A
- .2byte EC_MOVE2(CALM_MIND)
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_INSOMNIA
- .2byte EC_WORD_WILL
- .2byte EC_WORD_GET
- .2byte EC_WORD_BAD
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Haylie
-
-@ 167
- .4byte FACILITY_CLASS_SCHOOL_KID_F
- .string "MEGAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_BELIEVE
- .2byte EC_WORD_IN
- .2byte EC_WORD_AN
- .2byte EC_MOVE(AROMATHERAPY)
- .2byte EC_WORD_BATH
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_A
- .2byte EC_WORD_HEALTHY
- .2byte EC_WORD_CLEAR_BODY
- .2byte -1
-@ loss speech
- .2byte EC_WORD_IF
- .2byte EC_WORD_ONLY
- .2byte EC_MOVE(AROMATHERAPY)
- .2byte EC_WORD_WERE
- .2byte EC_WORD_LESS
- .2byte EC_WORD_EXPENSIVE
- .4byte gBattleFrontierTrainerMons_Megan
-
-@ 168
- .4byte FACILITY_CLASS_RICH_BOY
- .string "ISSAC$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_HOBBY
- .2byte EC_WORD_QUES
- .2byte -1
- .2byte -1
- .2byte -1
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_ANY
- .2byte EC_WORD_KIND
- .2byte EC_WORD_OF
- .2byte EC_MOVE2(WATER_SPORT)
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_ANY
- .2byte EC_WORD_KIND
- .2byte EC_WORD_OF
- .2byte EC_MOVE2(MUD_SPORT)
- .4byte gBattleFrontierTrainerMons_Issac
-
-@ 169
- .4byte FACILITY_CLASS_RICH_BOY
- .string "QUINTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SAD
- .2byte EC_WORD_CAUSE
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TOO_WEAK
- .2byte -1
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_TOO_STRONG
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .2byte -1
-@ loss speech
- .2byte EC_WORD_HEY
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_DID
- .2byte EC_WORD_I
- .2byte EC_WORD_DO
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Quinton
-
-@ 170
- .4byte FACILITY_CLASS_LADY
- .string "SALMA$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU_VE
- .2byte EC_WORD_GOT
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_HUSTLE
- .2byte EC_WORD_ON
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WIN
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HUSTLE
- .2byte EC_WORD_ON
- .2byte EC_WORD_OUT
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_GET
- .2byte EC_WORD_HOW
- .2byte EC_WORD_I
- .2byte EC_WORD_LOST
- .4byte gBattleFrontierTrainerMons_Salma
-
-@ 171
- .4byte FACILITY_CLASS_LADY
- .string "ANSLEY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_BORED
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_DANCE
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
-@ win speech
- .2byte EC_WORD_YOU_VE
- .2byte EC_WORD_BORED
- .2byte EC_WORD_ME
- .2byte EC_WORD_SOME
- .2byte EC_WORD_MORE
- .2byte -1
-@ loss speech
- .2byte EC_WORD_TAKE
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE2(FRUSTRATION)
- .2byte EC_WORD_SOME
- .2byte EC_WORD_OTHER
- .2byte EC_WORD_PLACE
- .4byte gBattleFrontierTrainerMons_Ansley
-
-@ 172
- .4byte FACILITY_CLASS_BUG_CATCHER
- .string "HOLDEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_COMMEMORATE
- .2byte EC_WORD_MY
- .2byte EC_WORD_COOLNESS
- .2byte EC_WORD_IN
- .2byte EC_WORD_BATTLE
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ANY
- .2byte EC_WORD_PRAISE
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_SENSE
- .2byte EC_WORD_IS
- .2byte EC_WORD_AMUSING
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Holden
-
-@ 173
- .4byte FACILITY_CLASS_BUG_CATCHER
- .string "LUCA$", 8
-@ pre-battle speech
- .2byte EC_WORD_WE
- .2byte EC_WORD_WILL
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_WORD_COOL
- .2byte EC_WORD_BATTLE
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_IN
- .2byte EC_WORD_A
- .2byte EC_WORD_COOL
- .2byte EC_WORD_WAY
-@ loss speech
- .2byte EC_WORD_HELLO
- .2byte EC_WORD_QUES
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_JUST
- .2byte EC_WORD_A
- .2byte EC_WORD_KID
- .4byte gBattleFrontierTrainerMons_Luca
-
-@ 174
- .4byte FACILITY_CLASS_NINJA_BOY
- .string "JAMISON$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(SECRET_POWER)
- .2byte EC_WORD_IS
- .2byte EC_WORD_OVERWHELMING
- .2byte EC_WORD_TO
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_DID
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SEE
- .2byte EC_WORD_THAT
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_USE
- .2byte EC_MOVE(SMOKESCREEN)
- .2byte EC_WORD_TO
- .2byte EC_WORD_ESCAPE
- .4byte gBattleFrontierTrainerMons_Jamison
-
-@ 175
- .4byte FACILITY_CLASS_NINJA_BOY
- .string "GUNNAR$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_MOVE(CUT)
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_OPPONENT
- .2byte -1
-@ win speech
- .2byte EC_WORD_DON_T
- .2byte EC_MOVE(GRUDGE)
- .2byte EC_WORD_ME
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_LOSS
-@ loss speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_LOSE
- .2byte EC_WORD_THAT
- .2byte EC_MOVE(SCARY_FACE)
- .2byte EC_WORD_OF
- .2byte EC_WORD_YOURS
- .4byte gBattleFrontierTrainerMons_Gunnar
-
-@ 176
- .4byte FACILITY_CLASS_TUBER_M
- .string "CRAIG$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_WAIT
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_TRAIN
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_TRAIN
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_HERE
- .2byte EC_WORD_YET
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_HERE_IT_IS
- .2byte EC_WORD_MY
- .2byte EC_WORD_TRAIN
- .2byte EC_WORD_SEE_YA
- .2byte EC_WORD_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Craig
-
-@ 177
- .4byte FACILITY_CLASS_TUBER_M
- .string "PIERCE$", 8
-@ pre-battle speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_WAS
- .2byte EC_WORD_A
- .2byte EC_MOVE2(HEAT_WAVE)
- .2byte EC_WORD_LAST
- .2byte EC_WORD_WEEK
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_TAKE
- .2byte EC_WORD_A
- .2byte EC_MOVE2(HEAT_WAVE)
- .2byte -1
-@ loss speech
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_IT
- .2byte EC_MOVE(HAIL)
- .2byte EC_WORD_TOO
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Pierce
-
-@ 178
- .4byte FACILITY_CLASS_TUBER_F
- .string "REGINA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_TO
- .2byte EC_WORD_PLAY
- .2byte EC_WORD_IN
- .2byte EC_WORD_WATER
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_REFUSE
- .2byte EC_WORD_TO
- .2byte EC_WORD_COME
- .2byte EC_WORD_OUT
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_NOT
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_IN
- .2byte EC_WORD_WATER
- .4byte gBattleFrontierTrainerMons_Regina
-
-@ 179
- .4byte FACILITY_CLASS_TUBER_F
- .string "ALISON$", 8
-@ pre-battle speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_KINDERGARTEN
- .2byte EC_WORD_MAGAZINE
- .2byte EC_WORD_IS
- .2byte EC_WORD_TOO
- .2byte EC_WORD_MUCH
-@ win speech
- .2byte EC_WORD_HOW
- .2byte EC_WORD_TO
- .2byte EC_WORD_BUG
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_TEACHER
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_A
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_SCHOOL
- .2byte EC_WORD_DIET
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Alison
-
-@ 180
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "HANK$", 8
-@ pre-battle speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_WORD_BUG
- .2byte EC_WORD_EVENT
- .2byte EC_WORD_SOON
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_BUG
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_BUG
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Hank
-
-@ 181
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "EARL$", 8
-@ pre-battle speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_INVINCIBLE
- .2byte EC_WORD_BUG
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_IS
- .2byte EC_WORD_HERE
-@ win speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_INVINCIBLE
- .2byte EC_WORD_BUG
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_AM
- .2byte EC_WORD_I
-@ loss speech
- .2byte EC_WORD_SEE
- .2byte EC_WORD_HOW
- .2byte EC_WORD_FAST
- .2byte EC_WORD_I
- .2byte EC_WORD_RUN_AWAY
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Earl
-
-@ 182
- .4byte FACILITY_CLASS_FISHERMAN
- .string "RAMIRO$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WENT
- .2byte EC_WORD_TO
- .2byte EC_WORD_A
- .2byte EC_WORD_FISHING
- .2byte EC_WORD_SCHOOL
-@ win speech
- .2byte EC_WORD_SERIOUSLY
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_IN
- .2byte EC_WORD_THE
- .2byte EC_WORD_FISHING
- .2byte EC_WORD_HALL_OF_FAME
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO
- .2byte EC_WORD_BACK
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Ramiro
-
-@ 183
- .4byte FACILITY_CLASS_FISHERMAN
- .string "HUNTER$", 8
-@ pre-battle speech
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_ME
- .2byte EC_WORD_A
- .2byte EC_WORD_TOTALLY
- .2byte EC_WORD_COOL
- .2byte EC_MOVE(CROSS_CHOP)
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_TO
- .2byte EC_WORD_DO
- .2byte EC_WORD_A
- .2byte EC_MOVE(CROSS_CHOP)
-@ loss speech
- .2byte EC_WORD_WAS
- .2byte EC_WORD_IT
- .2byte EC_WORD_A
- .2byte EC_WORD_MISTAKE
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Hunter
-
-@ 184
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "AIDEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_WORK
- .2byte EC_WORD_IS
- .2byte EC_WORD_MAKING
- .2byte EC_WORD_ME
- .2byte EC_WORD_HEALTHY
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_HEALTHY
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MORE
- .2byte EC_WORD_HEALTHY
- .2byte EC_WORD_THAN
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Aiden
-
-@ 185
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "XAVIER$", 8
-@ pre-battle speech
- .2byte EC_WORD_HEY_THERE
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_EXCL_EXCL
-@ win speech
- .2byte EC_WORD_GOOD_BYE
- .2byte EC_WORD_AND
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_FUNNY
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WOWEE
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_NO
- .2byte EC_WORD_NO
- .2byte EC_WORD_EXCL_EXCL
- .4byte gBattleFrontierTrainerMons_Xavier
-
-@ 186
- .4byte FACILITY_CLASS_COLLECTOR
- .string "CLINTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_SEE
- .2byte EC_WORD_MY
- .2byte EC_MOVE(HYPNOSIS)
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE2(FURY_SWIPES)
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE(STRENGTH)
- .2byte EC_WORD_YOUNG
- .2byte EC_WORD_TRAINER
-@ loss speech
- .2byte EC_WORD_TCH
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Clinton
-
-@ 187
- .4byte FACILITY_CLASS_COLLECTOR
- .string "JESSE$", 8
-@ pre-battle speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_IS
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_MOTHER
-@ win speech
- .2byte EC_WORD_MOTHER
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BE
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_MY
- .2byte EC_WORD_MOTHER
- .2byte EC_WORD_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Jesse
-
-@ 188
- .4byte FACILITY_CLASS_GUITARIST
- .string "EDUARDO$", 8
-@ pre-battle speech
- .2byte EC_WORD_OUR
- .2byte EC_WORD_MUSIC
- .2byte EC_WORD_WILL
- .2byte EC_WORD_PLAY
- .2byte EC_WORD_ALL
- .2byte EC_WORD_NIGHT
-@ win speech
- .2byte EC_WORD_NIGHTTIME
- .2byte EC_WORD_IS
- .2byte EC_WORD_WHEN
- .2byte EC_WORD_I
- .2byte EC_WORD_PLAY
- .2byte EC_WORD_BEST
-@ loss speech
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_PARTY
- .2byte EC_WORD_UNTIL
- .2byte EC_WORD_THE
- .2byte EC_MOVE(MORNING_SUN)
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Eduardo
-
-@ 189
- .4byte FACILITY_CLASS_GUITARIST
- .string "HAL$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TRENDY
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_I
- .2byte EC_WORD_QUES
- .2byte -1
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_HIP_AND
- .2byte EC_WORD_HAPPENING
- .2byte EC_WORD_OH_YEAH
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ALWAYS
- .2byte EC_WORD_TRENDY
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_VERY
- .2byte EC_WORD_MUCH
- .4byte gBattleFrontierTrainerMons_Hal
-
-@ 190
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "GAGE$", 8
-@ pre-battle speech
- .2byte EC_WORD_HERE_IT_IS
- .2byte EC_WORD_A
- .2byte EC_WORD_FLYING
- .2byte EC_WORD_TYPE
- .2byte EC_WORD_HIDDEN
- .2byte EC_WORD_MOVE
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_FLYING
- .2byte EC_WORD_TYPE
- .2byte EC_WORD_VICTORY
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_IF_I_LOSE
- .2byte EC_WORD_I
- .2byte EC_WORD_JUST
- .2byte EC_MOVE(FLY)
- .2byte EC_WORD_AWAY
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Gage
-
-@ 191
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "ARNOLD$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_WEIRD
- .2byte EC_WORD_FROM
- .2byte EC_WORD_A
- .2byte EC_WORD_DREAM
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE(SCARY_FACE)
- .2byte EC_WORD_WAS
- .2byte EC_WORD_IN
- .2byte EC_WORD_MY
- .2byte EC_WORD_DREAM
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_INCREDIBLE
- .2byte EC_WORD_DREAM
- .2byte EC_WORD_WAS
- .2byte EC_WORD_SO
- .2byte EC_WORD_WEIRD
- .4byte gBattleFrontierTrainerMons_Arnold
-
-@ 192
- .4byte FACILITY_CLASS_SAILOR
- .string "JARRETT$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_DANCE
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_YESTERDAY
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_HOW
- .2byte EC_WORD_I
- .2byte EC_WORD_DANCE
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_APPRECIATE
- .2byte EC_WORD_HOW
- .2byte EC_WORD_I
- .2byte EC_WORD_DANCE
- .4byte gBattleFrontierTrainerMons_Jarrett
-
-@ 193
- .4byte FACILITY_CLASS_SAILOR
- .string "GARETT$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_GIRL
- .2byte EC_WORD_GIVES
- .2byte EC_WORD_ME
- .2byte EC_WORD_A_LITTLE
- .2byte EC_MOVE2(SWEET_KISS)
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_GIRL
- .2byte EC_WORD_FRIEND
- .2byte EC_WORD_IS
- .2byte EC_WORD_MY
- .2byte EC_WORD_TREASURE
-@ loss speech
- .2byte EC_WORD_A
- .2byte EC_WORD_TREASURE
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_ALWAYS
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_MONEY
- .4byte gBattleFrontierTrainerMons_Garett
-
-@ 194
- .4byte FACILITY_CLASS_HIKER
- .string "EMANUEL$", 8
-@ pre-battle speech
- .2byte EC_WORD_SMARTNESS
- .2byte EC_WORD_ALONE
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WIN
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT_VERY
- .2byte EC_WORD_SMART
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
-@ loss speech
- .2byte EC_WORD_HOW
- .2byte EC_WORD_DID
- .2byte EC_WORD_YOU
- .2byte EC_MOVE2(FAKE_OUT)
- .2byte EC_WORD_ME
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Emanuel
-
-@ 195
- .4byte FACILITY_CLASS_HIKER
- .string "GUSTAVO$", 8
-@ pre-battle speech
- .2byte EC_MOVE(CHARGE)
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_MOVE(CHARGE)
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_SURRENDER
- .2byte EC_WORD_QUES
- .2byte -1
- .2byte EC_WORD_SO
- .2byte EC_WORD_SOON
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_ME
- .2byte EC_WORD_SURRENDER
- .2byte EC_WORD_YET
- .4byte gBattleFrontierTrainerMons_Gustavo
-
-@ 196
- .4byte FACILITY_CLASS_KINDLER
- .string "KAMERON$", 8
-@ pre-battle speech
- .2byte EC_WORD_TAKE_THAT
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_MY
- .2byte EC_WORD_FIERY
- .2byte EC_MOVE2(TRICK)
-@ win speech
- .2byte EC_WORD_DID
- .2byte EC_WORD_MY
- .2byte EC_WORD_FIERY
- .2byte EC_MOVE2(TRICK)
- .2byte EC_MOVE(ASTONISH)
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_FALL
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(TRICK)
- .4byte gBattleFrontierTrainerMons_Kameron
-
-@ 197
- .4byte FACILITY_CLASS_KINDLER
- .string "ALFREDO$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_FIERY
- .2byte EC_WORD_GOURMET
- .2byte EC_WORD_AM
- .2byte EC_WORD_I
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_GOURMET
- .2byte EC_WORD_VICTORY
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_A
- .2byte EC_WORD_DISASTER
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Alfredo
-
-@ 198
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "RUBEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_WAIT
- .2byte EC_WORD_TO
- .2byte EC_WORD_GET
- .2byte EC_WORD_GOING
-@ win speech
- .2byte EC_WORD_GET
- .2byte EC_WORD_GOING
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_GOOD_BYE
-@ loss speech
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_GOT
- .2byte EC_WORD_TO
- .2byte EC_WORD_GET
- .2byte EC_WORD_GOING
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Ruben
-
-@ 199
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "LAMAR$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_MOVE2(PRESENT)
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .2byte EC_WORD_QUES
- .2byte -1
-@ win speech
- .2byte EC_WORD_MMM
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_QUITE
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_GAME
- .2byte EC_WORD_IS_IT_QUES
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Lamar
-
-@ 200
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "JAXON$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_SHELL_ARMOR
- .2byte EC_WORD_IS
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_FATHER
- .2byte EC_WORD_AND
- .2byte EC_WORD_MOTHER
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_ACCEPT
-@ loss speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_A
- .2byte EC_WORD_SHELL_ARMOR
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Jaxon
-
-@ 201
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "LOGAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_IF_I_LOSE
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_SCHOOL
-@ win speech
- .2byte EC_WORD_ME
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_QUES
- .2byte EC_WORD_NOT_VERY
- .2byte EC_WORD_LIKELY_TO
- .2byte EC_WORD_SEE
-@ loss speech
- .2byte EC_WORD_NO
- .2byte EC_WORD_THANKS
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_SLEEP
- .4byte gBattleFrontierTrainerMons_Logan
-
-@ 202
- .4byte FACILITY_CLASS_LASS
- .string "EMILEE$", 8
-@ pre-battle speech
- .2byte EC_WORD_IS
- .2byte EC_WORD_THIS
- .2byte EC_WORD_KIND
- .2byte EC_WORD_OF
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_OK_QUES
-@ win speech
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_GO
- .2byte EC_WORD_FOR
- .2byte EC_WORD_AN
- .2byte EC_MOVE(ICY_WIND)
- .2byte EC_MOVE2(SURF)
-@ loss speech
- .2byte EC_WORD_HOW
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_A
- .2byte EC_MOVE(ROCK_SLIDE)
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Emilee
-
-@ 203
- .4byte FACILITY_CLASS_LASS
- .string "JOSIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_CONTEST
- .2byte EC_WORD_IS
- .2byte EC_WORD_PRETTY
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_MODE
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_THINGS
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_TOTALLY
- .2byte EC_WORD_LACKING
- .2byte EC_WORD_IN
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_SENSE
- .4byte gBattleFrontierTrainerMons_Josie
-
-@ 204
- .4byte FACILITY_CLASS_CAMPER
- .string "ARMANDO$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_MORE
- .2byte EC_WORD_GRASS
- .2byte EC_WORD_TYPE
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_TRADE
- .2byte EC_WORD_ME
- .2byte EC_WORD_A
- .2byte EC_WORD_GRASS
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_PLEASE
-@ loss speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_ENOUGH
- .2byte EC_WORD_GRASS
- .2byte EC_WORD_TYPE
- .2byte EC_WORD_POKEMON
- .4byte gBattleFrontierTrainerMons_Armando
-
-@ 205
- .4byte FACILITY_CLASS_CAMPER
- .string "SKYLER$", 8
-@ pre-battle speech
- .2byte EC_MOVE2(INGRAIN)
- .2byte EC_WORD_IS
- .2byte EC_WORD_MY
- .2byte EC_WORD_CHOICE
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_MOVE
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_MOVE
- .2byte EC_WORD_ME
- .2byte EC_WORD_NOW
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_MOVE(CUT)
- .2byte EC_WORD_ME
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Skyler
-
-@ 206
- .4byte FACILITY_CLASS_PICNICKER
- .string "RUTH$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_THIS
- .2byte EC_WORD_BATTLE
-@ win speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_TOO
- .2byte EC_WORD_EASY
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_STOP
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_THIS
- .4byte gBattleFrontierTrainerMons_Ruth
-
-@ 207
- .4byte FACILITY_CLASS_PICNICKER
- .string "MELODY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_MOVE2(WISH)
- .2byte EC_WORD_SUNDAY
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_MOVE2(SUNNY_DAY)
-@ win speech
- .2byte EC_WORD_SUNDAY
- .2byte EC_WORD_SEEMS
- .2byte EC_WORD_FOREVER
- .2byte EC_WORD_TO
- .2byte EC_WORD_COME
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_FORECAST
- .2byte EC_WORD_SAYS
- .2byte EC_WORD_IT
- .2byte EC_WORD_WILL
- .2byte EC_MOVE(HAIL)
- .4byte gBattleFrontierTrainerMons_Melody
-
-@ 208
- .4byte FACILITY_CLASS_SWIMMER_M
- .string "PEDRO$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_SWIFT_SWIM
- .2byte EC_WORD_WILL
- .2byte EC_WORD_DO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_GOOD
-@ win speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_HOW
- .2byte EC_WORD_I
- .2byte EC_WORD_SINK
- .2byte EC_WORD_AN
- .2byte EC_WORD_OPPONENT
-@ loss speech
- .2byte EC_WORD_UH_OH
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_A
- .2byte EC_MOVE(WHIRLPOOL)
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Pedro
-
-@ 209
- .4byte FACILITY_CLASS_SWIMMER_M
- .string "ERICK$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_MOVE2(TACKLE)
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_RUN_AWAY
- .2byte EC_WORD_YOU
- .2byte EC_WORD_LOSER
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_THINK
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WOULD
- .2byte EC_MOVE(COUNTER)
- .4byte gBattleFrontierTrainerMons_Erick
-
-@ 210
- .4byte FACILITY_CLASS_SWIMMER_F
- .string "ELAINE$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_HEROINE
- .2byte EC_WORD_ADVENTURE
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_GOING
- .2byte EC_WORD_WELL
-@ win speech
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_A
- .2byte EC_WORD_HEROINE
- .4byte gBattleFrontierTrainerMons_Elaine
-
-@ 211
- .4byte FACILITY_CLASS_SWIMMER_F
- .string "JOYCE$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_ME
- .2byte EC_WORD_GO
- .2byte EC_WORD_AHAHA
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_LALALA
- .2byte EC_WORD_NO
- .2byte EC_WORD_LOSING
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_LALALA
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte EC_WORD_HUH_QUES
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Joyce
-
-@ 212
- .4byte FACILITY_CLASS_POKEFAN_M
- .string "TODD$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_A
- .2byte EC_WORD_LIGHTNINGROD
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_POWER
-@ win speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_ALL
- .2byte EC_WORD_YOU
- .2byte EC_WORD_COULD
- .2byte EC_MOVE(ABSORB)
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_MOVE2(REFLECT)
- .2byte EC_WORD_MY
- .2byte EC_WORD_POWER
- .2byte EC_WORD_BACK
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Todd
-
-@ 213
- .4byte FACILITY_CLASS_POKEFAN_M
- .string "GAVIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_MOVE(BIDE)
- .2byte EC_WORD_MY
- .2byte EC_WORD_TIME
- .2byte -1
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_OVER
- .2byte EC_WORD_SO
- .2byte EC_WORD_SOON
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_MISTAKE
- .2byte EC_WORD_WAS
- .2byte EC_WORD_TOO
- .2byte EC_WORD_EXPENSIVE
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Gavin
-
-@ 214
- .4byte FACILITY_CLASS_POKEFAN_F
- .string "MALORY$", 8
-@ pre-battle speech
- .2byte EC_WORD_PROMISE
- .2byte EC_WORD_TO
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_ME
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_GIGGLE
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_SO
- .2byte EC_WORD_MUCH
-@ loss speech
- .2byte EC_WORD_TCH
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_VERY
- .2byte EC_WORD_NICE
- .4byte gBattleFrontierTrainerMons_Malory
-
-@ 215
- .4byte FACILITY_CLASS_POKEFAN_F
- .string "ESTHER$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_A
- .2byte EC_WORD_NICE
- .2byte EC_MOVE2(PRESENT)
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_GET
- .2byte EC_WORD_ME
- .2byte EC_WORD_A
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_GAME
-@ loss speech
- .2byte EC_WORD_MESSAGE
- .2byte EC_WORD_CARDS
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_A
- .2byte EC_WORD_WEAK
- .2byte EC_MOVE2(PRESENT)
- .4byte gBattleFrontierTrainerMons_Esther
-
-@ 216
- .4byte FACILITY_CLASS_PKMN_BREEDER_M
- .string "OSCAR$", 8
-@ pre-battle speech
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_SEE
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POWER
- .2byte EC_WORD_IN
- .2byte EC_WORD_FULL
-@ win speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_NOT
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_FULL
- .2byte EC_WORD_POWER
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_NOT
- .2byte EC_WORD_FUNNY
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_TOO_STRONG
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Oscar
-
-@ 217
- .4byte FACILITY_CLASS_PKMN_BREEDER_M
- .string "WILSON$", 8
-@ pre-battle speech
- .2byte EC_WORD_WORK
- .2byte EC_WORD_IS
- .2byte EC_WORD_MAKING
- .2byte EC_WORD_ME
- .2byte EC_WORD_AN
- .2byte EC_WORD_EARLY_BIRD
-@ win speech
- .2byte EC_WORD_ALL
- .2byte EC_WORD_WORK
- .2byte EC_WORD_AND
- .2byte EC_WORD_NO
- .2byte EC_WORD_PLAY
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_MOVE(ENDURE)
- .2byte EC_WORD_IS
- .2byte EC_WORD_ALL
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN
- .2byte EC_WORD_DO
- .4byte gBattleFrontierTrainerMons_Wilson
-
-@ 218
- .4byte FACILITY_CLASS_POKEMON_BREEDER_F
- .string "CLARE$", 8
-@ pre-battle speech
- .2byte EC_WORD_YAY
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_A
- .2byte EC_WORD_TOUGH
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_AWW
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_A
- .2byte EC_WORD_WIMPY
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_COOL
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_A
- .2byte EC_WORD_GENIUS
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Clare
-
-@ 219
- .4byte FACILITY_CLASS_POKEMON_BREEDER_F
- .string "TESS$", 8
-@ pre-battle speech
- .2byte EC_WORD_WANT
- .2byte EC_WORD_SOME
- .2byte EC_POKEMON(GULPIN)
- .2byte EC_WORD_DESIGN
- .2byte EC_WORD_SWEETS
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_THEY_RE
- .2byte EC_WORD_A
- .2byte EC_WORD_SECRET
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_GOURMET
- .2byte EC_WORD_ITEM
-@ loss speech
- .2byte EC_WORD_THEY_RE
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_REFRESHING
- .2byte EC_WORD_TOO
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Tess
-
-@ 220
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "LEON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_BETTER
- .2byte EC_WORD_THAN
- .2byte EC_WORD_ANY
- .2byte EC_WORD_OTHER
- .2byte EC_WORD_TRAINER
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DID
- .2byte EC_WORD_IT
- .2byte EC_MOVE2(JUMP_KICK)
- .2byte EC_WORD_FOR
- .2byte EC_WORD_JOY
-@ loss speech
- .2byte EC_WORD_BACK
- .2byte EC_WORD_HOME
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_GO
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Leon
-
-@ 221
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "ALONZO$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_NOT
- .2byte EC_WORD_LOST
- .2byte EC_WORD_ONCE
- .2byte EC_WORD_YET
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_SAD
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_BECOMES
- .2byte EC_WORD_YOU
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_BELIEVE
- .2byte EC_WORD_THIS
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Alonzo
-
-@ 222
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "VINCE$", 8
-@ pre-battle speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_TOP
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_ME
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_TOP
- .2byte EC_WORD_RANK
- .2byte EC_WORD_BELONGS_TO
- .2byte EC_WORD_ME
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_APPEAL
- .2byte EC_WORD_THIS
- .2byte EC_MOVE(OUTRAGE)
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Vince
-
-@ 223
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "BRYON$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(BARRAGE)
- .2byte EC_WORD_WILL
- .2byte EC_MOVE2(SLAM)
- .2byte EC_WORD_YOU
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_COUNT_ON
- .2byte EC_WORD_ANY
- .2byte EC_WORD_LESS
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_JUST
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_GET
- .2byte EC_WORD_IT
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Bryon
-
-@ 224
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "AVA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_WORD_TREASURE
- .2byte EC_WORD_OF
- .2byte EC_WORD_THIS
- .2byte EC_WORD_WORLD
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_WORLD
- .2byte EC_WORD_IS
- .2byte EC_WORD_FULL
- .2byte EC_WORD_OF
- .2byte EC_WORD_WONDER
-@ loss speech
- .2byte EC_WORD_WHY
- .2byte EC_WORD_ARE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SO
- .2byte EC_WORD_TERRIBLE
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Ava
-
-@ 225
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "MIRIAM$", 8
-@ pre-battle speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_A
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_WITH
- .2byte EC_WORD_A
- .2byte EC_MOVE(SCARY_FACE)
-@ win speech
- .2byte EC_WORD_AHAHA
- .2byte EC_WORD_YOU
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_AIYEEH
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_YOU
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_ARE
- .2byte EC_WORD_SCARY
- .4byte gBattleFrontierTrainerMons_Miriam
-
-@ 226
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "CARRIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_YOU
- .2byte EC_WORD_GUTSY
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_ALL
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_GUTS
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_NO
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_MOVE(SELF_DESTRUCT)
- .2byte EC_WORD_MODE
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Carrie
-
-@ 227
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "GILLIAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SEEK
- .2byte EC_WORD_A
- .2byte EC_WORD_TRULY
- .2byte EC_WORD_GREAT
- .2byte EC_WORD_BATTLE
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_A_LOT
- .2byte EC_WORD_BETTER
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_A_LITTLE
- .2byte EC_WORD_TOO
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_TO
- .2byte EC_WORD_TAKE
- .4byte gBattleFrontierTrainerMons_Gillian2
-
-@ 228
- .4byte FACILITY_CLASS_PKMN_RANGER_M
- .string "TYLER$", 8
-@ pre-battle speech
- .2byte EC_WORD_YO
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_GO
- .2byte EC_WORD_EXCL_EXCL
-@ win speech
- .2byte EC_WORD_YO
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_YO
-@ loss speech
- .2byte EC_WORD_YO
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_LOST
- .2byte EC_WORD_YO
- .4byte gBattleFrontierTrainerMons_Tyler
-
-@ 229
- .4byte FACILITY_CLASS_PKMN_RANGER_M
- .string "CHAZ$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_TOO
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_POWER
-@ win speech
- .2byte EC_WORD_THEY
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_MORE
- .2byte EC_WORD_POWER
- .2byte EC_WORD_NOW
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YEAH
- .2byte EC_MOVE2(TAKE_DOWN)
- .2byte EC_WORD_THEIR
- .2byte EC_WORD_POWER
- .2byte EC_WORD_A_TINY_BIT
- .2byte EC_WORD_PLEASE
- .4byte gBattleFrontierTrainerMons_Chaz
-
-@ 230
- .4byte FACILITY_CLASS_PKMN_RANGER_M
- .string "NELSON$", 8
-@ pre-battle speech
- .2byte EC_WORD_WELL_THEN
- .2byte EC_WORD_WILL
- .2byte EC_WORD_THIS
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_WORK
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SEE
- .2byte EC_WORD_THAT
- .2byte EC_WORD_IT
- .2byte EC_WORD_WAS
- .2byte EC_WORD_TOO_STRONG
-@ loss speech
- .2byte EC_WORD_IT
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_MATCH_UP
- .2byte EC_WORD_WELL
- .2byte EC_WORD_I
- .2byte EC_WORD_THINK
- .4byte gBattleFrontierTrainerMons_Nelson
-
-@ 231
- .4byte FACILITY_CLASS_PKMN_RANGER_F
- .string "SHANIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_ALL
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ABSOLUTELY
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_ME
-@ win speech
- .2byte EC_WORD_HAPPINESS
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_WITH
- .2byte EC_WORD_CUTE_CHARM
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_SO
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_TO
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_POKEMON
- .4byte gBattleFrontierTrainerMons_Shania
-
-@ 232
- .4byte FACILITY_CLASS_PKMN_RANGER_F
- .string "STELLA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_SEE
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_WELL
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_THEY
- .2byte EC_WORD_BORING
- .2byte EC_WORD_QUES
- .2byte EC_WORD_AHAHA
-@ loss speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_SOMETHING
- .2byte EC_WORD_ELSE
- .2byte EC_WORD_ALL_RIGHT
- .4byte gBattleFrontierTrainerMons_Stella
-
-@ 233
- .4byte FACILITY_CLASS_PKMN_RANGER_F
- .string "DORINE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_YOUNG
- .2byte EC_WORD_AND
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_I
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_WORKING
- .2byte EC_WORD_OUT
- .2byte EC_WORD_AT
- .2byte EC_WORD_ALL
- .4byte gBattleFrontierTrainerMons_Dorine
-
-@ 234
- .4byte FACILITY_CLASS_DRAGON_TAMER
- .string "MADDOX$", 8
-@ pre-battle speech
- .2byte EC_WORD_DRAGON
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_MY
- .2byte EC_WORD_NO_1
- .2byte EC_WORD_CHOICE
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_NO
- .2byte EC_WORD_SECRET
- .2byte EC_WORD_DRAGON
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_WIN
-@ loss speech
- .2byte EC_WORD_DRAGON
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_NOT
- .2byte EC_WORD_LOSE
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Maddox
-
-@ 235
- .4byte FACILITY_CLASS_DRAGON_TAMER
- .string "DAVIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_HEAR
- .2byte EC_WORD_YOU
- .2byte EC_MOVE2(ROAR)
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_WROOOAAR_EXCL
- .2byte -1
- .2byte -1
- .2byte EC_WORD_VICTORY
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WROOOAAR_EXCL
- .2byte -1
- .2byte -1
- .2byte EC_WORD_WHY
- .2byte EC_WORD_QUES_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Davin
-
-@ 236
- .4byte FACILITY_CLASS_DRAGON_TAMER
- .string "TREVON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_LIVING
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_WITH
- .2byte EC_WORD_DRAGON
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_WAY
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_LIVING
- .2byte EC_WORD_IS
- .2byte EC_WORD_PERFECT
-@ loss speech
- .2byte EC_WORD_YOU_VE
- .2byte EC_WORD_DESTROYED
- .2byte EC_WORD_THE
- .2byte EC_WORD_WAY
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_LIVING
- .4byte gBattleFrontierTrainerMons_Trevon
-
-@ 237
- .4byte FACILITY_CLASS_BLACK_BELT
- .string "MATEO$", 8
-@ pre-battle speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_BE
- .2byte EC_WORD_OVER
- .2byte EC_WORD_SOON
- .2byte EC_WORD_ENOUGH
-@ win speech
- .2byte EC_WORD_WELL
- .2byte EC_WORD_THAT
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_TAKE
- .2byte EC_WORD_VERY
- .2byte EC_WORD_MUCH
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_LOSE
- .2byte EC_WORD_SO
- .2byte EC_WORD_SOON
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Mateo
-
-@ 238
- .4byte FACILITY_CLASS_BLACK_BELT
- .string "BRET$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_ROCK_SOLID
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_THE
- .2byte EC_WORD_BEST
-@ win speech
- .2byte EC_WORD_TOUGHNESS
- .2byte EC_WORD_IS
- .2byte EC_WORD_THE
- .2byte EC_WORD_WAY
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ALSO
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_WORD_PLUSH_DOLL
- .2byte EC_WORD_COLLECTION
- .4byte gBattleFrontierTrainerMons_Bret
-
-@ 239
- .4byte FACILITY_CLASS_BLACK_BELT
- .string "RAUL$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_REJECT
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_WEAK
- .2byte EC_WORD_TRAINER
- .2byte -1
-@ win speech
- .2byte EC_WORD_HUMPH
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_ANOTHER
- .2byte EC_WORD_WEAK
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_IS
- .2byte EC_WORD_NOTHING
- .2byte EC_WORD_WEAK
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_YOU
- .4byte gBattleFrontierTrainerMons_Raul
-
-@ 240
- .4byte FACILITY_CLASS_BATTLE_GIRL
- .string "KAY$", 8
-@ pre-battle speech
- .2byte EC_WORD_AND
- .2byte EC_WORD_YET
- .2byte EC_WORD_ANOTHER
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_QUES
- .2byte -1
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TIRED
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_OVER
- .2byte EC_WORD_AT
- .2byte EC_WORD_LAST
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Kay
-
-@ 241
- .4byte FACILITY_CLASS_BATTLE_GIRL
- .string "ELENA$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_GIRL
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_ME
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_A
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_GIRL
- .2byte EC_WORD_AWESOME
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_A
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_GIRL
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Elena
-
-@ 242
- .4byte FACILITY_CLASS_BATTLE_GIRL
- .string "ALANA$", 8
-@ pre-battle speech
- .2byte EC_WORD_EAT
- .2byte EC_WORD_MY
- .2byte EC_WORD_INVINCIBLE
- .2byte EC_WORD_ATTACK
- .2byte EC_WORD_YOU
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_TO
- .2byte EC_WORD_LEARN
- .2byte -1
-@ loss speech
- .2byte EC_WORD_SO
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_INVINCIBLE
- .2byte EC_WORD_ATTACK
- .4byte gBattleFrontierTrainerMons_Alana
-
-@ 243
- .4byte FACILITY_CLASS_EXPERT_M
- .string "ALEXAS$", 8
-@ pre-battle speech
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_TO
- .2byte EC_WORD_MEET_YOU
- .2byte EC_WORD_YOUNG
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_WAHAHAHA
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_GIVE
- .2byte EC_WORD_IT
- .2byte EC_WORD_UP
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_ARE
- .2byte EC_WORD_A
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_KID
- .4byte gBattleFrontierTrainerMons_Alexas
-
-@ 244
- .4byte FACILITY_CLASS_EXPERT_M
- .string "WESTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_PLAY
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_ALL_RIGHT
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_FAR
- .2byte EC_WORD_TOO
- .2byte EC_WORD_EASY
- .2byte EC_WORD_TO
- .2byte EC_WORD_ATTACK
-@ loss speech
- .2byte EC_WORD_WELL
- .2byte EC_WORD_WELL
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_I
- .2byte EC_WORD_SURRENDER
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Weston
-
-@ 245
- .4byte FACILITY_CLASS_EXPERT_M
- .string "JASPER$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_OLD
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SKILLED
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_SKILLED
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SHOCKED
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_I
- .2byte EC_WORD_GO
- .4byte gBattleFrontierTrainerMons_Jasper
-
-@ 246
- .4byte FACILITY_CLASS_EXPERT_F
- .string "NADIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_BEAT
- .2byte EC_WORD_ME
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_HAH
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_BEAT
- .2byte EC_WORD_YOU
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_MOVE2(BEAT_UP)
- .2byte EC_WORD_AND
- .2byte EC_WORD_DOWNCAST
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Nadia
-
-@ 247
- .4byte FACILITY_CLASS_EXPERT_F
- .string "MIRANDA$", 8
-@ pre-battle speech
- .2byte EC_WORD_WELL
- .2byte EC_WORD_WELL
- .2byte -1
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_START
- .2byte -1
-@ win speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_QUES
- .2byte EC_WORD_DONE
- .2byte EC_WORD_SO
- .2byte EC_WORD_SOON
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_WELL
- .2byte EC_WORD_I
- .2byte EC_WORD_SEE
- .2byte EC_WORD_THAT
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TOO_WEAK
- .4byte gBattleFrontierTrainerMons_Miranda
-
-@ 248
- .4byte FACILITY_CLASS_EXPERT_F
- .string "EMMA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_BEEN
- .2byte EC_WORD_HEARING
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_YOU
- .2byte -1
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_THINK
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_MISHEARD
- .2byte EC_WORD_THINGS
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_BEEN
- .2byte EC_WORD_HEARING
- .2byte EC_WORD_IS
- .2byte EC_WORD_RIGHT
- .4byte gBattleFrontierTrainerMons_Emma
-
-@ 249
- .4byte FACILITY_CLASS_PSYCHIC_M
- .string "ROLANDO$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_WORD_SUPER
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_HERO
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_WAS
- .2byte EC_WORD_THAT
- .2byte EC_WORD_ENOUGH
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_NOT
- .2byte EC_WORD_BEAT
- .2byte EC_WORD_A
- .2byte EC_WORD_HERO
- .4byte gBattleFrontierTrainerMons_Rolando
-
-@ 250
- .4byte FACILITY_CLASS_PSYCHIC_M
- .string "STANLY$", 8
-@ pre-battle speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_BE
- .2byte EC_WORD_AN
- .2byte EC_WORD_EASY
- .2byte EC_WORD_MATCH
-@ win speech
- .2byte EC_WORD_IT
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_WAS
- .2byte EC_WORD_EASY
- .2byte -1
- .2byte -1
-@ loss speech
- .2byte EC_WORD_ARE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_NOW
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Stanly
-
-@ 251
- .4byte FACILITY_CLASS_PSYCHIC_M
- .string "DARIO$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(FORESIGHT)
- .2byte EC_WORD_SAYS
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_WIN
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(FORESIGHT)
- .2byte EC_WORD_HAS
- .2byte EC_WORD_BEEN
- .2byte EC_WORD_PERFECT
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_SEE
- .2byte EC_WORD_THIS
- .2byte EC_MOVE(REVERSAL)
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Dario
-
-@ 252
- .4byte FACILITY_CLASS_PSYCHIC_F
- .string "KARLEE$", 8
-@ pre-battle speech
- .2byte EC_WORD_SOMETHING
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_WILL
- .2byte EC_WORD_COME
- .2byte EC_WORD_OF
- .2byte EC_WORD_THIS
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte EC_WORD_FANTASTIC
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_THAT
- .2byte EC_WORD_SOMETHING
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_WENT
- .2byte EC_WORD_TO
- .2byte EC_WORD_YOU
- .4byte gBattleFrontierTrainerMons_Karlee
-
-@ 253
- .4byte FACILITY_CLASS_PSYCHIC_F
- .string "JAYLIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_HAS
- .2byte EC_WORD_BEEN
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_MAKING
- .2byte EC_WORD_ME
- .2byte EC_MOVE(YAWN)
- .2byte EC_WORD_THAT
- .2byte EC_WORD_BATTLE
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SLEPT
- .2byte EC_WORD_AND
- .2byte EC_WORD_SO
- .2byte EC_WORD_I
- .2byte EC_WORD_LOST
- .4byte gBattleFrontierTrainerMons_Jaylin
-
-@ 254
- .4byte FACILITY_CLASS_PSYCHIC_F
- .string "INGRID$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_A
- .2byte EC_WORD_VERY
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_TRAINER
-@ win speech
- .2byte EC_WORD_WASN_T
- .2byte EC_WORD_THAT
- .2byte EC_WORD_A
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_MATCH
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LOST
- .2byte EC_WORD_CAUSE
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Ingrid
-
-@ 255
- .4byte FACILITY_CLASS_HEX_MANIAC
- .string "DELILAH$", 8
-@ pre-battle speech
- .2byte EC_WORD_DON_T
- .2byte EC_MOVE(GRUDGE)
- .2byte EC_WORD_ME
- .2byte EC_WORD_IF_I_WIN
- .2byte EC_WORD_OK_QUES
- .2byte -1
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_TO
- .2byte EC_WORD_SEE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_ANGRY
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_MOVE(GRUDGE)
- .2byte EC_WORD_WITH
- .2byte EC_WORD_YOU
- .4byte gBattleFrontierTrainerMons_Delilah
-
-@ 256
- .4byte FACILITY_CLASS_HEX_MANIAC
- .string "CARLY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_SCATTER
- .2byte EC_WORD_SOME
- .2byte EC_MOVE2(POISON_POWDER)
- .2byte EC_WORD_ABOUT
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_HOW
- .2byte EC_WORD_MY
- .2byte EC_WORD_STRATEGY
- .2byte EC_WORD_WORKS
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_AND
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .4byte gBattleFrontierTrainerMons_Carly
-
-@ 257
- .4byte FACILITY_CLASS_HEX_MANIAC
- .string "LEXIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_SEE
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_WASN_T
- .2byte EC_WORD_THAT
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_EH_QUES
- .2byte -1
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MORE
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_THAN
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .4byte gBattleFrontierTrainerMons_Lexie
-
-@ 258
- .4byte FACILITY_CLASS_POKEMANIAC
- .string "MILLER$", 8
-@ pre-battle speech
- .2byte EC_WORD_HELLO
- .2byte EC_WORD_QUES
- .2byte -1
- .2byte EC_WORD_HELLO
- .2byte EC_WORD_QUES_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_HELLO
- .2byte EC_WORD_MOTHER
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_PHONE
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_WORKING
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Miller
-
-@ 259
- .4byte FACILITY_CLASS_POKEMANIAC
- .string "MARV$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN
- .2byte EC_WORD_LOSE
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE(SWAGGER)
- .2byte EC_WORD_NOW
-@ win speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_IS
- .2byte EC_WORD_NO
- .2byte EC_MOVE(SWAGGER)
- .2byte EC_WORD_LEFT
- .2byte EC_WORD_EH_QUES
-@ loss speech
- .2byte EC_WORD_GO
- .2byte EC_WORD_ON
- .2byte EC_MOVE(SWAGGER)
- .2byte EC_WORD_ALL
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WANT
- .4byte gBattleFrontierTrainerMons_Marv
-
-@ 260
- .4byte FACILITY_CLASS_POKEMANIAC
- .string "LAYTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TOTALLY
- .2byte EC_WORD_COOL
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_UP
- .2byte EC_WORD_TO
- .2byte EC_WORD_ME
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_COOL
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_NO
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Layton
-
-@ 261
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "BROOKS$", 8
-@ pre-battle speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_WORD_HIGH
- .2byte EC_WORD_LEVEL
- .2byte EC_WORD_BATTLE
-@ win speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_HIGH
- .2byte EC_WORD_LEVEL
- .2byte EC_WORD_AND
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_TOO
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_TOO
- .2byte EC_WORD_HIGH
- .2byte EC_WORD_IN
- .2byte EC_WORD_LEVEL
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Brooks
-
-@ 262
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "GREGORY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_THAT
- .2byte EC_WORD_OLD
- .2byte EC_WORD_YET
- .2byte -1
-@ win speech
- .2byte EC_WORD_WHO
- .2byte EC_WORD_SAYS
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_TOO
- .2byte EC_WORD_OLD
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_NOT
- .2byte EC_WORD_THAT
- .2byte EC_WORD_OLD
- .4byte gBattleFrontierTrainerMons_Gregory
-
-@ 263
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "REESE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_A
- .2byte EC_WORD_COUPLE
- .2byte EC_WORD_THINGS
- .2byte -1
- .2byte -1
-@ win speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_DIET
- .2byte EC_WORD_PLAY
- .2byte EC_WORD_SPORTS
- .2byte EC_WORD_INSTEAD
- .2byte -1
-@ loss speech
- .2byte EC_WORD_INSTEAD
- .2byte EC_WORD_OF
- .2byte EC_WORD_TELEVISION
- .2byte EC_WORD_GET
- .2byte EC_WORD_A
- .2byte EC_WORD_BOOK
- .4byte gBattleFrontierTrainerMons_Reese
-
-@ 264
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_M
- .string "MASON$", 8
-@ pre-battle speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_THIS
- .2byte EC_WORD_SCARY
- .2byte -1
-@ win speech
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_NOW
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_DISAPPOINTED
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Mason
-
-@ 265
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_M
- .string "TOBY$", 8
-@ pre-battle speech
- .2byte EC_WORD_LISTEN
- .2byte EC_WORD_UP
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_ALWAYS
- .2byte EC_WORD_WIN
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_A
- .2byte EC_WORD_GENIUS
- .2byte EC_WORD_OR
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN
- .2byte EC_WORD_BEAT
- .2byte EC_WORD_YOU
- .2byte EC_WORD_AT
- .2byte EC_WORD_SMARTNESS
- .4byte gBattleFrontierTrainerMons_Toby
-
-@ 266
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_F
- .string "DOROTHY$", 8
-@ pre-battle speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_SPORTS
- .2byte EC_WORD_WORLD
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_ACCEPT
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_THAT
- .2byte EC_WORD_WIN
- .2byte EC_WORD_WAS
- .2byte EC_WORD_REFRESHING
-@ loss speech
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_THAT
- .2byte EC_WORD_LOSS
- .2byte EC_WORD_WAS
- .2byte EC_WORD_REFRESHING
- .4byte gBattleFrontierTrainerMons_Dorothy
-
-@ 267
- .4byte FACILITY_CLASS_RUNNING_TRIATHLETE_F
- .string "PIPER$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_YOU
- .2byte EC_WORD_NEED
- .2byte EC_WORD_A
- .2byte EC_WORD_SPEED_BOOST
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_MORE
- .2byte EC_WORD_GUTS
-@ loss speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_YOU
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Piper
-
-@ 268
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_M
- .string "FINN$", 8
-@ pre-battle speech
- .2byte EC_WORD_NOT
- .2byte EC_WORD_ANOTHER
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
-@ win speech
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_THIS
- .2byte EC_WORD_EVER
- .2byte EC_WORD_END
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_FINALLY
- .2byte EC_WORD_GET
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(REST)
- .2byte EC_WORD_A_LITTLE
- .4byte gBattleFrontierTrainerMons_Finn
-
-@ 269
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_M
- .string "SAMIR$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_MOVE2(DIVE)
- .2byte EC_WORD_BELOW
- .2byte EC_WORD_THE
- .2byte EC_MOVE2(SURF)
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_YAHOO
- .2byte EC_WORD_TAKE
- .2byte EC_WORD_A
- .2byte EC_MOVE2(DIVE)
- .2byte EC_WORD_YOU
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_SINK
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Samir
-
-@ 270
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_F
- .string "FIONA$", 8
-@ pre-battle speech
- .2byte EC_WORD_DID
- .2byte EC_WORD_YOU
- .2byte EC_WORD_LIMBER
- .2byte EC_WORD_UP
- .2byte EC_WORD_BEFORE
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_BE
- .2byte EC_WORD_MORE
- .2byte EC_WORD_READY
-@ loss speech
- .2byte EC_WORD_BEING
- .2byte EC_WORD_LIMBER
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_WORK
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .4byte gBattleFrontierTrainerMons_Fiona
-
-@ 271
- .4byte FACILITY_CLASS_SWIMMING_TRIATHLETE_F
- .string "GLORIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_TO
- .2byte EC_WORD_ATTACK
- .2byte EC_WORD_WITH
- .2byte EC_WORD_SUCTION_CUPS
-@ win speech
- .2byte EC_WORD_GIGGLE
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_OVER
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_GET
- .2byte EC_WORD_HOW
- .2byte EC_WORD_SUCTION_CUPS
- .2byte EC_WORD_WORK
- .4byte gBattleFrontierTrainerMons_Gloria
-
-@ 272
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_M
- .string "NICO$", 8
-@ pre-battle speech
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_A
- .2byte EC_MOVE(SONIC_BOOM)
- .2byte EC_WORD_I_VE_ARRIVED
- .2byte -1
- .2byte -1
-@ win speech
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_TO
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SO
- .2byte EC_WORD_DOWNCAST
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_WITH
- .2byte EC_WORD_A
- .2byte EC_MOVE2(SUPERSONIC)
- .2byte EC_WORD_SPEED_BOOST
- .4byte gBattleFrontierTrainerMons_Nico
-
-@ 273
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_M
- .string "JEREMY$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_MASTER
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_MY
- .2byte EC_WORD_DREAM
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_DREAM
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_FAR
- .2byte EC_WORD_OFF
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I
- .2byte EC_WORD_DREAM
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_HAPPENING
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Jeremy
-
-@ 274
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_F
- .string "CAITLIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_THINK
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_IS
- .2byte EC_WORD_MORE
- .2byte EC_WORD_TO_ME
- .2byte EC_WORD_THAN
- .2byte EC_WORD_CUTENESS
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_CUTE_CHARM
- .2byte EC_WORD_DOESN_T
- .2byte EC_MOVE2(ATTRACT)
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Caitlin
-
-@ 275
- .4byte FACILITY_CLASS_CYCLING_TRIATHLETE_F
- .string "REENA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ALWAYS
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_YAY
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_YAHOO
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
-@ loss speech
- .2byte EC_WORD_YAHOO
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
- .4byte gBattleFrontierTrainerMons_Reena
-
-@ 276
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "AVERY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_GOT
- .2byte EC_WORD_A_LOT
- .2byte EC_WORD_OF
- .2byte EC_WORD_BUG
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BUG
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_ALL
- .2byte EC_WORD_UNBELIEVABLE
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BUG
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_ALL
- .2byte EC_WORD_UPSIDE_DOWN
- .4byte gBattleFrontierTrainerMons_Avery
-
-@ 277
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "LIAM$", 8
-@ pre-battle speech
- .2byte EC_WORD_WE
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_FIRE
- .2byte EC_WORD_AND
- .2byte EC_WORD_FLYING
-@ win speech
- .2byte EC_WORD_BUG
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_BAD
- .2byte EC_WORD_HEY_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_WE
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_HEY_QUES
- .4byte gBattleFrontierTrainerMons_Liam
-
-@ 278
- .4byte FACILITY_CLASS_FISHERMAN
- .string "THEO$", 8
-@ pre-battle speech
- .2byte EC_WORD_FISHING
- .2byte EC_WORD_IS
- .2byte EC_WORD_MY
- .2byte EC_WORD_CHOICE
- .2byte EC_WORD_IN
- .2byte EC_WORD_LIFE
-@ win speech
- .2byte EC_WORD_WATER
- .2byte EC_WORD_POKEMON
- .2byte EC_MOVE2(ATTRACT)
- .2byte EC_WORD_ME
- .2byte EC_WORD_WITHOUT
- .2byte EC_WORD_END
-@ loss speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_COUNT_ON
- .2byte EC_WORD_THAT
- .2byte EC_WORD_HAPPENING
- .2byte EC_WORD_ANOTHER
- .2byte EC_WORD_TIME
- .4byte gBattleFrontierTrainerMons_Theo
-
-@ 279
- .4byte FACILITY_CLASS_FISHERMAN
- .string "BAILEY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_AN
- .2byte EC_WORD_ADULT
- .2byte EC_WORD_I
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_EASY
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_AN
- .2byte EC_WORD_ADULT
- .2byte EC_WORD_I
- .2byte EC_MOVE2(SWALLOW)
- .2byte EC_WORD_JOY
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_AN
- .2byte EC_WORD_ADULT
- .2byte EC_WORD_I
- .2byte EC_MOVE2(SWALLOW)
- .2byte EC_MOVE2(FRUSTRATION)
- .4byte gBattleFrontierTrainerMons_Bailey
-
-@ 280
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "HUGO$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_TRY
- .2byte EC_WORD_THE
- .2byte EC_WORD_BEST
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_WIN
- .2byte EC_WORD_IF
- .2byte EC_WORD_I
- .2byte EC_WORD_TRY
- .2byte EC_WORD_ENOUGH
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DID
- .2byte EC_WORD_TRY
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_I
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Hugo
-
-@ 281
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "BRYCE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_WAS
- .2byte EC_WORD_ON
- .2byte EC_WORD_VACATION
- .2byte EC_WORD_UNTIL
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_YESTERDAY
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVEN_T
- .2byte EC_WORD_LOST
- .2byte EC_WORD_MY
- .2byte EC_WORD_SKILL
- .2byte EC_WORD_YET
-@ loss speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_IT
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_SLEEP
- .4byte gBattleFrontierTrainerMons_Bryce
-
-@ 282
- .4byte FACILITY_CLASS_COLLECTOR
- .string "GIDEON$", 8
-@ pre-battle speech
- .2byte EC_WORD_WHAT_S_UP_QUES
- .2byte EC_WORD_YOU
- .2byte EC_WORD_THINK
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_COOL
- .2byte EC_WORD_BUT
- .2byte EC_WORD_NOT
- .2byte EC_WORD_SCARY
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_AT
- .2byte EC_WORD_MY
- .2byte EC_WORD_FABULOUS
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_SENSE
- .4byte gBattleFrontierTrainerMons_Gideon
-
-@ 283
- .4byte FACILITY_CLASS_COLLECTOR
- .string "TRISTON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WOULD
- .2byte EC_WORD_RATHER
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_AT
- .2byte EC_WORD_POKEMON
-@ win speech
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_YOU
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_QUES_EXCL
-@ loss speech
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_ALWAYS
- .2byte EC_WORD_LOSE
- .4byte gBattleFrontierTrainerMons_Triston
-
-@ 284
- .4byte FACILITY_CLASS_GUITARIST
- .string "CHARLES$", 8
-@ pre-battle speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_HOPELESS
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(STRUGGLE)
- .2byte EC_WORD_WITH
- .2byte EC_WORD_ME
-@ win speech
- .2byte EC_MOVE(SUBMISSION)
- .2byte EC_WORD_WAS
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_CHOICE
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Charles
-
-@ 285
- .4byte FACILITY_CLASS_GUITARIST
- .string "RAYMOND$", 8
-@ pre-battle speech
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_HEAR
- .2byte EC_WORD_MY
- .2byte EC_WORD_SONG
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_SATISFIED
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_SATISFIED
- .2byte EC_WORD_IS
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_BE
- .4byte gBattleFrontierTrainerMons_Raymond
-
-@ 286
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "DIRK$", 8
-@ pre-battle speech
- .2byte EC_WORD_FLYING
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_ABOVE
- .2byte EC_WORD_THE
- .2byte EC_MOVE2(REST)
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN_T_WIN
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_FLYING
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_RULE
-@ loss speech
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_THERE
- .2byte EC_WORD_MORE
- .2byte EC_WORD_FLYING
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Dirk
-
-@ 287
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "HAROLD$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_APPEAL
- .2byte EC_WORD_TO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DO
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_SO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Harold
-
-@ 288
- .4byte FACILITY_CLASS_SAILOR
- .string "OMAR$", 8
-@ pre-battle speech
- .2byte EC_WORD_LET_ME_WIN
- .2byte EC_WORD_IN
- .2byte EC_MOVE(RETURN)
- .2byte EC_WORD_FOR
- .2byte EC_WORD_A
- .2byte EC_MOVE2(PRESENT)
-@ win speech
- .2byte EC_WORD_HERE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_ARE
- .2byte EC_WORD_SOME
- .2byte EC_MOVE2(TOXIC)
- .2byte EC_WORD_SWEETS
-@ loss speech
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE2(PRESENT)
- .2byte EC_WORD_QUES
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_FOR
- .2byte EC_WORD_QUES_EXCL
- .4byte gBattleFrontierTrainerMons_Omar
-
-@ 289
- .4byte FACILITY_CLASS_SAILOR
- .string "PETER$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_BRAG
- .2byte EC_WORD_ABOUT
- .2byte EC_WORD_MY
- .2byte EC_WORD_HAPPINESS
- .2byte EC_WORD_OK_QUES
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_TO
- .2byte EC_WORD_LISTEN
- .2byte EC_WORD_TO_ME
- .2byte EC_WORD_BRAG
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_DISAPPOINTED
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_LISTEN
- .2byte EC_WORD_TO_ME
- .4byte gBattleFrontierTrainerMons_Peter
-
-@ 290
- .4byte FACILITY_CLASS_HIKER
- .string "DEV$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_GET
- .2byte EC_WORD_A
- .2byte EC_WORD_MOVE
- .2byte EC_WORD_ON
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_GET
- .2byte EC_WORD_TO
- .2byte EC_WORD_NAP
- .2byte EC_WORD_AFTER
- .2byte EC_WORD_THAT
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_NAP
- .2byte EC_WORD_AFTER
- .2byte EC_WORD_THAT
- .4byte gBattleFrontierTrainerMons_Dev
-
-@ 291
- .4byte FACILITY_CLASS_HIKER
- .string "COREY$", 8
-@ pre-battle speech
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_TEACH
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HOW
- .2byte EC_WORD_TOUGH
- .2byte EC_WORD_I_AM
-@ win speech
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_AT
- .2byte EC_WORD_ME
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_A
- .2byte EC_MOVE(BRICK_BREAK)
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(FRUSTRATION)
- .2byte EC_WORD_IS
- .2byte EC_WORD_CLOSE
- .2byte EC_WORD_TO
- .2byte EC_MOVE2(ERUPTION)
- .4byte gBattleFrontierTrainerMons_Corey
-
-@ 292
- .4byte FACILITY_CLASS_KINDLER
- .string "ANDRE$", 8
-@ pre-battle speech
- .2byte EC_WORD_NOW
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_WORD_PERFECT
- .2byte EC_WORD_FLAME_BODY
-@ win speech
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_AT
- .2byte EC_WORD_MY
- .2byte EC_WORD_FIERY
- .2byte EC_WORD_DANCE
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WANT
- .2byte EC_WORD_AN
- .2byte EC_MOVE2(EXPLOSION)
- .2byte EC_WORD_HERE
- .2byte EC_WORD_QUES
- .4byte gBattleFrontierTrainerMons_Andre
-
-@ 293
- .4byte FACILITY_CLASS_KINDLER
- .string "FERRIS$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NO_1
- .2byte EC_WORD_IN
- .2byte EC_WORD_THE
- .2byte EC_WORD_OLD
- .2byte EC_WORD_CLASS
-@ win speech
- .2byte EC_WORD_NO_1
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_NO_1
- .2byte EC_WORD_ANY
- .2byte EC_WORD_MORE
- .2byte EC_WORD_ELLIPSIS
- .4byte gBattleFrontierTrainerMons_Ferris
-
-@ 294
- .4byte FACILITY_CLASS_PARASOL_LADY
- .string "ALIVIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_GIDDY
- .2byte EC_WORD_SO
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_YOU
-@ win speech
- .2byte EC_WORD_IT
- .2byte EC_WORD_WAS
- .2byte EC_WORD_ALL
- .2byte EC_WORD_TOGETHER
- .2byte EC_WORD_TOO
- .2byte EC_WORD_EASY
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_GIDDY
- .2byte EC_WORD_UP
- .2byte EC_WORD_AND
- .2byte EC_WORD_AWAY
- .4byte gBattleFrontierTrainerMons_Alivia
-
-@ 295
- .4byte FACILITY_CLASS_PARASOL_LADY
- .string "PAIGE$", 8
-@ pre-battle speech
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_OUR
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_TOGETHER
- .2byte -1
-@ win speech
- .2byte EC_WORD_THAT_S_IT_EXCL
- .2byte -1
- .2byte -1
- .2byte EC_WORD_THANK_YOU
- .2byte EC_WORD_VERY
- .2byte EC_WORD_MUCH
-@ loss speech
- .2byte EC_WORD_THAT_S_IT_EXCL
- .2byte -1
- .2byte -1
- .2byte EC_WORD_DO
- .2byte EC_WORD_GO
- .2byte EC_WORD_ON
- .4byte gBattleFrontierTrainerMons_Paige
-
-@ 296
- .4byte FACILITY_CLASS_BEAUTY
- .string "ANYA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_OH
- .2byte EC_WORD_SO
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_FASHION
-@ win speech
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_MATCH
- .2byte EC_WORD_THE
- .2byte EC_WORD_PERSON
- .2byte -1
-@ loss speech
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_COULD
- .2byte EC_WORD_BE
- .2byte EC_WORD_GOOD
- .2byte -1
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Anya
-
-@ 297
- .4byte FACILITY_CLASS_BEAUTY
- .string "DAWN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_GO
- .2byte EC_WORD_ALL
- .2byte EC_WORD_OUT
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_BE
- .2byte EC_WORD_A
- .2byte EC_WORD_BABY
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WON
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_MOVE
- .2byte EC_WORD_ON
- .2byte EC_WORD_EXCL
- .4byte gBattleFrontierTrainerMons_Dawn
-
-@ 298
- .4byte FACILITY_CLASS_AROMA_LADY
- .string "ABBY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_A
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_REFRESHING
-@ win speech
- .2byte EC_WORD_VICTORY
- .2byte EC_WORD_HAS
- .2byte EC_WORD_A
- .2byte EC_MOVE(SWEET_SCENT)
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_AN
- .2byte EC_WORD_AWFUL
- .2byte EC_WORD_STENCH
- .2byte EC_WORD_EXCL
- .2byte -1
- .4byte gBattleFrontierTrainerMons_Abby
-
-@ 299
- .4byte FACILITY_CLASS_AROMA_LADY
- .string "GRETEL$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAUSE
- .2byte EC_MOVE(OUTRAGE)
- .2byte EC_WORD_AS
- .2byte EC_WORD_A
- .2byte EC_WORD_TRAINER
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_NATURAL
- .2byte EC_WORD_SEE_YA
- .2byte EC_WORD_BYE_BYE
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_HARD
- .2byte EC_WORD_TO
- .2byte EC_WORD_BELIEVE
- .2byte EC_WORD_BUT
- .2byte EC_WORD_CONGRATS
- .4byte gBattleFrontierTrainerMons_Gretel
diff --git a/data/battle_frontier/fallarbor_battle_tent_mons.inc b/data/battle_frontier/fallarbor_battle_tent_mons.inc
deleted file mode 100644
index 36684c04b..000000000
--- a/data/battle_frontier/fallarbor_battle_tent_mons.inc
+++ /dev/null
@@ -1,316 +0,0 @@
- .align 2
-gFallarborBattleTentMons:: @ 85DF69C
-@ 0
- .2byte SPECIES_NUMEL
- .2byte MOVE_GROWL, MOVE_FLAMETHROWER, MOVE_TACKLE, MOVE_SUNNY_DAY
- .byte BATTLE_FRONTIER_ITEM_CHARCOAL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 1
- .2byte SPECIES_LINOONE
- .2byte MOVE_ODOR_SLEUTH, MOVE_COVET, MOVE_ROCK_SMASH, MOVE_CHARM
- .byte BATTLE_FRONTIER_ITEM_SILK_SCARF
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE
- .4byte NATURE_SASSY
-
-@ 2
- .2byte SPECIES_PLUSLE
- .2byte MOVE_SPARK, MOVE_GROWL, MOVE_QUICK_ATTACK, MOVE_FAKE_TEARS
- .byte BATTLE_FRONTIER_ITEM_MENTAL_HERB
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 3
- .2byte SPECIES_POOCHYENA
- .2byte MOVE_YAWN, MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_FRUSTRATION
- .byte BATTLE_FRONTIER_ITEM_LEPPA_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAUGHTY
-
-@ 4
- .2byte SPECIES_KECLEON
- .2byte MOVE_LICK, MOVE_SLASH, MOVE_FAINT_ATTACK, MOVE_PSYBEAM
- .byte BATTLE_FRONTIER_ITEM_WIKI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_MODEST
-
-@ 5
- .2byte SPECIES_MAGIKARP
- .2byte MOVE_SPLASH, MOVE_TACKLE, MOVE_FLAIL, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_DRAGON_SCALE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 6
- .2byte SPECIES_SOLROCK
- .2byte MOVE_ROCK_THROW, MOVE_FLASH, MOVE_SANDSTORM, MOVE_PSYWAVE
- .byte BATTLE_FRONTIER_ITEM_HARD_STONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 7
- .2byte SPECIES_MAKUHITA
- .2byte MOVE_DETECT, MOVE_ARM_THRUST, MOVE_FAKE_OUT, MOVE_SMELLING_SALT
- .byte BATTLE_FRONTIER_ITEM_BLACK_BELT
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 8
- .2byte SPECIES_MACHOKE
- .2byte MOVE_COUNTER, MOVE_REVENGE, MOVE_BULK_UP, MOVE_FOCUS_ENERGY
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAIVE
-
-@ 9
- .2byte SPECIES_NINCADA
- .2byte MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_MUD_SLAP, MOVE_DIG
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_SERIOUS
-
-@ 10
- .2byte SPECIES_BEAUTIFLY
- .2byte MOVE_FLASH, MOVE_MORNING_SUN, MOVE_HARDEN, MOVE_MEGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 11
- .2byte SPECIES_DUSTOX
- .2byte MOVE_MOONLIGHT, MOVE_HARDEN, MOVE_POISON_STING, MOVE_PSYBEAM
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE
- .4byte NATURE_DOCILE
-
-@ 12
- .2byte SPECIES_ILLUMISE
- .2byte MOVE_METRONOME, MOVE_FLATTER, MOVE_WISH, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 13
- .2byte SPECIES_VOLBEAT
- .2byte MOVE_TACKLE, MOVE_MOONLIGHT, MOVE_SIGNAL_BEAM, MOVE_TAIL_GLOW
- .byte BATTLE_FRONTIER_ITEM_LEPPA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 14
- .2byte SPECIES_NINJASK
- .2byte MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_DIG, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_TIMID
-
-@ 15
- .2byte SPECIES_NINJASK
- .2byte MOVE_SWORDS_DANCE, MOVE_CUT, MOVE_FURY_CUTTER, MOVE_LEECH_LIFE
- .byte BATTLE_FRONTIER_ITEM_SILVER_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 16
- .2byte SPECIES_ARON
- .2byte MOVE_METAL_CLAW, MOVE_PROTECT, MOVE_SHOCK_WAVE, MOVE_METAL_SOUND
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 17
- .2byte SPECIES_ARON
- .2byte MOVE_SECRET_POWER, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_MUD_SLAP
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_GENTLE
-
-@ 18
- .2byte SPECIES_ELECTRIKE
- .2byte MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_HOWL, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SEA_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_HASTY
-
-@ 19
- .2byte SPECIES_MAGNEMITE
- .2byte MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_ENDURE, MOVE_SPARK
- .byte BATTLE_FRONTIER_ITEM_MAGNET
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 20
- .2byte SPECIES_VOLTORB
- .2byte MOVE_CHARGE, MOVE_SPARK, MOVE_SCREECH, MOVE_SONIC_BOOM
- .byte BATTLE_FRONTIER_ITEM_ASPEAR_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 21
- .2byte SPECIES_WHISMUR
- .2byte MOVE_REST, MOVE_SLEEP_TALK, MOVE_HYPER_VOICE, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 22
- .2byte SPECIES_LOUDRED
- .2byte MOVE_STOMP, MOVE_REST, MOVE_SCREECH, MOVE_UPROAR
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 23
- .2byte SPECIES_LINOONE
- .2byte MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_SHOCK_WAVE, MOVE_GROWL
- .byte BATTLE_FRONTIER_ITEM_MAGNET
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 24
- .2byte SPECIES_MIGHTYENA
- .2byte MOVE_SAND_ATTACK, MOVE_HOWL, MOVE_SWAGGER, MOVE_SECRET_POWER
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_JOLLY
-
-@ 25
- .2byte SPECIES_SWABLU
- .2byte MOVE_TAKE_DOWN, MOVE_SING, MOVE_GROWL, MOVE_SAFEGUARD
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 26
- .2byte SPECIES_SKARMORY
- .2byte MOVE_AGILITY, MOVE_STEEL_WING, MOVE_SAND_ATTACK, MOVE_TORMENT
- .byte BATTLE_FRONTIER_ITEM_METAL_COAT
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 27
- .2byte SPECIES_GOLBAT
- .2byte MOVE_CONFUSE_RAY, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_SUBSTITUTE
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 28
- .2byte SPECIES_WINGULL
- .2byte MOVE_WING_ATTACK, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 29
- .2byte SPECIES_PELIPPER
- .2byte MOVE_TWISTER, MOVE_ICY_WIND, MOVE_DOUBLE_TEAM, MOVE_WATER_GUN
- .byte BATTLE_FRONTIER_ITEM_DRAGON_FANG
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 30
- .2byte SPECIES_BARBOACH
- .2byte MOVE_SPARK, MOVE_WATER_GUN, MOVE_EARTHQUAKE, MOVE_WATER_SPORT
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 31
- .2byte SPECIES_WAILMER
- .2byte MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_SPLASH, MOVE_CURSE
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIET
-
-@ 32
- .2byte SPECIES_MARILL
- .2byte MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_HARD_STONE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 33
- .2byte SPECIES_GOLDEEN
- .2byte MOVE_WATERFALL, MOVE_RAIN_DANCE, MOVE_FLAIL, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_GANLON_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_HASTY
-
-@ 34
- .2byte SPECIES_GOLDEEN
- .2byte MOVE_SLEEP_TALK, MOVE_HORN_DRILL, MOVE_REST, MOVE_SUPERSONIC
- .byte BATTLE_FRONTIER_ITEM_MENTAL_HERB
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 35
- .2byte SPECIES_TRAPINCH
- .2byte MOVE_RETURN, MOVE_SAND_ATTACK, MOVE_ATTRACT, MOVE_STRENGTH
- .byte BATTLE_FRONTIER_ITEM_MAGO_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 36
- .2byte SPECIES_BALTOY
- .2byte MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_RAPID_SPIN, MOVE_MIMIC
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 37
- .2byte SPECIES_GRAVELER
- .2byte MOVE_ROCK_BLAST, MOVE_DEFENSE_CURL, MOVE_MAGNITUDE, MOVE_MUD_SPORT
- .byte BATTLE_FRONTIER_ITEM_HARD_STONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 38
- .2byte SPECIES_SANDSHREW
- .2byte MOVE_SAND_TOMB, MOVE_SANDSTORM, MOVE_DOUBLE_TEAM, MOVE_FOCUS_PUNCH
- .byte BATTLE_FRONTIER_ITEM_SOFT_SAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 39
- .2byte SPECIES_SWALOT
- .2byte MOVE_YAWN, MOVE_ENCORE, MOVE_BULLET_SEED, MOVE_SLUDGE
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 40
- .2byte SPECIES_SHROOMISH
- .2byte MOVE_HEADBUTT, MOVE_SPORE, MOVE_SWAGGER, MOVE_LEECH_SEED
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 41
- .2byte SPECIES_KIRLIA
- .2byte MOVE_HYPNOSIS, MOVE_GROWL, MOVE_ATTRACT, MOVE_DREAM_EATER
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 42
- .2byte SPECIES_LOMBRE
- .2byte MOVE_NATURE_POWER, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_FLASH
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BASHFUL
-
-@ 43
- .2byte SPECIES_NUZLEAF
- .2byte MOVE_NATURE_POWER, MOVE_TORMENT, MOVE_SWAGGER, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 44
- .2byte SPECIES_CACNEA
- .2byte MOVE_SANDSTORM, MOVE_NEEDLE_ARM, MOVE_TEETER_DANCE, MOVE_LEECH_SEED
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
diff --git a/data/battle_frontier/fallarbor_battle_tent_trainer_mons.inc b/data/battle_frontier/fallarbor_battle_tent_trainer_mons.inc
deleted file mode 100644
index f3d5696d6..000000000
--- a/data/battle_frontier/fallarbor_battle_tent_trainer_mons.inc
+++ /dev/null
@@ -1,257 +0,0 @@
- .align 1
-gFallarborBattleTentTrainerMons_Amber:: @ 85DEEF8
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Javier:: @ 85DEF06
- .2byte 6
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 44
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Natalie:: @ 85DEF14
- .2byte 5
- .2byte 29
- .2byte 30
- .2byte 32
- .2byte 34
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Treve:: @ 85DEF20
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 32
- .2byte 33
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Arianna:: @ 85DEF2C
- .2byte 18
- .2byte 23
- .2byte 24
- .2byte 27
- .2byte 44
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Jadyn:: @ 85DEF38
- .2byte 0
- .2byte 22
- .2byte 24
- .2byte 27
- .2byte 32
- .2byte 39
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Gerardo:: @ 85DEF46
- .2byte 6
- .2byte 18
- .2byte 23
- .2byte 24
- .2byte 29
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Jonn:: @ 85DEF52
- .2byte 16
- .2byte 17
- .2byte 21
- .2byte 22
- .2byte 37
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Esteban:: @ 85DEF5E
- .2byte 5
- .2byte 28
- .2byte 30
- .2byte 33
- .2byte 42
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Jameson:: @ 85DEF6A
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 5
- .2byte 9
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Alanzo:: @ 85DEF76
- .2byte 9
- .2byte 10
- .2byte 11
- .2byte 12
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Howard:: @ 85DEF86
- .2byte 18
- .2byte 23
- .2byte 31
- .2byte 38
- .2byte 43
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Conrad:: @ 85DEF92
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Makenna:: @ 85DEF9E
- .2byte 4
- .2byte 21
- .2byte 25
- .2byte 36
- .2byte 40
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Brayan:: @ 85DEFAA
- .2byte 0
- .2byte 4
- .2byte 6
- .2byte 12
- .2byte 19
- .2byte 23
- .2byte 28
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Mariana:: @ 85DEFBA
- .2byte 0
- .2byte 4
- .2byte 13
- .2byte 19
- .2byte 28
- .2byte 30
- .2byte 37
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Sheldon:: @ 85DEFCA
- .2byte 2
- .2byte 3
- .2byte 21
- .2byte 31
- .2byte 39
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Gianna:: @ 85DEFD6
- .2byte 1
- .2byte 2
- .2byte 30
- .2byte 32
- .2byte 41
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Yahir:: @ 85DEFE2
- .2byte 4
- .2byte 8
- .2byte 15
- .2byte 17
- .2byte 22
- .2byte 24
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Britney:: @ 85DEFF0
- .2byte 4
- .2byte 7
- .2byte 14
- .2byte 20
- .2byte 23
- .2byte 43
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Hecter:: @ 85DEFFE
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 5
- .2byte 9
- .2byte 35
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Tannor:: @ 85DF00C
- .2byte 5
- .2byte 30
- .2byte 31
- .2byte 33
- .2byte 34
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Benji:: @ 85DF018
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Rory:: @ 85DF024
- .2byte 9
- .2byte 11
- .2byte 14
- .2byte 15
- .2byte 27
- .2byte 39
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Eleanor:: @ 85DF032
- .2byte 23
- .2byte 28
- .2byte 31
- .2byte 36
- .2byte 38
- .2byte 42
- .2byte 44
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Evelyn:: @ 85DF042
- .2byte 29
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Arielle:: @ 85DF04E
- .2byte 1
- .2byte 3
- .2byte 38
- .2byte 39
- .2byte 41
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Connar:: @ 85DF05A
- .2byte 7
- .2byte 8
- .2byte 28
- .2byte 29
- .2byte 31
- .2byte 32
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Maurice:: @ 85DF068
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 12
- .2byte 13
- .2byte -1
-
-gFallarborBattleTentTrainerMons_Kianna:: @ 85DF074
- .2byte 22
- .2byte 24
- .2byte 26
- .2byte 27
- .2byte 34
- .2byte 37
- .2byte -1
diff --git a/data/battle_frontier/fallarbor_battle_tent_trainers.inc b/data/battle_frontier/fallarbor_battle_tent_trainers.inc
deleted file mode 100644
index f1e2f8c4c..000000000
--- a/data/battle_frontier/fallarbor_battle_tent_trainers.inc
+++ /dev/null
@@ -1,781 +0,0 @@
- .align 2
-gFallarborBattleTentTrainers:: @ 85DF084
-@ 0
- .4byte FACILITY_CLASS_AROMA_LADY
- .string "AMBER$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_TO
- .2byte EC_WORD_DIET
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_DAY
-@ win speech
- .2byte EC_WORD_A
- .2byte EC_MOVE(NIGHTMARE)
- .2byte EC_WORD_OF
- .2byte EC_WORD_SWEETS
- .2byte EC_WORD_SHOCKED
- .2byte EC_WORD_ME
-@ loss speech
- .2byte EC_WORD_IF
- .2byte EC_WORD_YOU
- .2byte EC_WORD_GIVE_UP
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WILL
- .2byte EC_WORD_LOSE
- .4byte gFallarborBattleTentTrainerMons_Amber
-
-@ 1
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "JAVIER$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEVER
- .2byte EC_WORD_EVER
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_ENOUGH
- .2byte EC_WORD_MONEY
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_MONEY
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_MONEY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_A
- .2byte EC_WORD_BIKE
- .4byte gFallarborBattleTentTrainerMons_Javier
-
-@ 2
- .4byte FACILITY_CLASS_TUBER_F
- .string "NATALIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_WAY
- .2byte EC_WORD_I
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_IS
- .2byte EC_WORD_WEIRD
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_FOR
- .2byte EC_WORD_THIS
- .2byte EC_WORD_PLACE
-@ loss speech
- .2byte EC_WORD_GIVE_ME
- .2byte EC_WORD_AN
- .2byte EC_WORD_EASY
- .2byte EC_WORD_MATCH
- .2byte EC_WORD_NEXT
- .2byte EC_WORD_TIME
- .4byte gFallarborBattleTentTrainerMons_Natalie
-
-@ 3
- .4byte FACILITY_CLASS_TUBER_M
- .string "TREVE$", 8
-@ pre-battle speech
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_AT
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(METRONOME)
- .2byte EC_WORD_AND
- .2byte EC_WORD_SLEEP
-@ win speech
- .2byte EC_WORD_YEAH
- .2byte EC_WORD_EXCL
- .2byte EC_MOVE(HYPNOSIS)
- .2byte EC_WORD_IS
- .2byte EC_WORD_TOTALLY
- .2byte EC_WORD_GREAT
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE(HYPNOSIS)
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_WORK
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gFallarborBattleTentTrainerMons_Treve
-
-@ 4
- .4byte FACILITY_CLASS_LADY
- .string "ARIANNA$", 8
-@ pre-battle speech
- .2byte EC_WORD_IF_I_WIN
- .2byte EC_WORD_GIVE_ME
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_COLLECTION
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_TO
- .2byte EC_WORD_COLLECT
-@ loss speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_SOMETHING
- .2byte EC_WORD_ELSE
- .2byte EC_WORD_ELLIPSIS
- .4byte gFallarborBattleTentTrainerMons_Arianna
-
-@ 5
- .4byte FACILITY_CLASS_BEAUTY
- .string "JADYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_NAME
- .2byte EC_WORD_IS
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_A
- .2byte EC_WORD_MYSTERY
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_NAME
- .2byte EC_WORD_GOES
- .2byte EC_WORD_ON
- .2byte EC_WORD_A
- .2byte EC_WORD_MYSTERY
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_NAME
- .2byte EC_WORD_QUES
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_MOTHER
- .4byte gFallarborBattleTentTrainerMons_Jadyn
-
-@ 6
- .4byte FACILITY_CLASS_RICH_BOY
- .string "GERARDO$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_THE
- .2byte EC_WORD_BEST
- .2byte EC_WORD_HERO
- .2byte EC_WORD_EVER
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_SEE
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WERE
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gFallarborBattleTentTrainerMons_Gerardo
-
-@ 7
- .4byte FACILITY_CLASS_POKEMANIAC
- .string "JONN$", 8
-@ pre-battle speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_WORLD
- .2byte EC_MOVE2(SUPERPOWER)
- .2byte EC_MOVE2(STOMP)
- .2byte EC_WORD_CONTEST
- .2byte EC_WORD_EXCL_EXCL
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NO_1
- .2byte EC_WORD_EXCL_EXCL
- .2byte EC_WORD_HEAR
- .2byte EC_WORD_ME
- .2byte EC_MOVE2(ROAR)
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_GIVE_UP
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_NO_1
- .2byte EC_WORD_EXCL
- .4byte gFallarborBattleTentTrainerMons_Jonn
-
-@ 8
- .4byte FACILITY_CLASS_SWIMMER_M
- .string "ESTEBAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_A
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_QUES
- .2byte EC_WORD_UNBELIEVABLE
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_SOME
- .2byte EC_WORD_PUSHOVER
- .2byte EC_WORD_OF
- .2byte EC_WORD_A
- .2byte EC_WORD_TRAINER
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_TOO
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
- .4byte gFallarborBattleTentTrainerMons_Esteban
-
-@ 9
- .4byte FACILITY_CLASS_CAMPER
- .string "JAMESON$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_SILKY
- .2byte EC_WORD_SMOOTH
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_SILKY
- .2byte EC_WORD_SMOOTH
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_RULE
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_MOVE2(STRUGGLE)
- .2byte EC_WORD_IN
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_STICKY_HOLD
- .4byte gFallarborBattleTentTrainerMons_Jameson
-
-@ 10
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "ALANZO$", 8
-@ pre-battle speech
- .2byte EC_MOVE2(FORESIGHT)
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_WORD_POWER
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_OBLIVIOUS
- .2byte EC_WORD_ABOUT
- .2byte EC_MOVE2(FORESIGHT)
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(FORESIGHT)
- .2byte EC_WORD_IS
- .2byte EC_WORD_ALWAYS
- .2byte EC_WORD_RIGHT
- .2byte EC_WORD_EXCL
- .4byte gFallarborBattleTentTrainerMons_Alanzo
-
-@ 11
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "HOWARD$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_BEAT
- .2byte EC_WORD_ME
- .2byte -1
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_COULDN_T
- .2byte EC_WORD_WIN
- .2byte EC_WORD_COULD
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WOULD
- .2byte EC_WORD_GO
- .2byte EC_WORD_ALL
- .2byte EC_WORD_OUT
- .2byte EC_WORD_ELLIPSIS
- .4byte gFallarborBattleTentTrainerMons_Howard
-
-@ 12
- .4byte FACILITY_CLASS_GUITARIST
- .string "CONRAD$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_WILD
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_WHOAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_DANCE
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_MUSIC
- .2byte EC_WORD_WILL
- .2byte EC_WORD_PLAY
- .2byte EC_WORD_ON
- .2byte EC_WORD_ELLIPSIS
- .4byte gFallarborBattleTentTrainerMons_Conrad
-
-@ 13
- .4byte FACILITY_CLASS_SCHOOL_KID_F
- .string "MAKENNA$", 8
-@ pre-battle speech
- .2byte EC_WORD_SHOW
- .2byte EC_WORD_ME
- .2byte EC_WORD_THAT
- .2byte EC_WORD_YOU
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_IT
-@ win speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHY
- .2byte EC_WORD_I
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_DAY
-@ loss speech
- .2byte EC_WORD_AWW
- .2byte EC_WORD_I
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_EVERY
- .2byte EC_WORD_DAY
- .2byte EC_WORD_TOO
- .4byte gFallarborBattleTentTrainerMons_Makenna
-
-@ 14
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "BRAYAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_CAN
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SEE
- .2byte EC_WORD_MY
- .2byte EC_WORD_POWER
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_HOW
- .2byte EC_WORD_BORING
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_GOOD_BYE
-@ loss speech
- .2byte EC_WORD_AM
- .2byte EC_WORD_I
- .2byte EC_WORD_THE
- .2byte EC_WORD_WEAK
- .2byte EC_WORD_TRAINER
- .2byte EC_WORD_QUES
- .4byte gFallarborBattleTentTrainerMons_Brayan
-
-@ 15
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "MARIANA$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_LIE
- .2byte EC_WORD_CAN
- .2byte EC_WORD_BE
- .2byte EC_WORD_KIND
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_THE
- .2byte EC_WORD_SUNDAY
- .2byte EC_WORD_COMICS
-@ loss speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_FROM
- .2byte EC_WORD_A
- .2byte EC_WORD_MOVIE
- .4byte gFallarborBattleTentTrainerMons_Mariana
-
-@ 16
- .4byte FACILITY_CLASS_POKEFAN_M
- .string "SHELDON$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_TEACHER
- .2byte EC_WORD_GETS
- .2byte EC_WORD_NO
- .2byte EC_MOVE2(REST)
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_SMARTNESS
- .2byte EC_WORD_GETS
- .2byte EC_WORD_ME
- .2byte EC_WORD_EASY
- .2byte EC_WORD_WINS
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO
- .2byte EC_WORD_WORK
- .2byte EC_WORD_BYE_BYE
- .4byte gFallarborBattleTentTrainerMons_Sheldon
-
-@ 17
- .4byte FACILITY_CLASS_POKEFAN_F
- .string "GIANNA$", 8
-@ pre-battle speech
- .2byte EC_WORD_AHAHA
- .2byte EC_WORD_YES
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_LOVEY_DOVEY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_WORLD
-@ win speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_SHINE
- .2byte EC_WORD_IS
- .2byte EC_WORD_MAKING
- .2byte EC_WORD_THINGS
- .2byte EC_WORD_BETTER
-@ loss speech
- .2byte EC_WORD_DO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gFallarborBattleTentTrainerMons_Gianna
-
-@ 18
- .4byte FACILITY_CLASS_EXPERT_M
- .string "YAHIR$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_TRAIN
- .2byte EC_WORD_A_LOT
- .2byte EC_WORD_MORE
-@ loss speech
- .2byte EC_WORD_NOT
- .2byte EC_WORD_ENOUGH
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_JUST
- .2byte EC_WORD_NOT
- .2byte EC_WORD_ENOUGH
- .4byte gFallarborBattleTentTrainerMons_Yahir
-
-@ 19
- .4byte FACILITY_CLASS_EXPERT_F
- .string "BRITNEY$", 8
-@ pre-battle speech
- .2byte EC_WORD_IT
- .2byte EC_WORD_SEEMS
- .2byte EC_WORD_THAT
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_QUITE
- .2byte EC_WORD_GOOD
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_A
- .2byte EC_WORD_LUKEWARM
- .2byte EC_WORD_TALENT
- .2byte EC_WORD_AT
- .2byte EC_WORD_BEST
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_A
- .2byte EC_WORD_COOL
- .2byte EC_WORD_HERO
- .2byte EC_WORD_AT
- .2byte EC_WORD_THIS
- .4byte gFallarborBattleTentTrainerMons_Britney
-
-@ 20
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "HECTER$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(HIDDEN_POWER)
- .2byte EC_WORD_IS
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_ME
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_YEEHAW_EXCL
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_MOVE2(HIDDEN_POWER)
- .2byte EC_WORD_PARTY
-@ loss speech
- .2byte EC_WORD_WAAAH
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_YOU
- .2byte EC_MOVE2(MIMIC)
- .2byte EC_WORD_ME
- .4byte gFallarborBattleTentTrainerMons_Hecter
-
-@ 21
- .4byte FACILITY_CLASS_FISHERMAN
- .string "TANNOR$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_GOT
- .2byte EC_WORD_TO
- .2byte EC_WORD_BE
- .2byte EC_WORD_JOKING
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_THE
- .2byte EC_WORD_BEST
- .2byte EC_WORD_AT
- .2byte EC_WORD_BEING
- .2byte EC_WORD_FUNNY
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WEREN_T
- .2byte EC_WORD_BEING
- .2byte EC_WORD_FUNNY
- .2byte EC_WORD_AT
- .2byte EC_WORD_ALL
- .4byte gFallarborBattleTentTrainerMons_Tannor
-
-@ 22
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "BENJI$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_THINK
- .2byte EC_WORD_VERY
- .2byte EC_WORD_FAST
- .2byte EC_WORD_HUH_QUES
-@ win speech
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I
- .2byte EC_WORD_DIDN_T
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_YOU
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_LEFT
- .2byte EC_WORD_ME
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_SAD
- .2byte EC_WORD_ELLIPSIS
- .4byte gFallarborBattleTentTrainerMons_Benji
-
-@ 23
- .4byte FACILITY_CLASS_NINJA_BOY
- .string "RORY$", 8
-@ pre-battle speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_CAUSE
- .2byte EC_WORD_AN
- .2byte EC_MOVE(UPROAR)
- .2byte EC_WORD_YOU
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_NEED
- .2byte EC_WORD_AN
- .2byte EC_MOVE(UPROAR)
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_CAUSE
- .2byte EC_WORD_AN
- .2byte EC_MOVE(UPROAR)
- .4byte gFallarborBattleTentTrainerMons_Rory
-
-@ 24
- .4byte FACILITY_CLASS_PARASOL_LADY
- .string "ELEANOR$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_PARTY
- .2byte -1
-@ win speech
- .2byte EC_WORD_A
- .2byte EC_WORD_TRENDY
- .2byte EC_WORD_PARTY
- .2byte EC_WORD_WOULD
- .2byte EC_WORD_BE
- .2byte EC_WORD_REFRESHING
-@ loss speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_TO
- .2byte EC_WORD_PARTY
- .2byte EC_WORD_QUES
- .4byte gFallarborBattleTentTrainerMons_Eleanor
-
-@ 25
- .4byte FACILITY_CLASS_SWIMMER_F
- .string "EVELYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_PC
- .2byte EC_WORD_IS
- .2byte EC_WORD_MY
- .2byte EC_WORD_SECRET_BASE
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_ALL
- .2byte EC_WORD_SECRET
- .2byte EC_WORD_ON
- .2byte EC_WORD_MY
- .2byte EC_WORD_PC
-@ loss speech
- .2byte EC_WORD_NO
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_REJECT
- .2byte EC_WORD_THIS
- .4byte gFallarborBattleTentTrainerMons_Evelyn
-
-@ 26
- .4byte FACILITY_CLASS_PICNICKER
- .string "ARIELLE$", 8
-@ pre-battle speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_NOT_VERY
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I
- .2byte EC_WORD_TRY
-@ win speech
- .2byte EC_WORD_WE_RE
- .2byte EC_WORD_NOT_VERY
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_BUT
- .2byte EC_WORD_WE_RE
- .2byte EC_WORD_GREAT
-@ loss speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_PRETTY
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_OF
- .2byte EC_WORD_YOU
- .2byte EC_WORD_EXCL
- .4byte gFallarborBattleTentTrainerMons_Arielle
-
-@ 27
- .4byte FACILITY_CLASS_SAILOR
- .string "CONNAR$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_ENOUGH
- .2byte EC_WORD_FOR
- .2byte EC_WORD_THIS
-@ win speech
- .2byte EC_WORD_DO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_THINK
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_OK_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_GOOD_BYE
- .2byte EC_WORD_AND
- .2byte EC_WORD_THANK_YOU
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gFallarborBattleTentTrainerMons_Connar
-
-@ 28
- .4byte FACILITY_CLASS_COLLECTOR
- .string "MAURICE$", 8
-@ pre-battle speech
- .2byte EC_WORD_THERE
- .2byte EC_WORD_IS
- .2byte EC_WORD_NO
- .2byte EC_WORD_RADIO
- .2byte EC_WORD_OR
- .2byte EC_WORD_TELEVISION
-@ win speech
- .2byte EC_WORD_BUT
- .2byte EC_WORD_THERE
- .2byte EC_WORD_IS
- .2byte EC_WORD_A_LOT
- .2byte EC_WORD_OF
- .2byte EC_WORD_POKEMON
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_MYSELF
- .2byte EC_WORD_WITHOUT
- .2byte EC_WORD_MONEY
- .4byte gFallarborBattleTentTrainerMons_Maurice
-
-@ 29
- .4byte FACILITY_CLASS_LASS
- .string "KIANNA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO
- .2byte EC_WORD_DEPT_STORE
- .2byte EC_WORD_SHOPPING
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_SHOPPING
- .2byte EC_WORD_ALONE
- .2byte -1
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO
- .2byte EC_WORD_SHOPPING
- .2byte EC_WORD_TOGETHER
- .2byte EC_WORD_QUES
- .4byte gFallarborBattleTentTrainerMons_Kianna
diff --git a/data/battle_frontier/slateport_battle_tent_mons.inc b/data/battle_frontier/slateport_battle_tent_mons.inc
deleted file mode 100644
index 8760673d2..000000000
--- a/data/battle_frontier/slateport_battle_tent_mons.inc
+++ /dev/null
@@ -1,491 +0,0 @@
- .align 2
-gSlateportBattleTentMons:: @ 85DE02C
-@ 0
- .2byte SPECIES_ZIGZAGOON
- .2byte MOVE_TACKLE, MOVE_CHARM, MOVE_ODOR_SLEUTH, MOVE_PIN_MISSILE
- .byte BATTLE_FRONTIER_ITEM_CHOICE_BAND
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 1
- .2byte SPECIES_ZIGZAGOON
- .2byte MOVE_DIG, MOVE_MUD_SPORT, MOVE_TAIL_WHIP, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 2
- .2byte SPECIES_BEAUTIFLY
- .2byte MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_GUST, MOVE_HARDEN
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 3
- .2byte SPECIES_DUSTOX
- .2byte MOVE_POISON_STING, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_GUST
- .byte BATTLE_FRONTIER_ITEM_ORAN_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 4
- .2byte SPECIES_WAILMER
- .2byte MOVE_ROLLOUT, MOVE_CURSE, MOVE_GROWL, MOVE_WHIRLPOOL
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 5
- .2byte SPECIES_WAILMER
- .2byte MOVE_ROLLOUT, MOVE_GROWL, MOVE_WHIRLPOOL, MOVE_WATER_PULSE
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 6
- .2byte SPECIES_MARILL
- .2byte MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 7
- .2byte SPECIES_WINGULL
- .2byte MOVE_SUPERSONIC, MOVE_GROWL, MOVE_WING_ATTACK, MOVE_STEEL_WING
- .byte BATTLE_FRONTIER_ITEM_METAL_COAT
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAIVE
-
-@ 8
- .2byte SPECIES_PELIPPER
- .2byte MOVE_TWISTER, MOVE_WATER_SPORT, MOVE_GROWL, MOVE_WING_ATTACK
- .byte BATTLE_FRONTIER_ITEM_DRAGON_FANG
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 9
- .2byte SPECIES_CACNEA
- .2byte MOVE_SANDSTORM, MOVE_LEER, MOVE_LEECH_SEED, MOVE_PIN_MISSILE
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SPEED
- .4byte NATURE_JOLLY
-
-@ 10
- .2byte SPECIES_LOMBRE
- .2byte MOVE_ASTONISH, MOVE_WATER_GUN, MOVE_FAKE_OUT, MOVE_ABSORB
- .byte BATTLE_FRONTIER_ITEM_MIRACLE_SEED
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 11
- .2byte SPECIES_LOTAD
- .2byte MOVE_SYNTHESIS, MOVE_NATURE_POWER, MOVE_RAIN_DANCE, MOVE_MEGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_MYSTIC_WATER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_DOCILE
-
-@ 12
- .2byte SPECIES_SEEDOT
- .2byte MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LEECH_SEED, MOVE_BIDE
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_TIMID
-
-@ 13
- .2byte SPECIES_NUZLEAF
- .2byte MOVE_FAKE_OUT, MOVE_NATURE_POWER, MOVE_HARDEN, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 14
- .2byte SPECIES_NINJASK
- .2byte MOVE_FURY_CUTTER, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 15
- .2byte SPECIES_NINJASK
- .2byte MOVE_FURY_CUTTER, MOVE_DOUBLE_TEAM, MOVE_SCREECH, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SILVER_POWDER
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAUGHTY
-
-@ 16
- .2byte SPECIES_GRAVELER
- .2byte MOVE_MUD_SPORT, MOVE_BLOCK, MOVE_ROCK_TOMB, MOVE_MAGNITUDE
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 17
- .2byte SPECIES_BALTOY
- .2byte MOVE_SELF_DESTRUCT, MOVE_ANCIENT_POWER, MOVE_PSYBEAM, MOVE_REFLECT
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAIVE
-
-@ 18
- .2byte SPECIES_MIGHTYENA
- .2byte MOVE_BITE, MOVE_ROAR, MOVE_SWAGGER, MOVE_TACKLE
- .byte BATTLE_FRONTIER_ITEM_BLACK_GLASSES
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 19
- .2byte SPECIES_MIGHTYENA
- .2byte MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_SAND_ATTACK, MOVE_POISON_FANG
- .byte BATTLE_FRONTIER_ITEM_SHELL_BELL
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 20
- .2byte SPECIES_LINOONE
- .2byte MOVE_HEADBUTT, MOVE_TICKLE, MOVE_TAIL_WHIP, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_MENTAL_HERB
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_JOLLY
-
-@ 21
- .2byte SPECIES_GOLDEEN
- .2byte MOVE_WATER_SPORT, MOVE_HORN_ATTACK, MOVE_WATERFALL, MOVE_SUPERSONIC
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_CALM
-
-@ 22
- .2byte SPECIES_ELECTRIKE
- .2byte MOVE_BITE, MOVE_SPARK, MOVE_ROAR, MOVE_FLASH
- .byte BATTLE_FRONTIER_ITEM_MAGNET
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_MODEST
-
-@ 23
- .2byte SPECIES_VOLTORB
- .2byte MOVE_SPARK, MOVE_ROLLOUT, MOVE_CHARGE, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK
- .4byte NATURE_MILD
-
-@ 24
- .2byte SPECIES_ARON
- .2byte MOVE_DIG, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ENDEAVOR
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 25
- .2byte SPECIES_ARON
- .2byte MOVE_MUD_SLAP, MOVE_IRON_TAIL, MOVE_HARDEN, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_LEPPA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 26
- .2byte SPECIES_TRAPINCH
- .2byte MOVE_BODY_SLAM, MOVE_FOCUS_ENERGY, MOVE_SAND_TOMB, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 27
- .2byte SPECIES_CACNEA
- .2byte MOVE_INGRAIN, MOVE_SANDSTORM, MOVE_POISON_STING, MOVE_DESTINY_BOND
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_TIMID
-
-@ 28
- .2byte SPECIES_TAILLOW
- .2byte MOVE_GROWL, MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_ENDEAVOR
- .byte BATTLE_FRONTIER_ITEM_SHARP_BEAK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 29
- .2byte SPECIES_SWELLOW
- .2byte MOVE_SUPERSONIC, MOVE_GROWL, MOVE_FOCUS_ENERGY, MOVE_PECK
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 30
- .2byte SPECIES_GOLBAT
- .2byte MOVE_ASTONISH, MOVE_GUST, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY
- .byte BATTLE_FRONTIER_ITEM_SPELL_TAG
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE
- .4byte NATURE_TIMID
-
-@ 31
- .2byte SPECIES_LOUDRED
- .2byte MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_SUPERSONIC
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 32
- .2byte SPECIES_SPINDA
- .2byte MOVE_DIZZY_PUNCH, MOVE_FAINT_ATTACK, MOVE_HYPNOSIS, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 33
- .2byte SPECIES_MAGNEMITE
- .2byte MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SPARK
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_SERIOUS
-
-@ 34
- .2byte SPECIES_WHISMUR
- .2byte MOVE_REST, MOVE_SLEEP_TALK, MOVE_HOWL, MOVE_BODY_SLAM
- .byte BATTLE_FRONTIER_ITEM_SILK_SCARF
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 35
- .2byte SPECIES_MAKUHITA
- .2byte MOVE_SAND_ATTACK, MOVE_KNOCK_OFF, MOVE_ARM_THRUST, MOVE_BELLY_DRUM
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 36
- .2byte SPECIES_NUMEL
- .2byte MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_GROWL, MOVE_FOCUS_ENERGY
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_MODEST
-
-@ 37
- .2byte SPECIES_BARBOACH
- .2byte MOVE_MAGNITUDE, MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_WATER_GUN
- .byte BATTLE_FRONTIER_ITEM_SEA_INCENSE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_JOLLY
-
-@ 38
- .2byte SPECIES_TENTACOOL
- .2byte MOVE_SCREECH, MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER
- .byte BATTLE_FRONTIER_ITEM_POISON_BARB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 39
- .2byte SPECIES_VIGOROTH
- .2byte MOVE_FOCUS_ENERGY, MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_YAWN
- .byte BATTLE_FRONTIER_ITEM_AGUAV_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 40
- .2byte SPECIES_MAGIKARP
- .2byte MOVE_TACKLE, MOVE_FLAIL, MOVE_SPLASH, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_DRAGON_SCALE
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 41
- .2byte SPECIES_SEVIPER
- .2byte MOVE_LICK, MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 42
- .2byte SPECIES_SOLROCK
- .2byte MOVE_ROCK_THROW, MOVE_HARDEN, MOVE_PSYWAVE, MOVE_TACKLE
- .byte BATTLE_FRONTIER_ITEM_HARD_STONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 43
- .2byte SPECIES_KECLEON
- .2byte MOVE_PSYBEAM, MOVE_SUBSTITUTE, MOVE_THIEF, MOVE_TAIL_WHIP
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 44
- .2byte SPECIES_KECLEON
- .2byte MOVE_FAINT_ATTACK, MOVE_ASTONISH, MOVE_LICK, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_IAPAPA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 45
- .2byte SPECIES_SHROOMISH
- .2byte MOVE_STUN_SPORE, MOVE_TACKLE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MODEST
-
-@ 46
- .2byte SPECIES_SHROOMISH
- .2byte MOVE_ABSORB, MOVE_STUN_SPORE, MOVE_SPORE, MOVE_LEECH_SEED
- .byte BATTLE_FRONTIER_ITEM_FIGY_BERRY
- .byte F_EV_SPREAD_ATTACK
- .4byte NATURE_BRAVE
-
-@ 47
- .2byte SPECIES_LOMBRE
- .2byte MOVE_NATURE_POWER, MOVE_ASTONISH, MOVE_GROWL, MOVE_ABSORB
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_LONELY
-
-@ 48
- .2byte SPECIES_NUMEL
- .2byte MOVE_EMBER, MOVE_GROWL, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY
- .byte BATTLE_FRONTIER_ITEM_CHARCOAL
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 49
- .2byte SPECIES_TRAPINCH
- .2byte MOVE_FAINT_ATTACK, MOVE_DIG, MOVE_BITE, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_ASPEAR_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BRAVE
-
-@ 50
- .2byte SPECIES_PELIPPER
- .2byte MOVE_WING_ATTACK, MOVE_SUPERSONIC, MOVE_MIST, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_WIKI_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 51
- .2byte SPECIES_WINGULL
- .2byte MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_GROWL, MOVE_ICY_WIND
- .byte BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 52
- .2byte SPECIES_MARILL
- .2byte MOVE_DOUBLE_EDGE, MOVE_RAIN_DANCE, MOVE_TAIL_WHIP, MOVE_WATER_GUN
- .byte BATTLE_FRONTIER_ITEM_GANLON_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 53
- .2byte SPECIES_SKITTY
- .2byte MOVE_ASSIST, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 54
- .2byte SPECIES_SEVIPER
- .2byte MOVE_SWAGGER, MOVE_WRAP, MOVE_POISON_TAIL, MOVE_HAZE
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE
- .4byte NATURE_BRAVE
-
-@ 55
- .2byte SPECIES_GOLBAT
- .2byte MOVE_BITE, MOVE_TORMENT, MOVE_SCREECH, MOVE_POISON_FANG
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_HARDY
-
-@ 56
- .2byte SPECIES_RALTS
- .2byte MOVE_HYPNOSIS, MOVE_IMPRISON, MOVE_PSYCHIC, MOVE_DREAM_EATER
- .byte BATTLE_FRONTIER_ITEM_MAGO_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_TIMID
-
-@ 57
- .2byte SPECIES_SANDSHREW
- .2byte MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_SAND_TOMB, MOVE_DEFENSE_CURL
- .byte BATTLE_FRONTIER_ITEM_SOFT_SAND
- .byte 0
- .4byte NATURE_HARDY
-
-@ 58
- .2byte SPECIES_SWALOT
- .2byte MOVE_YAWN, MOVE_SLUDGE, MOVE_ENCORE, MOVE_POUND
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_IMPISH
-
-@ 59
- .2byte SPECIES_VOLBEAT
- .2byte MOVE_TACKLE, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 60
- .2byte SPECIES_ILLUMISE
- .2byte MOVE_CHARM, MOVE_TACKLE, MOVE_ENCORE, MOVE_MOONLIGHT
- .byte BATTLE_FRONTIER_ITEM_CHERI_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 61
- .2byte SPECIES_KADABRA
- .2byte MOVE_DISABLE, MOVE_CONFUSION, MOVE_REFLECT, MOVE_RECOVER
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 62
- .2byte SPECIES_KIRLIA
- .2byte MOVE_CALM_MIND, MOVE_CONFUSION, MOVE_DOUBLE_TEAM, MOVE_GROWL
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_CAREFUL
-
-@ 63
- .2byte SPECIES_BRELOOM
- .2byte MOVE_ABSORB, MOVE_TACKLE, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAIVE
-
-@ 64
- .2byte SPECIES_PLUSLE
- .2byte MOVE_SPARK, MOVE_ENCORE, MOVE_THUNDER_WAVE, MOVE_GROWL
- .byte BATTLE_FRONTIER_ITEM_LIECHI_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_LONELY
-
-@ 65
- .2byte SPECIES_PLUSLE
- .2byte MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_SUBSTITUTE, MOVE_QUICK_ATTACK
- .byte BATTLE_FRONTIER_ITEM_PECHA_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MILD
-
-@ 66
- .2byte SPECIES_ELECTRIKE
- .2byte MOVE_SPARK, MOVE_CHARGE, MOVE_ROAR, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_APICOT_BERRY
- .byte F_EV_SPREAD_SPEED
- .4byte NATURE_TIMID
-
-@ 67
- .2byte SPECIES_SWABLU
- .2byte MOVE_SING, MOVE_PECK, MOVE_STEEL_WING, MOVE_SAFEGUARD
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_JOLLY
-
-@ 68
- .2byte SPECIES_MACHOP
- .2byte MOVE_FOCUS_ENERGY, MOVE_VITAL_THROW, MOVE_SEISMIC_TOSS, MOVE_FORESIGHT
- .byte BATTLE_FRONTIER_ITEM_BLACK_BELT
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 69
- .2byte SPECIES_MACHOKE
- .2byte MOVE_FOCUS_ENERGY, MOVE_LEER, MOVE_KARATE_CHOP, MOVE_FORESIGHT
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
diff --git a/data/battle_frontier/slateport_battle_tent_trainer_mons.inc b/data/battle_frontier/slateport_battle_tent_trainer_mons.inc
deleted file mode 100644
index 6565f469a..000000000
--- a/data/battle_frontier/slateport_battle_tent_trainer_mons.inc
+++ /dev/null
@@ -1,448 +0,0 @@
- .align 1
-gSlateportBattleTentTrainerMons_Jolie:: @ 85DD70C
- .2byte 9
- .2byte 10
- .2byte 13
- .2byte 27
- .2byte 35
- .2byte 37
- .2byte 42
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 63
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Malachi:: @ 85DD724
- .2byte 9
- .2byte 16
- .2byte 17
- .2byte 27
- .2byte 36
- .2byte 39
- .2byte 42
- .2byte 45
- .2byte 48
- .2byte 49
- .2byte 53
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Kelsie:: @ 85DD73C
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 11
- .2byte 28
- .2byte 34
- .2byte 35
- .2byte 37
- .2byte 43
- .2byte 51
- .2byte 53
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Davon:: @ 85DD754
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 12
- .2byte 26
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 40
- .2byte 44
- .2byte 46
- .2byte 50
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Glenda:: @ 85DD76E
- .2byte 0
- .2byte 1
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 22
- .2byte 23
- .2byte 33
- .2byte 42
- .2byte 61
- .2byte 64
- .2byte 65
- .2byte 66
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Helena:: @ 85DD78A
- .2byte 18
- .2byte 19
- .2byte 21
- .2byte 38
- .2byte 39
- .2byte 41
- .2byte 42
- .2byte 52
- .2byte 54
- .2byte 58
- .2byte 63
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Rodolfo:: @ 85DD7A2
- .2byte 0
- .2byte 1
- .2byte 4
- .2byte 5
- .2byte 7
- .2byte 8
- .2byte 18
- .2byte 20
- .2byte 21
- .2byte 37
- .2byte 38
- .2byte 40
- .2byte 62
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Davion:: @ 85DD7BE
- .2byte 17
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 39
- .2byte 43
- .2byte 44
- .2byte 49
- .2byte 57
- .2byte 69
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Kendall:: @ 85DD7DC
- .2byte 4
- .2byte 7
- .2byte 8
- .2byte 9
- .2byte 11
- .2byte 12
- .2byte 13
- .2byte 27
- .2byte 38
- .2byte 40
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 63
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Colten:: @ 85DD7FA
- .2byte 0
- .2byte 2
- .2byte 12
- .2byte 22
- .2byte 28
- .2byte 30
- .2byte 35
- .2byte 38
- .2byte 43
- .2byte 44
- .2byte 56
- .2byte 57
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Irvin:: @ 85DD814
- .2byte 0
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 14
- .2byte 15
- .2byte 24
- .2byte 25
- .2byte 32
- .2byte 34
- .2byte 39
- .2byte 59
- .2byte 60
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Shaun:: @ 85DD830
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 22
- .2byte 29
- .2byte 36
- .2byte 42
- .2byte 48
- .2byte 61
- .2byte 62
- .2byte 66
- .2byte 68
- .2byte 69
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Kyler:: @ 85DD84C
- .2byte 22
- .2byte 23
- .2byte 28
- .2byte 29
- .2byte 31
- .2byte 32
- .2byte 34
- .2byte 39
- .2byte 55
- .2byte 64
- .2byte 65
- .2byte 67
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Maggie:: @ 85DD866
- .2byte 10
- .2byte 13
- .2byte 17
- .2byte 27
- .2byte 45
- .2byte 46
- .2byte 53
- .2byte 56
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Stephon:: @ 85DD87E
- .2byte 8
- .2byte 10
- .2byte 16
- .2byte 23
- .2byte 29
- .2byte 43
- .2byte 44
- .2byte 60
- .2byte 62
- .2byte 63
- .2byte 68
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Rebecca:: @ 85DD896
- .2byte 8
- .2byte 13
- .2byte 21
- .2byte 29
- .2byte 33
- .2byte 41
- .2byte 48
- .2byte 54
- .2byte 59
- .2byte 61
- .2byte 68
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Reggie:: @ 85DD8AE
- .2byte 6
- .2byte 7
- .2byte 17
- .2byte 23
- .2byte 24
- .2byte 26
- .2byte 32
- .2byte 36
- .2byte 52
- .2byte 53
- .2byte 57
- .2byte 65
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Janae:: @ 85DD8C8
- .2byte 0
- .2byte 1
- .2byte 27
- .2byte 28
- .2byte 32
- .2byte 34
- .2byte 36
- .2byte 37
- .2byte 52
- .2byte 53
- .2byte 57
- .2byte 65
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Caiden:: @ 85DD8E2
- .2byte 10
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 20
- .2byte 21
- .2byte 25
- .2byte 30
- .2byte 35
- .2byte 47
- .2byte 48
- .2byte 50
- .2byte 69
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Kirsten:: @ 85DD8FE
- .2byte 10
- .2byte 16
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 25
- .2byte 30
- .2byte 35
- .2byte 39
- .2byte 41
- .2byte 48
- .2byte 69
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Kurtis:: @ 85DD91A
- .2byte 0
- .2byte 1
- .2byte 36
- .2byte 37
- .2byte 40
- .2byte 46
- .2byte 49
- .2byte 51
- .2byte 64
- .2byte 67
- .2byte 68
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Stefan:: @ 85DD932
- .2byte 4
- .2byte 5
- .2byte 21
- .2byte 33
- .2byte 37
- .2byte 38
- .2byte 40
- .2byte 51
- .2byte 52
- .2byte 64
- .2byte 65
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Avery:: @ 85DD94A
- .2byte 2
- .2byte 3
- .2byte 7
- .2byte 8
- .2byte 22
- .2byte 23
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 51
- .2byte 67
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Dwane:: @ 85DD962
- .2byte 14
- .2byte 15
- .2byte 30
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 55
- .2byte 58
- .2byte 59
- .2byte 63
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Mckenna:: @ 85DD97A
- .2byte 27
- .2byte 29
- .2byte 30
- .2byte 32
- .2byte 36
- .2byte 48
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 57
- .2byte 67
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Camryn:: @ 85DD992
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 8
- .2byte 10
- .2byte 16
- .2byte 17
- .2byte 20
- .2byte 21
- .2byte 37
- .2byte 43
- .2byte 44
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Natasha:: @ 85DD9AC
- .2byte 1
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 9
- .2byte 11
- .2byte 12
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 51
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Austyn:: @ 85DD9C4
- .2byte 25
- .2byte 31
- .2byte 35
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 58
- .2byte 68
- .2byte 69
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Donovan:: @ 85DD9DE
- .2byte 10
- .2byte 16
- .2byte 17
- .2byte 24
- .2byte 25
- .2byte 43
- .2byte 44
- .2byte 47
- .2byte 49
- .2byte 53
- .2byte 59
- .2byte 60
- .2byte 64
- .2byte 65
- .2byte -1
-
-gSlateportBattleTentTrainerMons_Tamia:: @ 85DD9FC
- .2byte 2
- .2byte 6
- .2byte 9
- .2byte 13
- .2byte 17
- .2byte 19
- .2byte 20
- .2byte 24
- .2byte 27
- .2byte 29
- .2byte 30
- .2byte -1
diff --git a/data/battle_frontier/slateport_battle_tent_trainers.inc b/data/battle_frontier/slateport_battle_tent_trainers.inc
deleted file mode 100644
index 92a2f2518..000000000
--- a/data/battle_frontier/slateport_battle_tent_trainers.inc
+++ /dev/null
@@ -1,781 +0,0 @@
- .align 2
-gSlateportBattleTentTrainers:: @ 85DDA14
-@ 0
- .4byte FACILITY_CLASS_AROMA_LADY
- .string "JOLIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_WILL
- .2byte EC_WORD_I
- .2byte EC_WORD_BE
- .2byte EC_WORD_TOMORROW
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_FRIDAY
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_MONDAY
- .2byte EC_WORD_ELLIPSIS
- .4byte gSlateportBattleTentTrainerMons_Jolie
-
-@ 1
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "MALACHI$", 8
-@ pre-battle speech
- .2byte EC_WORD_BAD
- .2byte EC_WORD_NEWS
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_MOVE(SAND_TOMB)
-@ win speech
- .2byte EC_WORD_YEEHAW_EXCL
- .2byte -1
- .2byte -1
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_DONE
- .2byte EC_WORD_IT
-@ loss speech
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_LOST
- .2byte EC_WORD_IN
- .2byte EC_WORD_THIS
- .2byte EC_MOVE(SAND_TOMB)
- .2byte EC_WORD_ELLIPSIS
- .4byte gSlateportBattleTentTrainerMons_Malachi
-
-@ 2
- .4byte FACILITY_CLASS_TUBER_F
- .string "KELSIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_GO
- .2byte EC_WORD_EXCL_EXCL
- .2byte EC_WORD_MY
- .2byte EC_WORD_BATH
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_EXCL_EXCL
-@ win speech
- .2byte EC_WORD_YAHOO
- .2byte EC_WORD_EXCL_EXCL
- .2byte EC_WORD_MY
- .2byte EC_WORD_BATH
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_EXCL_EXCL
-@ loss speech
- .2byte EC_WORD_GWAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte EC_WORD_MY
- .2byte EC_WORD_BATH
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_EXCL_EXCL
- .4byte gSlateportBattleTentTrainerMons_Kelsie
-
-@ 3
- .4byte FACILITY_CLASS_TUBER_M
- .string "DAVON$", 8
-@ pre-battle speech
- .2byte EC_WORD_YEAH_YEAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_GREAT
- .2byte EC_MOVE(WHIRLPOOL)
- .2byte EC_WORD_ISN_T_IT_QUES
-@ win speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_A
- .2byte EC_MOVE(WHIRLPOOL)
- .2byte EC_WORD_YEAH_YEAH
- .2byte EC_WORD_EXCL_EXCL
-@ loss speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_GET
- .2byte EC_MOVE2(BEAT_UP)
- .2byte EC_WORD_IN
- .2byte EC_WORD_THAT
- .2byte EC_MOVE(WHIRLPOOL)
- .4byte gSlateportBattleTentTrainerMons_Davon
-
-@ 4
- .4byte FACILITY_CLASS_LADY
- .string "GLENDA$", 8
-@ pre-battle speech
- .2byte EC_WORD_CONVERSATION
- .2byte EC_WORD_CAN
- .2byte EC_WORD_WAIT
- .2byte EC_WORD_UNTIL
- .2byte EC_WORD_I
- .2byte EC_WORD_WIN
-@ win speech
- .2byte EC_WORD_FABULOUS
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_ROCK
-@ loss speech
- .2byte EC_WORD_NO
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_WASN_T
- .2byte EC_WORD_SERIOUS
- .4byte gSlateportBattleTentTrainerMons_Glenda
-
-@ 5
- .4byte FACILITY_CLASS_BEAUTY
- .string "HELENA$", 8
-@ pre-battle speech
- .2byte EC_WORD_DOES
- .2byte EC_WORD_MY
- .2byte EC_WORD_BEAUTY
- .2byte EC_WORD_INTIMIDATE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SO
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_BUT
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_BORING
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DO
- .2byte EC_WORD_SO
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_THIS
- .2byte EC_WORD_EXCL
- .4byte gSlateportBattleTentTrainerMons_Helena
-
-@ 6
- .4byte FACILITY_CLASS_RICH_BOY
- .string "RODOLFO$", 8
-@ pre-battle speech
- .2byte EC_WORD_GO
- .2byte EC_WORD_GET
- .2byte EC_WORD_A
- .2byte EC_POKEMON(WHISCASH)
- .2byte EC_WORD_FOR
- .2byte EC_WORD_ME
-@ win speech
- .2byte EC_WORD_AWW
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_POKEMON(WHISCASH)
-@ loss speech
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_A
- .2byte EC_POKEMON(WHISCASH)
- .2byte EC_WORD_BADLY
- .4byte gSlateportBattleTentTrainerMons_Rodolfo
-
-@ 7
- .4byte FACILITY_CLASS_POKEMANIAC
- .string "DAVION$", 8
-@ pre-battle speech
- .2byte EC_WORD_GRAAAH
- .2byte EC_WORD_GRAAAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte EC_WORD_GRAAAH
- .2byte EC_WORD_GRAAAH
- .2byte EC_WORD_EXCL_EXCL
-@ win speech
- .2byte EC_MOVE2(ROAR)
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_MOVE2(ROAR)
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_URGH
- .2byte EC_WORD_WAAAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gSlateportBattleTentTrainerMons_Davion
-
-@ 8
- .4byte FACILITY_CLASS_SWIMMER_M
- .string "KENDALL$", 8
-@ pre-battle speech
- .2byte EC_WORD_A_LITTLE
- .2byte EC_MOVE2(PETAL_DANCE)
- .2byte EC_WORD_TO
- .2byte EC_WORD_PLEASE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DO
- .2byte EC_WORD_THIS
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_FOR
- .2byte EC_WORD_WORK
-@ loss speech
- .2byte EC_WORD_HOW
- .2byte EC_WORD_COULD
- .2byte EC_WORD_YOU
- .2byte EC_MOVE2(POUND)
- .2byte EC_WORD_ME
- .2byte EC_WORD_QUES
- .4byte gSlateportBattleTentTrainerMons_Kendall
-
-@ 9
- .4byte FACILITY_CLASS_CAMPER
- .string "COLTEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_GO
- .2byte EC_WORD_RUN
- .2byte EC_WORD_AROUND
-@ win speech
- .2byte EC_WORD_YAY
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_RUN
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_A
- .2byte EC_WORD_SWIFT_SWIM
- .2byte EC_WORD_WOULD
- .2byte EC_WORD_BE
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_TOO
- .4byte gSlateportBattleTentTrainerMons_Colten
-
-@ 10
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "IRVIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_A
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_AT
- .2byte EC_WORD_MY
- .2byte EC_MOVE(CONFUSE_RAY)
-@ win speech
- .2byte EC_WORD_YAHOO
- .2byte EC_WORD_MY
- .2byte EC_MOVE(CONFUSE_RAY)
- .2byte EC_WORD_IS
- .2byte EC_WORD_THE
- .2byte EC_WORD_BEST
-@ loss speech
- .2byte EC_WORD_GWAH
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_EXCL
- .4byte gSlateportBattleTentTrainerMons_Irvin
-
-@ 11
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "SHAUN$", 8
-@ pre-battle speech
- .2byte EC_WORD_LISTEN
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_YOU
- .2byte EC_WORD_AREN_T
- .2byte EC_WORD_VERY
- .2byte EC_WORD_GOOD
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte EC_WORD_I
- .2byte EC_WORD_WAS
- .2byte EC_WORD_RIGHT
-@ loss speech
- .2byte EC_WORD_YES
- .2byte EC_WORD_YES
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_QUITE
- .2byte EC_WORD_SOMETHING
- .4byte gSlateportBattleTentTrainerMons_Shaun
-
-@ 12
- .4byte FACILITY_CLASS_GUITARIST
- .string "KYLER$", 8
-@ pre-battle speech
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_YAY
-@ loss speech
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
- .2byte EC_WORD_WOW
- .4byte gSlateportBattleTentTrainerMons_Kyler
-
-@ 13
- .4byte FACILITY_CLASS_SCHOOL_KID_F
- .string "MAGGIE$", 8
-@ pre-battle speech
- .2byte EC_POKEMON(VULPIX)
- .2byte EC_POKEMON(XATU)
- .2byte EC_POKEMON2(UMBREON)
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_UM
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_POKEMON(NOSEPASS)
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_UM
- .2byte EC_POKEMON(SEVIPER)
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_POKEMON(NOSEPASS)
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_UM
- .2byte EC_POKEMON2(SNORLAX)
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_UH_OH
- .4byte gSlateportBattleTentTrainerMons_Maggie
-
-@ 14
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "STEPHON$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_AN
- .2byte EC_WORD_EGG
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_ENJOY
- .2byte EC_WORD_THIS
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_VICTORY
-@ loss speech
- .2byte EC_WORD_AWFUL
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_JUST
- .2byte EC_WORD_AWFUL
- .2byte EC_WORD_EXCL_EXCL
- .4byte gSlateportBattleTentTrainerMons_Stephon
-
-@ 15
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "REBECCA$", 8
-@ pre-battle speech
- .2byte EC_WORD_THAT
- .2byte EC_WORD_EGG
- .2byte EC_WORD_HAS
- .2byte EC_WORD_A
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_SHINE
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_SMELL
- .2byte EC_WORD_THAT
- .2byte EC_WORD_STENCH
-@ loss speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_ME
- .2byte EC_WORD_STOP
- .2byte EC_WORD_ELLIPSIS
- .4byte gSlateportBattleTentTrainerMons_Rebecca
-
-@ 16
- .4byte FACILITY_CLASS_POKEFAN_M
- .string "REGGIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_COME
- .2byte EC_WORD_BEFORE
- .2byte EC_WORD_MONEY
- .2byte EC_WORD_OR
- .2byte EC_WORD_FAMILY
-@ win speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_IS
- .2byte EC_WORD_MAKING
- .2byte EC_WORD_ME
- .2byte EC_WORD_STRONG
-@ loss speech
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHY
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SO
- .2byte EC_WORD_THICK
- .2byte EC_WORD_ELLIPSIS
- .4byte gSlateportBattleTentTrainerMons_Reggie
-
-@ 17
- .4byte FACILITY_CLASS_POKEFAN_F
- .string "JANAE$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_JUST
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_TOUGH
- .2byte EC_WORD_LOOK
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_HOW
- .2byte EC_WORD_YOU
- .2byte EC_MOVE2(STRUGGLE)
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_A
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_AND
- .2byte EC_WORD_AWFUL
- .2byte EC_WORD_TRAINER
- .4byte gSlateportBattleTentTrainerMons_Janae
-
-@ 18
- .4byte FACILITY_CLASS_EXPERT_M
- .string "CAIDEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(CURSE)
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BREAK
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_SPIRIT
-@ win speech
- .2byte EC_MOVE2(CURSE)
- .2byte EC_WORD_QUES
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_LIE
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_MOVE2(CURSE)
- .2byte EC_WORD_WILL
- .2byte EC_WORD_LAST
- .2byte EC_WORD_FOREVER
- .2byte -1
- .4byte gSlateportBattleTentTrainerMons_Caiden
-
-@ 19
- .4byte FACILITY_CLASS_EXPERT_F
- .string "KIRSTEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_A
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SAID
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_BUT
- .2byte EC_WORD_NOT
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_ENOUGH
-@ loss speech
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_I
- .2byte EC_WORD_SURRENDER
- .2byte EC_WORD_TO
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE(STRENGTH)
- .4byte gSlateportBattleTentTrainerMons_Kirsten
-
-@ 20
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "KURTIS$", 8
-@ pre-battle speech
- .2byte EC_WORD_SORRY
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_GET
- .2byte EC_MOVE2(BEAT_UP)
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SAID
- .2byte EC_WORD_WE
- .2byte EC_WORD_WOULD
- .2byte EC_MOVE2(POUND)
- .2byte EC_WORD_YOU
-@ loss speech
- .2byte EC_WORD_HOW
- .2byte EC_WORD_DID
- .2byte EC_WORD_I
- .2byte EC_WORD_GET
- .2byte EC_MOVE2(BEAT_UP)
- .2byte EC_WORD_QUES
- .4byte gSlateportBattleTentTrainerMons_Kurtis
-
-@ 21
- .4byte FACILITY_CLASS_FISHERMAN
- .string "STEFAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ONLY
- .2byte EC_WORD_WANT
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_POKEMON
- .2byte -1
-@ win speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_IS
- .2byte EC_WORD_IT
- .2byte EC_WORD_TO
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_KIND
- .2byte EC_WORD_OF
- .2byte EC_WORD_AWESOME
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .4byte gSlateportBattleTentTrainerMons_Stefan
-
-@ 22
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "AVERY$", 8
-@ pre-battle speech
- .2byte EC_WORD_TOYS
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_MORE
- .2byte EC_WORD_TOYS
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_SOME
- .2byte EC_WORD_EASY
- .2byte EC_WORD_MONEY
- .2byte EC_WORD_FAST
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_WORK
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MONEY
- .4byte gSlateportBattleTentTrainerMons_Avery
-
-@ 23
- .4byte FACILITY_CLASS_NINJA_BOY
- .string "DWANE$", 8
-@ pre-battle speech
- .2byte EC_WORD_MMM
- .2byte EC_WORD_TASTY
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_WONDER
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_MMM
- .2byte EC_WORD_MMM
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_KNOW
-@ loss speech
- .2byte EC_WORD_MMM
- .2byte EC_WORD_MMM
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_OH_YEAH
- .2byte EC_WORD_THIS_IS_IT_EXCL
- .2byte -1
- .4byte gSlateportBattleTentTrainerMons_Dwane
-
-@ 24
- .4byte FACILITY_CLASS_PARASOL_LADY
- .string "MCKENNA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_SMALL
- .2byte EC_WORD_TALK
- .2byte EC_WORD_LET_S
- .2byte EC_WORD_GO
-@ win speech
- .2byte EC_WORD_YUP
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_THAT
- .2byte -1
- .2byte -1
- .2byte -1
-@ loss speech
- .2byte EC_WORD_KTHX_BYE
- .2byte -1
- .2byte -1
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gSlateportBattleTentTrainerMons_Mckenna
-
-@ 25
- .4byte FACILITY_CLASS_SWIMMER_F
- .string "CAMRYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_MR
- .2byte EC_WORD_JUDGE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_OUR
- .2byte EC_WORD_TRUST
-@ win speech
- .2byte EC_WORD_YES_SIR_EXCL
- .2byte EC_WORD_WE_RE
- .2byte EC_WORD_NO_1
- .2byte EC_WORD_IN
- .2byte EC_WORD_THIS
- .2byte EC_WORD_CONTEST
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_GIVE_UP
- .2byte EC_WORD_MY
- .2byte EC_WORD_IDOL
- .2byte EC_WORD_DREAM
- .4byte gSlateportBattleTentTrainerMons_Camryn
-
-@ 26
- .4byte FACILITY_CLASS_PICNICKER
- .string "NATASHA$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME_OVER
- .2byte EC_WORD_TO
- .2byte EC_WORD_MY
- .2byte EC_WORD_PLACE
- .2byte EC_WORD_OK_QUES
- .2byte -1
-@ win speech
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_OVER
- .2byte EC_WORD_IT
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BE
- .2byte EC_WORD_GREAT
-@ loss speech
- .2byte EC_WORD_AWW
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_COME_OVER
- .2byte EC_WORD_QUES
- .2byte -1
- .4byte gSlateportBattleTentTrainerMons_Natasha
-
-@ 27
- .4byte FACILITY_CLASS_SAILOR
- .string "AUSTYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_CARE
- .2byte EC_WORD_HOW
- .2byte EC_WORD_WE
- .2byte EC_WORD_MATCH_UP
-@ win speech
- .2byte EC_WORD_HAH
- .2byte EC_WORD_BACK
- .2byte EC_WORD_TO
- .2byte EC_WORD_SCHOOL
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_STUDY
- .2byte EC_WORD_MY
- .2byte EC_WORD_LESSONS
- .4byte gSlateportBattleTentTrainerMons_Austyn
-
-@ 28
- .4byte FACILITY_CLASS_COLLECTOR
- .string "DONOVAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_FEELING
- .2byte EC_WORD_SLIMY
- .2byte EC_WORD_ALL
- .2byte EC_WORD_OVER
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_GOING
- .2byte EC_WORD_DOWN
- .2byte EC_WORD_THE
- .2byte EC_MOVE2(MEGA_DRAIN)
- .2byte EC_WORD_HAHAHA
-@ loss speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NATURALLY
- .2byte EC_WORD_SLIMY
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_I_AM
- .4byte gSlateportBattleTentTrainerMons_Donovan
-
-@ 29
- .4byte FACILITY_CLASS_LASS
- .string "TAMIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_ANGRY
- .2byte EC_WORD_WITH
- .2byte EC_WORD_MY
- .2byte EC_WORD_FATHER
- .2byte EC_WORD_ELLIPSIS
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_DISLIKE
- .2byte EC_WORD_MY
- .2byte EC_WORD_FATHER
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_JUST
- .2byte EC_WORD_SO
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_MY
- .2byte EC_WORD_FATHER
- .4byte gSlateportBattleTentTrainerMons_Tamia
diff --git a/data/battle_frontier/verdanturf_battle_tent_mons.inc b/data/battle_frontier/verdanturf_battle_tent_mons.inc
deleted file mode 100644
index ec3404b17..000000000
--- a/data/battle_frontier/verdanturf_battle_tent_mons.inc
+++ /dev/null
@@ -1,316 +0,0 @@
- .align 2
-gVerdanturfBattleTentMons:: @ 85DEC28
-@ 0
- .2byte SPECIES_POOCHYENA
- .2byte MOVE_ROAR, MOVE_THIEF, MOVE_BITE, MOVE_HOWL
- .byte BATTLE_FRONTIER_ITEM_BLACK_GLASSES
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 1
- .2byte SPECIES_ZIGZAGOON
- .2byte MOVE_COVET, MOVE_GROWL, MOVE_PIN_MISSILE, MOVE_MUD_SPORT
- .byte BATTLE_FRONTIER_ITEM_SITRUS_BERRY
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_ADAMANT
-
-@ 2
- .2byte SPECIES_DUSTOX
- .2byte MOVE_CONFUSION, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_FLASH
- .byte BATTLE_FRONTIER_ITEM_SILVER_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE
- .4byte NATURE_MODEST
-
-@ 3
- .2byte SPECIES_TAILLOW
- .2byte MOVE_AGILITY, MOVE_DOUBLE_TEAM, MOVE_WING_ATTACK, MOVE_GROWL
- .byte BATTLE_FRONTIER_ITEM_ORAN_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 4
- .2byte SPECIES_SHROOMISH
- .2byte MOVE_HEADBUTT, MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_FLASH
- .byte BATTLE_FRONTIER_ITEM_LUM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_RASH
-
-@ 5
- .2byte SPECIES_MACHOP
- .2byte MOVE_LOW_KICK, MOVE_LEER, MOVE_FOCUS_ENERGY, MOVE_ENCORE
- .byte BATTLE_FRONTIER_ITEM_PERSIM_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_LONELY
-
-@ 6
- .2byte SPECIES_MAGIKARP
- .2byte MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE
- .byte BATTLE_FRONTIER_ITEM_SILK_SCARF
- .byte F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 7
- .2byte SPECIES_BARBOACH
- .2byte MOVE_MUD_SLAP, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_SPARK
- .byte BATTLE_FRONTIER_ITEM_ASPEAR_BERRY
- .byte F_EV_SPREAD_SPEED
- .4byte NATURE_HASTY
-
-@ 8
- .2byte SPECIES_WINGULL
- .2byte MOVE_ATTRACT, MOVE_TWISTER, MOVE_WING_ATTACK, MOVE_SUPERSONIC
- .byte BATTLE_FRONTIER_ITEM_DRAGON_FANG
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_IMPISH
-
-@ 9
- .2byte SPECIES_ARON
- .2byte MOVE_ENDEAVOR, MOVE_METAL_CLAW, MOVE_TACKLE, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_PECHA_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_HARDY
-
-@ 10
- .2byte SPECIES_NUMEL
- .2byte MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_GROWL
- .byte BATTLE_FRONTIER_ITEM_CHARCOAL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_SASSY
-
-@ 11
- .2byte SPECIES_SWALOT
- .2byte MOVE_YAWN, MOVE_SLUDGE, MOVE_ACID_ARMOR, MOVE_AMNESIA
- .byte BATTLE_FRONTIER_ITEM_POISON_BARB
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 12
- .2byte SPECIES_KECLEON
- .2byte MOVE_SUBSTITUTE, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BIND
- .byte BATTLE_FRONTIER_ITEM_LAX_INCENSE
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIET
-
-@ 13
- .2byte SPECIES_BALTOY
- .2byte MOVE_SANDSTORM, MOVE_FLASH, MOVE_SELF_DESTRUCT, MOVE_HARDEN
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAUGHTY
-
-@ 14
- .2byte SPECIES_NINJASK
- .2byte MOVE_DIG, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_LEECH_LIFE
- .byte BATTLE_FRONTIER_ITEM_PETAYA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SASSY
-
-@ 15
- .2byte SPECIES_MAKUHITA
- .2byte MOVE_BULK_UP, MOVE_ARM_THRUST, MOVE_SMELLING_SALT, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_SALAC_BERRY
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAUGHTY
-
-@ 16
- .2byte SPECIES_SWABLU
- .2byte MOVE_REFRESH, MOVE_SAFEGUARD, MOVE_ATTRACT, MOVE_MIRROR_MOVE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_MILD
-
-@ 17
- .2byte SPECIES_GOLDEEN
- .2byte MOVE_WATERFALL, MOVE_MUD_SPORT, MOVE_SUPERSONIC, MOVE_DOUBLE_TEAM
- .byte BATTLE_FRONTIER_ITEM_MYSTIC_WATER
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_GENTLE
-
-@ 18
- .2byte SPECIES_LOTAD
- .2byte MOVE_GROWL, MOVE_WATER_GUN, MOVE_MEGA_DRAIN, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_IAPAPA_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 19
- .2byte SPECIES_NUMEL
- .2byte MOVE_MAGNITUDE, MOVE_EMBER, MOVE_GROWL, MOVE_DEFENSE_CURL
- .byte BATTLE_FRONTIER_ITEM_CHARCOAL
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK
- .4byte NATURE_RELAXED
-
-@ 20
- .2byte SPECIES_LINOONE
- .2byte MOVE_HEADBUTT, MOVE_TICKLE, MOVE_PROTECT, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_IMPISH
-
-@ 21
- .2byte SPECIES_SEVIPER
- .2byte MOVE_WRAP, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SWAGGER
- .byte BATTLE_FRONTIER_ITEM_ASPEAR_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_LONELY
-
-@ 22
- .2byte SPECIES_SKARMORY
- .2byte MOVE_AIR_CUTTER, MOVE_SANDSTORM, MOVE_LEER, MOVE_AGILITY
- .byte BATTLE_FRONTIER_ITEM_MACHO_BRACE
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_BASHFUL
-
-@ 23
- .2byte SPECIES_SWELLOW
- .2byte MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC
- .byte BATTLE_FRONTIER_ITEM_SHARP_BEAK
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_NAUGHTY
-
-@ 24
- .2byte SPECIES_GOLDEEN
- .2byte MOVE_PECK, MOVE_SUPERSONIC, MOVE_PSYBEAM, MOVE_RAIN_DANCE
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_GENTLE
-
-@ 25
- .2byte SPECIES_ELECTRIKE
- .2byte MOVE_SHOCK_WAVE, MOVE_TACKLE, MOVE_CHARGE, MOVE_THUNDER_WAVE
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_MILD
-
-@ 26
- .2byte SPECIES_NUZLEAF
- .2byte MOVE_SUNNY_DAY, MOVE_TORMENT, MOVE_FAKE_OUT, MOVE_THIEF
- .byte BATTLE_FRONTIER_ITEM_BLACK_GLASSES
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_BOLD
-
-@ 27
- .2byte SPECIES_ARON
- .2byte MOVE_TAKE_DOWN, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_QUICK_CLAW
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_MODEST
-
-@ 28
- .2byte SPECIES_MIGHTYENA
- .2byte MOVE_HOWL, MOVE_TAKE_DOWN, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK
- .byte BATTLE_FRONTIER_ITEM_KINGS_ROCK
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 29
- .2byte SPECIES_SOLROCK
- .2byte MOVE_HARDEN, MOVE_FIRE_SPIN, MOVE_MIMIC, MOVE_PSYWAVE
- .byte BATTLE_FRONTIER_ITEM_TWISTED_SPOON
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_ADAMANT
-
-@ 30
- .2byte SPECIES_GRAVELER
- .2byte MOVE_ROLLOUT, MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_BLOCK
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_IMPISH
-
-@ 31
- .2byte SPECIES_KADABRA
- .2byte MOVE_ENCORE, MOVE_PSYBEAM, MOVE_DISABLE, MOVE_KINESIS
- .byte BATTLE_FRONTIER_ITEM_FOCUS_BAND
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP
- .4byte NATURE_QUIET
-
-@ 32
- .2byte SPECIES_VOLTORB
- .2byte MOVE_PROTECT, MOVE_SELF_DESTRUCT, MOVE_SPARK, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_BASHFUL
-
-@ 33
- .2byte SPECIES_MAGNEMITE
- .2byte MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE
- .byte BATTLE_FRONTIER_ITEM_MAGNET
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_SERIOUS
-
-@ 34
- .2byte SPECIES_PELIPPER
- .2byte MOVE_WING_ATTACK, MOVE_MIST, MOVE_AGILITY, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_FIGY_BERRY
- .byte 0
- .4byte NATURE_BRAVE
-
-@ 35
- .2byte SPECIES_LOUDRED
- .2byte MOVE_HOWL, MOVE_UPROAR, MOVE_REST, MOVE_SCREECH
- .byte BATTLE_FRONTIER_ITEM_LEFTOVERS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_CALM
-
-@ 36
- .2byte SPECIES_MARILL
- .2byte MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_JOLLY
-
-@ 37
- .2byte SPECIES_TRAPINCH
- .2byte MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_FAINT_ATTACK
- .byte BATTLE_FRONTIER_ITEM_NONE
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_NAUGHTY
-
-@ 38
- .2byte SPECIES_TENTACOOL
- .2byte MOVE_SCREECH, MOVE_CONFUSE_RAY, MOVE_WRAP, MOVE_ATTRACT
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 39
- .2byte SPECIES_VIGOROTH
- .2byte MOVE_ENCORE, MOVE_SLACK_OFF, MOVE_YAWN, MOVE_SECRET_POWER
- .byte BATTLE_FRONTIER_ITEM_MENTAL_HERB
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK
- .4byte NATURE_QUIRKY
-
-@ 40
- .2byte SPECIES_WAILMER
- .2byte MOVE_WATER_PULSE, MOVE_ROLLOUT, MOVE_CURSE, MOVE_PROTECT
- .byte BATTLE_FRONTIER_ITEM_WHITE_HERB
- .byte F_EV_SPREAD_HP
- .4byte NATURE_RELAXED
-
-@ 41
- .2byte SPECIES_ILLUMISE
- .2byte MOVE_TACKLE, MOVE_SWEET_SCENT, MOVE_WISH, MOVE_ENCORE
- .byte BATTLE_FRONTIER_ITEM_BRIGHT_POWDER
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_QUIRKY
-
-@ 42
- .2byte SPECIES_MACHOKE
- .2byte MOVE_LEER, MOVE_KARATE_CHOP, MOVE_BULK_UP, MOVE_REST
- .byte BATTLE_FRONTIER_ITEM_CHESTO_BERRY
- .byte F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK
- .4byte NATURE_CALM
-
-@ 43
- .2byte SPECIES_WHISMUR
- .2byte MOVE_SECRET_POWER, MOVE_SUPERSONIC, MOVE_STOMP, MOVE_ROAR
- .byte BATTLE_FRONTIER_ITEM_RAWST_BERRY
- .byte F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED
- .4byte NATURE_QUIRKY
-
-@ 44
- .2byte SPECIES_CACNEA
- .2byte MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_NEEDLE_ARM, MOVE_GROWTH
- .byte BATTLE_FRONTIER_ITEM_SCOPE_LENS
- .byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
- .4byte NATURE_SERIOUS
diff --git a/data/battle_frontier/verdanturf_battle_tent_trainer_mons.inc b/data/battle_frontier/verdanturf_battle_tent_trainer_mons.inc
deleted file mode 100644
index eda9f200a..000000000
--- a/data/battle_frontier/verdanturf_battle_tent_trainer_mons.inc
+++ /dev/null
@@ -1,254 +0,0 @@
- .align 1
-gVerdanturfBattleTentTrainerMons_Brenna:: @ 85DE48C
- .2byte 4
- .2byte 11
- .2byte 13
- .2byte 18
- .2byte 26
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Dilan:: @ 85DE498
- .2byte 30
- .2byte 37
- .2byte 13
- .2byte 29
- .2byte 42
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Eliana:: @ 85DE4A4
- .2byte 6
- .2byte 7
- .2byte 17
- .2byte 18
- .2byte 40
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Markus:: @ 85DE4B0
- .2byte 6
- .2byte 7
- .2byte 18
- .2byte 24
- .2byte 38
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Caitlyn:: @ 85DE4BC
- .2byte 0
- .2byte 12
- .2byte 25
- .2byte 28
- .2byte 22
- .2byte 44
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Desiree:: @ 85DE4CA
- .2byte 8
- .2byte 12
- .2byte 21
- .2byte 22
- .2byte 31
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Ronald:: @ 85DE4D6
- .2byte 1
- .2byte 20
- .2byte 23
- .2byte 25
- .2byte 32
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Ashten:: @ 85DE4E2
- .2byte 9
- .2byte 12
- .2byte 27
- .2byte 37
- .2byte 43
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Gerard:: @ 85DE4EE
- .2byte 36
- .2byte 7
- .2byte 34
- .2byte 6
- .2byte 40
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Bradly:: @ 85DE4FA
- .2byte 26
- .2byte 3
- .2byte 0
- .2byte 2
- .2byte 17
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Dennis:: @ 85DE506
- .2byte 14
- .2byte 37
- .2byte 2
- .2byte 38
- .2byte 27
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Prestin:: @ 85DE512
- .2byte 31
- .2byte 28
- .2byte 22
- .2byte 25
- .2byte 44
- .2byte 43
- .2byte 41
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Ernesto:: @ 85DE522
- .2byte 33
- .2byte 32
- .2byte 25
- .2byte 35
- .2byte 34
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Nala:: @ 85DE52E
- .2byte 1
- .2byte 4
- .2byte 8
- .2byte 11
- .2byte 17
- .2byte 40
- .2byte 34
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Darnell:: @ 85DE53E
- .2byte 0
- .2byte 29
- .2byte 35
- .2byte 37
- .2byte 39
- .2byte 43
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Ashlyn:: @ 85DE54C
- .2byte 29
- .2byte 36
- .2byte 32
- .2byte 30
- .2byte 17
- .2byte 6
- .2byte 44
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Addison:: @ 85DE55C
- .2byte 0
- .2byte 1
- .2byte 16
- .2byte 31
- .2byte 6
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Justine:: @ 85DE568
- .2byte 0
- .2byte 1
- .2byte 16
- .2byte 36
- .2byte 18
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Tyson:: @ 85DE574
- .2byte 5
- .2byte 15
- .2byte 22
- .2byte 30
- .2byte 16
- .2byte 39
- .2byte 43
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Laila:: @ 85DE584
- .2byte 5
- .2byte 15
- .2byte 19
- .2byte 24
- .2byte 41
- .2byte 43
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Waren:: @ 85DE592
- .2byte 0
- .2byte 9
- .2byte 10
- .2byte 11
- .2byte 23
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Tobias:: @ 85DE59E
- .2byte 6
- .2byte 7
- .2byte 24
- .2byte 38
- .2byte 40
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Josiah:: @ 85DE5AA
- .2byte 8
- .2byte 16
- .2byte 23
- .2byte 34
- .2byte 3
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Dion:: @ 85DE5B6
- .2byte 14
- .2byte 2
- .2byte 11
- .2byte 39
- .2byte 21
- .2byte 38
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Kenzie:: @ 85DE5C4
- .2byte 18
- .2byte 10
- .2byte 16
- .2byte 26
- .2byte 25
- .2byte 27
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Lillian:: @ 85DE5D2
- .2byte 24
- .2byte 34
- .2byte 36
- .2byte 38
- .2byte 5
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Lesley:: @ 85DE5DE
- .2byte 26
- .2byte 0
- .2byte 18
- .2byte 13
- .2byte 25
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Marquis:: @ 85DE5EA
- .2byte 24
- .2byte 34
- .2byte 5
- .2byte 15
- .2byte 7
- .2byte 42
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Freddy:: @ 85DE5F8
- .2byte 18
- .2byte 21
- .2byte 26
- .2byte 29
- .2byte 41
- .2byte -1
-
-gVerdanturfBattleTentTrainerMons_Cecilia:: @ 85DE604
- .2byte 23
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 31
- .2byte -1
diff --git a/data/battle_frontier/verdanturf_battle_tent_trainers.inc b/data/battle_frontier/verdanturf_battle_tent_trainers.inc
deleted file mode 100644
index 5f4dad133..000000000
--- a/data/battle_frontier/verdanturf_battle_tent_trainers.inc
+++ /dev/null
@@ -1,781 +0,0 @@
- .align 2
-gVerdanturfBattleTentTrainers:: @ 85DE610
-@ 0
- .4byte FACILITY_CLASS_AROMA_LADY
- .string "BRENNA$", 8
-@ pre-battle speech
- .2byte EC_WORD_NO
- .2byte EC_WORD_DAYS
- .2byte EC_WORD_GO
- .2byte EC_WORD_WITHOUT
- .2byte EC_WORD_MY
- .2byte EC_MOVE(FAKE_TEARS)
-@ win speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_SO
- .2byte EC_WORD_REFRESHING
- .2byte EC_WORD_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_ALL
- .2byte EC_WORD_I
- .2byte EC_WORD_EVER
- .2byte EC_WORD_GET
- .2byte EC_WORD_IS
- .2byte EC_MOVE(TORMENT)
- .4byte gVerdanturfBattleTentTrainerMons_Brenna
-
-@ 1
- .4byte FACILITY_CLASS_RUIN_MANIAC
- .string "DILAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_HOW
- .2byte EC_WORD_BORED
- .2byte EC_WORD_I_AM
-@ win speech
- .2byte EC_WORD_LOSING
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_AT
- .2byte EC_WORD_ALL
- .2byte EC_WORD_ELLIPSIS
-@ loss speech
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_EXCL_EXCL
- .2byte EC_WORD_BYE_BYE
- .2byte EC_WORD_TO
- .2byte EC_WORD_BEING
- .2byte EC_WORD_BORED
- .4byte gVerdanturfBattleTentTrainerMons_Dilan
-
-@ 2
- .4byte FACILITY_CLASS_TUBER_F
- .string "ELIANA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_GOING
- .2byte EC_WORD_ON
- .2byte EC_WORD_A
- .2byte EC_WORD_VACATION
- .2byte EC_WORD_SOON
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_GET
- .2byte EC_WORD_SOME
- .2byte EC_WORD_MONEY
-@ loss speech
- .2byte EC_WORD_NO
- .2byte EC_WORD_SLEEP
- .2byte EC_WORD_UNTIL
- .2byte EC_WORD_I
- .2byte EC_WORD_GET
- .2byte EC_WORD_HOME
- .4byte gVerdanturfBattleTentTrainerMons_Eliana
-
-@ 3
- .4byte FACILITY_CLASS_TUBER_M
- .string "MARKUS$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_SMART
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_IF_I_LOSE
- .2byte EC_WORD_I
- .2byte EC_MOVE(SELF_DESTRUCT)
-@ win speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_NON_STOP
- .2byte EC_MOVE2(EXPLOSION)
- .2byte EC_WORD_OF
- .2byte EC_WORD_JOY
-@ loss speech
- .2byte EC_WORD_I_VE
- .2byte EC_WORD_LOST
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_TIME
- .2byte EC_WORD_TO
- .2byte EC_MOVE(SELF_DESTRUCT)
- .4byte gVerdanturfBattleTentTrainerMons_Markus
-
-@ 4
- .4byte FACILITY_CLASS_LADY
- .string "CAITLYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_BORED
- .2byte EC_WORD_OF
- .2byte EC_WORD_BEING
- .2byte EC_WORD_AN
- .2byte EC_WORD_IDOL
-@ win speech
- .2byte EC_WORD_A
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_IS
- .2byte EC_WORD_BEST
- .2byte EC_WORD_FOR
- .2byte EC_WORD_HAPPINESS
-@ loss speech
- .2byte EC_WORD_LOSING
- .2byte EC_WORD_DOESN_T
- .2byte EC_WORD_BUG
- .2byte EC_WORD_ME
- .2byte EC_WORD_AT
- .2byte EC_WORD_ALL
- .4byte gVerdanturfBattleTentTrainerMons_Caitlyn
-
-@ 5
- .4byte FACILITY_CLASS_BEAUTY
- .string "DESIREE$", 8
-@ pre-battle speech
- .2byte EC_WORD_DOESN_T
- .2byte EC_WORD_MY
- .2byte EC_WORD_BEAUTY
- .2byte EC_MOVE(ASTONISH)
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_DID
- .2byte EC_WORD_I
- .2byte EC_WORD_INTIMIDATE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_BEAUTY
- .2byte EC_WORD_DID
- .2byte EC_WORD_NOTHING
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
- .4byte gVerdanturfBattleTentTrainerMons_Desiree
-
-@ 6
- .4byte FACILITY_CLASS_RICH_BOY
- .string "RONALD$", 8
-@ pre-battle speech
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_SERIOUSLY
- .2byte -1
-@ win speech
- .2byte EC_WORD_GIVE_UP
- .2byte EC_WORD_QUES
- .2byte -1
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_WEAK
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_TO
- .2byte EC_WORD_DO
- .2byte EC_WORD_A
- .2byte EC_MOVE2(BATON_PASS)
- .4byte gVerdanturfBattleTentTrainerMons_Ronald
-
-@ 7
- .4byte FACILITY_CLASS_POKEMANIAC
- .string "ASHTEN$", 8
-@ pre-battle speech
- .2byte EC_WORD_OH_YEAH
- .2byte EC_WORD_ANOTHER
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_EXCL
- .2byte -1
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_ARE
- .2byte EC_WORD_WIMPY
- .2byte EC_WORD_AND
- .2byte EC_WORD_BORING
-@ loss speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_AN
- .2byte EC_WORD_EXCITING
- .2byte EC_WORD_LOSS
- .2byte EC_WORD_WOW
- .2byte EC_WORD_EXCL
- .4byte gVerdanturfBattleTentTrainerMons_Ashten
-
-@ 8
- .4byte FACILITY_CLASS_SWIMMER_M
- .string "GERARD$", 8
-@ pre-battle speech
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_AT
- .2byte EC_WORD_MY
- .2byte EC_WORD_SUPER
- .2byte EC_MOVE2(TEETER_DANCE)
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_THAT_WAS
- .2byte EC_WORD_HARD
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_AM
- .2byte EC_WORD_I
- .2byte EC_WORD_OK_QUES
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WON_T
- .2byte EC_WORD_FORGIVE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_FOR
- .2byte EC_WORD_THAT
- .4byte gVerdanturfBattleTentTrainerMons_Gerard
-
-@ 9
- .4byte FACILITY_CLASS_CAMPER
- .string "BRADLY$", 8
-@ pre-battle speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_LONESOME
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I
- .2byte EC_WORD_VACATION
- .2byte EC_WORD_ALONE
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_MOVE(WITHDRAW)
- .2byte EC_WORD_INSIDE
- .2byte EC_WORD_MY
- .2byte EC_WORD_SHELL_ARMOR
-@ loss speech
- .2byte EC_WORD_OH
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte EC_WORD_ALONE
- .2byte EC_WORD_AS
- .2byte EC_WORD_ALWAYS
- .4byte gVerdanturfBattleTentTrainerMons_Bradly
-
-@ 10
- .4byte FACILITY_CLASS_BUG_MANIAC
- .string "DENNIS$", 8
-@ pre-battle speech
- .2byte EC_WORD_ARE
- .2byte EC_WORD_YOU
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_STRONG
- .2byte EC_WORD_QUES
- .2byte -1
-@ win speech
- .2byte EC_WORD_WAHAHAHA
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_WAHAHAHA
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
-@ loss speech
- .2byte EC_WORD_NICE
- .2byte EC_WORD_GOING
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_I
- .2byte EC_WORD_WAS
- .2byte EC_WORD_CHILD_S_PLAY
- .4byte gVerdanturfBattleTentTrainerMons_Dennis
-
-@ 11
- .4byte FACILITY_CLASS_GENTLEMAN
- .string "PRESTIN$", 8
-@ pre-battle speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_A
- .2byte EC_MOVE(NIGHTMARE)
- .2byte EC_WORD_FOR
- .2byte EC_WORD_YOU
-@ win speech
- .2byte EC_WORD_FORGIVE
- .2byte EC_WORD_ME
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_DREAM
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_TO
- .2byte EC_WORD_WAKE_UP
- .2byte EC_WORD_FROM
- .2byte EC_WORD_THIS
- .4byte gVerdanturfBattleTentTrainerMons_Prestin
-
-@ 12
- .4byte FACILITY_CLASS_GUITARIST
- .string "ERNESTO$", 8
-@ pre-battle speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_PARTY
- .2byte EC_WORD_GOES
- .2byte EC_WORD_ON
- .2byte EC_WORD_FOREVER
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_THE
- .2byte EC_WORD_MUSIC
- .2byte EC_WORD_PLAYS
- .2byte EC_WORD_ON
- .2byte EC_WORD_WITHOUT
- .2byte EC_WORD_END
-@ loss speech
- .2byte EC_WORD_NO
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_THE
- .2byte EC_WORD_MUSIC
- .2byte EC_WORD_CAN_T
- .2byte EC_WORD_STOP
- .4byte gVerdanturfBattleTentTrainerMons_Ernesto
-
-@ 13
- .4byte FACILITY_CLASS_SCHOOL_KID_F
- .string "NALA$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WANT
- .2byte EC_WORD_THE
- .2byte EC_WORD_WORLD
- .2byte EC_WORD_MOVIE
- .2byte EC_WORD_COLLECTION
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_RADIO
- .2byte EC_WORD_VERY
- .2byte EC_WORD_MUCH
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_REFUSE
- .2byte EC_WORD_TO
- .2byte EC_WORD_BELIEVE
- .2byte EC_WORD_THIS
- .2byte EC_WORD_EXCL
- .4byte gVerdanturfBattleTentTrainerMons_Nala
-
-@ 14
- .4byte FACILITY_CLASS_COOLTRAINER_M
- .string "DARNELL$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WILL
- .2byte EC_WORD_GO_EASY
- .2byte EC_WORD_ON
- .2byte EC_WORD_YOU
- .2byte -1
-@ win speech
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE2(FRUSTRATION)
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_BE
- .2byte EC_WORD_HIDDEN
- .2byte EC_WORD_AWAY
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_TOO
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_TO
- .2byte EC_WORD_TAKE
- .2byte EC_WORD_ELLIPSIS
- .4byte gVerdanturfBattleTentTrainerMons_Darnell
-
-@ 15
- .4byte FACILITY_CLASS_COOLTRAINER_F
- .string "ASHLYN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_LOOK
- .2byte EC_WORD_TOUGH
- .2byte EC_WORD_DO
- .2byte EC_WORD_I
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_NOT
- .2byte EC_WORD_OVER
- .2byte EC_WORD_YOUR
- .2byte EC_MOVE2(TAUNT)
- .2byte EC_WORD_YET
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gVerdanturfBattleTentTrainerMons_Ashlyn
-
-@ 16
- .4byte FACILITY_CLASS_POKEFAN_M
- .string "ADDISON$", 8
-@ pre-battle speech
- .2byte EC_WORD_YES
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_MY
- .2byte EC_WORD_POKEMON
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_WELL
- .2byte EC_WORD_WASN_T
- .2byte EC_WORD_THAT
- .2byte EC_WORD_EASY
- .2byte EC_WORD_QUES
- .2byte -1
-@ loss speech
- .2byte EC_WORD_WAAAH
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_BUT
- .2byte EC_WORD_WHY
- .2byte EC_WORD_QUES
- .4byte gVerdanturfBattleTentTrainerMons_Addison
-
-@ 17
- .4byte FACILITY_CLASS_POKEFAN_F
- .string "JUSTINE$", 8
-@ pre-battle speech
- .2byte EC_WORD_YES
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_I_AM
- .2byte EC_WORD_READY
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_JUST
- .2byte EC_WORD_NOT
- .2byte EC_WORD_GOOD
- .2byte EC_WORD_ENOUGH
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_WOWEE
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte -1
- .2byte -1
- .2byte -1
- .4byte gVerdanturfBattleTentTrainerMons_Justine
-
-@ 18
- .4byte FACILITY_CLASS_EXPERT_M
- .string "TYSON$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_GOING
- .2byte EC_WORD_TO
- .2byte EC_WORD_PRESSURE
- .2byte EC_WORD_ME
- .2byte EC_WORD_QUES
-@ win speech
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_QUES
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_MUCH
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_DOESN_T
- .2byte EC_WORD_MAKE
- .2byte EC_WORD_ME
- .2byte EC_WORD_HAPPY
- .2byte EC_WORD_EXCL
- .4byte gVerdanturfBattleTentTrainerMons_Tyson
-
-@ 19
- .4byte FACILITY_CLASS_EXPERT_F
- .string "LAILA$", 8
-@ pre-battle speech
- .2byte EC_WORD_A
- .2byte EC_MOVE2(STRUGGLE)
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_VERY
- .2byte EC_WORD_COOL
- .2byte -1
-@ win speech
- .2byte EC_WORD_NOPE
- .2byte EC_WORD_NOT_VERY
- .2byte EC_WORD_COOL
- .2byte EC_WORD_AT
- .2byte EC_WORD_ALL
- .2byte EC_WORD_EXCL
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_NOT
- .2byte EC_WORD_COOL
- .2byte EC_WORD_BUT
- .2byte EC_WORD_YOU
- .2byte EC_WORD_WON
- .4byte gVerdanturfBattleTentTrainerMons_Laila
-
-@ 20
- .4byte FACILITY_CLASS_YOUNGSTER
- .string "WAREN$", 8
-@ pre-battle speech
- .2byte EC_WORD_DANGER
- .2byte EC_WORD_EXCL
- .2byte -1
- .2byte EC_WORD_I
- .2byte EC_WORD_SENSE
- .2byte EC_WORD_DANGER
-@ win speech
- .2byte EC_WORD_DID
- .2byte EC_WORD_YOU
- .2byte EC_WORD_BELIEVE
- .2byte EC_WORD_MY
- .2byte EC_WORD_LIE
- .2byte EC_WORD_QUES_EXCL
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_REALLY
- .2byte EC_WORD_DID
- .2byte EC_WORD_SENSE
- .2byte EC_WORD_DANGER
- .2byte EC_WORD_ELLIPSIS
- .4byte gVerdanturfBattleTentTrainerMons_Waren
-
-@ 21
- .4byte FACILITY_CLASS_FISHERMAN
- .string "TOBIAS$", 8
-@ pre-battle speech
- .2byte EC_MOVE2(BARRIER)
- .2byte EC_WORD_EXCL_EXCL
- .2byte -1
- .2byte EC_WORD_NOW
- .2byte EC_WORD_COME_ON
- .2byte EC_WORD_EXCL
-@ win speech
- .2byte EC_WORD_HUH_QUES
- .2byte EC_WORD_YOU
- .2byte EC_WORD_MEAN
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_KNOW
- .2byte EC_WORD_THAT
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_HOPELESS
- .4byte gVerdanturfBattleTentTrainerMons_Tobias
-
-@ 22
- .4byte FACILITY_CLASS_BIRD_KEEPER
- .string "JOSIAH$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_PROMISE
- .2byte EC_WORD_TO
- .2byte EC_MOVE(FLY)
- .2byte EC_WORD_IF_I_LOSE
- .2byte -1
-@ win speech
- .2byte EC_WORD_TOO_WEAK
- .2byte EC_WORD_ELLIPSIS
- .2byte -1
- .2byte EC_WORD_YOU
- .2byte EC_MOVE(FLY)
- .2byte EC_WORD_INSTEAD
-@ loss speech
- .2byte EC_WORD_I
- .2byte EC_WORD_PROMISE
- .2byte EC_WORD_TO
- .2byte EC_MOVE(FLY)
- .2byte EC_WORD_SOMETIME
- .2byte EC_WORD_SOON
- .4byte gVerdanturfBattleTentTrainerMons_Josiah
-
-@ 23
- .4byte FACILITY_CLASS_NINJA_BOY
- .string "DION$", 8
-@ pre-battle speech
- .2byte EC_WORD_IT_S
- .2byte EC_WORD_TRENDY
- .2byte EC_WORD_UM
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_SOMETHING
- .2byte -1
-@ win speech
- .2byte EC_WORD_WAS
- .2byte EC_WORD_IT
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_DATE
- .2byte EC_WORD_QUES
-@ loss speech
- .2byte EC_WORD_WAS
- .2byte EC_WORD_IT
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_BATTLE
- .2byte EC_WORD_GOURMET
- .2byte EC_WORD_QUES
- .4byte gVerdanturfBattleTentTrainerMons_Dion
-
-@ 24
- .4byte FACILITY_CLASS_PARASOL_LADY
- .string "KENZIE$", 8
-@ pre-battle speech
- .2byte EC_WORD_THE
- .2byte EC_MOVE(MORNING_SUN)
- .2byte EC_WORD_GIVES
- .2byte EC_WORD_ME
- .2byte EC_MOVE(STRENGTH)
- .2byte -1
-@ win speech
- .2byte EC_WORD_BUT
- .2byte EC_WORD_I
- .2byte EC_WORD_LIKE
- .2byte EC_MOVE2(MOONLIGHT)
- .2byte EC_WORD_TOO
- .2byte -1
-@ loss speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_LIKE
- .2byte EC_WORD_A
- .2byte EC_WORD_TERRIBLE
- .2byte EC_MOVE(SANDSTORM)
- .2byte EC_WORD_ELLIPSIS
- .4byte gVerdanturfBattleTentTrainerMons_Kenzie
-
-@ 25
- .4byte FACILITY_CLASS_SWIMMER_F
- .string "LILLIAN$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_DO
- .2byte EC_WORD_THINGS
- .2byte EC_WORD_AT
- .2byte EC_WORD_MY
- .2byte EC_WORD_OWN_TEMPO
-@ win speech
- .2byte EC_WORD_I
- .2byte EC_WORD_WON
- .2byte EC_WORD_QUES
- .2byte EC_WORD_WHAT
- .2byte EC_WORD_A
- .2byte EC_WORD_SURPRISE
-@ loss speech
- .2byte EC_WORD_AWW
- .2byte EC_WORD_ELLIPSIS
- .2byte EC_WORD_I
- .2byte EC_WORD_NEED
- .2byte EC_WORD_A
- .2byte EC_WORD_NAP
- .4byte gVerdanturfBattleTentTrainerMons_Lillian
-
-@ 26
- .4byte FACILITY_CLASS_PICNICKER
- .string "LESLEY$", 8
-@ pre-battle speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_NOT
- .2byte EC_WORD_BE
- .2byte EC_WORD_LOLLING
- .2byte EC_WORD_ABOUT
-@ win speech
- .2byte EC_WORD_YOU
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_GET
- .2byte EC_WORD_UP
- .2byte EC_WORD_EARLIER
- .2byte -1
-@ loss speech
- .2byte EC_WORD_THIS
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_NOT
- .2byte EC_WORD_BE
- .2byte EC_WORD_HAPPENING
- .2byte EC_WORD_EXCL
- .4byte gVerdanturfBattleTentTrainerMons_Lesley
-
-@ 27
- .4byte FACILITY_CLASS_SAILOR
- .string "MARQUIS$", 8
-@ pre-battle speech
- .2byte EC_WORD_NONE
- .2byte EC_WORD_OF
- .2byte EC_WORD_THIS
- .2byte EC_WORD_IS
- .2byte EC_WORD_MAKING
- .2byte EC_WORD_SENSE
-@ win speech
- .2byte EC_WORD_SEE
- .2byte EC_WORD_QUES
- .2byte EC_WORD_THIS
- .2byte EC_WORD_JUST
- .2byte EC_WORD_ISN_T
- .2byte EC_WORD_NORMAL
-@ loss speech
- .2byte EC_WORD_SHOULD
- .2byte EC_WORD_I
- .2byte EC_WORD_CAUSE
- .2byte EC_WORD_AN
- .2byte EC_MOVE(UPROAR)
- .2byte EC_WORD_QUES
- .4byte gVerdanturfBattleTentTrainerMons_Marquis
-
-@ 28
- .4byte FACILITY_CLASS_COLLECTOR
- .string "FREDDY$", 8
-@ pre-battle speech
- .2byte EC_WORD_I
- .2byte EC_WORD_ADORE
- .2byte EC_WORD_THIS
- .2byte EC_WORD_CUTE
- .2byte EC_WORD_TELEVISION
- .2byte EC_WORD_IDOL
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_SO
- .2byte EC_WORD_FUNNY
- .2byte EC_WORD_WHEN
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_ANGRY
-@ loss speech
- .2byte EC_WORD_LATE
- .2byte EC_WORD_NIGHT
- .2byte EC_WORD_TELEVISION
- .2byte EC_WORD_IS
- .2byte EC_WORD_MY
- .2byte EC_WORD_LIFE
- .4byte gVerdanturfBattleTentTrainerMons_Freddy
-
-@ 29
- .4byte FACILITY_CLASS_LASS
- .string "CECILIA$", 8
-@ pre-battle speech
- .2byte EC_WORD_MY
- .2byte EC_WORD_FABULOUS
- .2byte EC_WORD_CUTENESS
- .2byte EC_WORD_IS
- .2byte EC_WORD_IN
- .2byte EC_WORD_FASHION
-@ win speech
- .2byte EC_WORD_YOU_RE
- .2byte EC_WORD_NO
- .2byte EC_WORD_MATCH
- .2byte EC_WORD_FOR
- .2byte EC_WORD_MY
- .2byte EC_WORD_CUTE_CHARM
-@ loss speech
- .2byte EC_WORD_DON_T
- .2byte EC_WORD_YOU
- .2byte EC_WORD_HAVE
- .2byte EC_WORD_FASHION
- .2byte EC_WORD_SENSE
- .2byte EC_WORD_QUES
- .4byte gVerdanturfBattleTentTrainerMons_Cecilia
diff --git a/data/battle_tower.s b/data/battle_tower.s
deleted file mode 100644
index 9f7e1ade4..000000000
--- a/data/battle_tower.s
+++ /dev/null
@@ -1,679 +0,0 @@
-#include "constants/easy_chat.h"
-#include "constants/items.h"
-#include "constants/moves.h"
-#include "constants/species.h"
-#include "constants/trainers.h"
-#include "constants/pokemon.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 85CECB0
- .include "data/battle_frontier/battle_frontier_held_items.inc"
-
-@ 85CED2E
- .include "data/battle_frontier/battle_frontier_trainer_mons.inc"
-
-@ 85D5ACC
- .include "data/battle_frontier/battle_frontier_trainers.inc"
-
-@ 85D97BC
- .include "data/battle_frontier/battle_frontier_mons.inc"
-
-gTowerMaleFacilityClasses:: @ 85DCEDC
- .byte 0x0e, 0x11, 0x03, 0x15, 0x17, 0x07, 0x0a, 0x19, 0x1a, 0x1b, 0x1d, 0x1e, 0x20, 0x26, 0x29, 0x09, 0x2b, 0x2d, 0x2e, 0x30, 0x32, 0x34, 0x04, 0x35, 0x3a, 0x05, 0x42, 0x44, 0x43, 0x00
-
-gTowerFemaleFacilityClasses:: @ 85DCEFA
- .byte 0x0d, 0x10, 0x12, 0x0c, 0x13, 0x14, 0x1f, 0x27, 0x2a, 0x16, 0x2f, 0x31, 0x33, 0x36, 0x37, 0x38, 0x1c, 0x02, 0x45, 0x47
-
-gTowerMaleTrainerGfxIds:: @ 85DCF0E
- .byte 0x37, 0x36, 0x21, 0x0f, 0x27, 0x33, 0x2c, 0x42, 0x42, 0x1f, 0x27, 0x25, 0x30, 0x26, 0x19, 0x15, 0x23, 0x32, 0x38, 0x33, 0x33, 0x21, 0x42, 0x05, 0x31, 0x27, 0x41, 0x1f, 0x24, 0x37
-
-gTowerFemaleTrainerGfxIds:: @ 85DCF2C
- .byte 0x14, 0x35, 0x22, 0x28, 0x14, 0x2d, 0x2f, 0x0e, 0x12, 0x16, 0x39, 0x34, 0x34, 0x0e, 0x22, 0x34, 0x20, 0x14, 0x20, 0x2f
-
-sRubyFacilityClassToEmerald:: @ 85DCF40
- .byte 0x00, 0x0b, 0x01, 0x01, 0x02, 0x06, 0x03, 0x0d, 0x04, 0x0e, 0x05, 0x0f, 0x06, 0x10, 0x07, 0x11, 0x08, 0x03, 0x09, 0x12, 0x0a, 0x0c, 0x0b, 0x13, 0x0c, 0x14, 0x0d, 0x15, 0x0e, 0x17, 0x0f, 0x07
- .byte 0x10, 0x0a, 0x11, 0x19, 0x12, 0x1a, 0x13, 0x1b, 0x14, 0x1d, 0x15, 0x1e, 0x16, 0x1f, 0x17, 0x20, 0x18, 0x21, 0x19, 0x22, 0x1a, 0x23, 0x1b, 0x24, 0x1c, 0x25, 0x1d, 0x26, 0x1e, 0x27, 0x1f, 0x28
- .byte 0x20, 0x29, 0x21, 0x2a, 0x22, 0x09, 0x23, 0x16, 0x24, 0x2b, 0x25, 0x2c, 0x26, 0x2d, 0x27, 0x2e, 0x28, 0x2f, 0x29, 0x30, 0x2a, 0x31, 0x2b, 0x32, 0x2c, 0x33, 0x2d, 0x34, 0x2e, 0x04, 0x2f, 0x35
- .byte 0x30, 0x36, 0x31, 0x37, 0x32, 0x38, 0x33, 0x1c, 0x34, 0x39, 0x35, 0x3a, 0x38, 0x05, 0x39, 0x3b, 0x3a, 0x3c, 0x3b, 0x3d, 0x3c, 0x3e, 0x3d, 0x3f, 0x3e, 0x40, 0x3f, 0x41, 0x40, 0x42, 0x41, 0x02
- .byte 0x42, 0x44, 0x43, 0x45, 0x44, 0x46, 0x45, 0x08, 0x46, 0x18, 0x47, 0x47, 0x48, 0x43, 0x49, 0x00, 0x4a, 0x48, 0x4b, 0x49, 0x4c, 0x4a, 0x00, 0x00
-
- .align 2
-gUnknown_085DCFD8:: @ 85DCFD8
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244383
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2443E7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244413
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24444B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2444D6
-
- .align 2
-gUnknown_085DCFEC:: @ 85DCFEC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2444EF
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24451E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244549
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24459B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2445C5
-
- .align 2
-gUnknown_085DD000:: @ 85DD000
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2445E8
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244618
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244643
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24468F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2446B4
-
- .align 2
-gUnknown_085DD014:: @ 85DD014
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2446E5
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24474D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24479E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24480C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2448A7
-
- .align 2
-gUnknown_085DD028:: @ 85DD028
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2448CD
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2448F5
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244939
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244989
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2449E6
-
- .align 2
-gUnknown_085DD03C:: @ 85DD03C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244A23
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244AA9
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244AD6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244B52
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244B93
-
- .align 2
-gUnknown_085DD050:: @ 85DD050
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244BD2
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244C18
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244C6E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244CD6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244D07
-
- .align 2
-gUnknown_085DD064:: @ 85DD064
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244D36
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244D82
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244DC6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244DFE
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244E5B
-
- .align 2
-gUnknown_085DD078:: @ 85DD078
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244E7E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244ECA
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244EF4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244F4F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244F98
-
- .align 2
-gUnknown_085DD08C:: @ 85DD08C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_244FD3
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245013
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24503D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245087
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2450C0
-
- .align 2
-gUnknown_085DD0A0:: @ 85DD0A0
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2450E6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245196
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2451BD
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24522F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24529A
-
- .align 2
-gUnknown_085DD0B4:: @ 85DD0B4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2452EF
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2453B4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245406
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245464
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2454A3
-
- .align 2
-gUnknown_085DD0C8:: @ 85DD0C8
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2454D6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245535
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24555F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2455EC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245656
-
- .align 2
-gUnknown_085DD0DC:: @ 85DD0DC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24568A
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2456F5
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245740
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2457D9
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24581F
-
- .align 2
-gUnknown_085DD0F0:: @ 85DD0F0
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245851
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24589C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2458CE
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245923
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24597F
-
- .align 2
-gUnknown_085DD104:: @ 85DD104
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2459BE
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2459F7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245A5F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245AB4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245B3E
-
- .align 2
-gUnknown_085DD118:: @ 85DD118
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245B79
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245B91
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245BBD
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245C05
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245C2D
-
- .align 2
-gUnknown_085DD12C:: @ 85DD12C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245C66
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245C7F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245CAC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245CE6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245D07
-
- .align 2
-gUnknown_085DD140:: @ 85DD140
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245D4B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245D60
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245D8D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245DC7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245DF0
-
- .align 2
-gUnknown_085DD154:: @ 85DD154
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245E20
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245E41
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245E78
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245EBD
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245EEC
-
- .align 2
-gUnknown_085DD168:: @ 85DD168
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245F2B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245F58
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245F87
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_245FC6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246002
-
- .align 2
-gUnknown_085DD17C:: @ 85DD17C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246020
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246051
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246082
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2460D5
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24610D
-
- .align 2
-gUnknown_085DD190:: @ 85DD190
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24614A
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24615D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24617D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2461C7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2461F5
-
- .align 2
-gUnknown_085DD1A4:: @ 85DD1A4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24622A
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246244
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24626E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2462AA
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2462E4
-
- .align 2
-gUnknown_085DD1B8:: @ 85DD1B8
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24631F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24633C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24636B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2463C5
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2463FF
-
- .align 2
-gUnknown_085DD1CC:: @ 85DD1CC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246449
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246478
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2464EE
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246529
-
- .align 2
-gUnknown_085DD1E0:: @ 85DD1E0
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246571
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24658C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2465B5
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246605
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24662A
-
- .align 2
-gUnknown_085DD1F4:: @ 85DD1F4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246662
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246686
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2466B4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2466E6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24670A
-
- .align 2
-gUnknown_085DD208:: @ 85DD208
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246741
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246760
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246791
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2467C4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2467E6
-
- .align 2
-gUnknown_085DD21C:: @ 85DD21C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2467FF
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246831
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246864
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2468A7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2468FE
-
- .align 2
-gUnknown_085DD230:: @ 85DD230
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24692B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24694B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24697C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2469B4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2469F1
-
- .align 2
-gUnknown_085DD244:: @ 85DD244
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246A22
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246A4E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246A85
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246AF7
-
- .align 2
-gUnknown_085DD258:: @ 85DD258
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246B2B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246B3F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246B6B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246BB2
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246BE9
-
- .align 2
-gUnknown_085DD26C:: @ 85DD26C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246C22
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246C35
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246C6C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246CB3
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246CE9
-
- .align 2
-gUnknown_085DD280:: @ 85DD280
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246D2D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246D3F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246D6A
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246D9E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246DD3
-
- .align 2
-gUnknown_085DD294:: @ 85DD294
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246E1A
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246E39
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246E64
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246EB6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246EEE
-
- .align 2
-gUnknown_085DD2A8:: @ 85DD2A8
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246F21
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246F4C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246F7B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_246FCC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247013
-
- .align 2
-gUnknown_085DD2BC:: @ 85DD2BC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24705B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24707D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2470B2
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2470FD
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24712A
-
- .align 2
-gUnknown_085DD2D0:: @ 85DD2D0
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24716C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24718D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2471C7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2471FB
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247238
-
- .align 2
-gUnknown_085DD2E4:: @ 85DD2E4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247268
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247291
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2472C7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247313
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247348
-
- .align 2
-gUnknown_085DD2F8:: @ 85DD2F8
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24737A
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24738F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2473C6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2473FB
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247438
-
- .align 2
-gUnknown_085DD30C:: @ 85DD30C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247470
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247484
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2474AF
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2474EC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24751D
-
- .align 2
-gUnknown_085DD320:: @ 85DD32
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24754A
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24755C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24758B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2475BC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2475D5
-
- .align 2
-gUnknown_085DD334:: @ 85DD334
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24760D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247629
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247655
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24769B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2476ED
-
- .align 2
-gUnknown_085DD348:: @ 85DD348
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247724
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247749
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24777A
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2477CE
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247807
-
- .align 2
-gUnknown_085DD35C:: @ 85DD35C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247838
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247854
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247889
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2478DD
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24790D
-
- .align 2
-gUnknown_085DD370:: @ 85DD370
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247942
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24795F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247991
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247A18
-
- .align 2
-gUnknown_085DD384:: @ 85DD384
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247A51
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247A76
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247AA1
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247AE3
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247B16
-
- .align 2
-gUnknown_085DD398:: @ 85DD398
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247B3E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247B62
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247B9B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247BE7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247C23
-
- .align 2
-gUnknown_085DD3AC:: @ 85DD3AC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247C4E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247C8C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247CB2
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247D07
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247D4E
-
- .align 2
-gUnknown_085DD3C0:: @ 85DD3C0
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247D97
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247DC7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247DFE
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247E3E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247E7E
-
- .align 2
-gUnknown_085DD3D4:: @ 85DD3D4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247EA1
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247EB5
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247EE9
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247F3F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247F6D
-
- .align 2
-gUnknown_085DD3E8:: @ 85DD3E8
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247FA3
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247FB7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_247FE9
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248031
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24805E
-
- .align 2
-gUnknown_085DD3FC:: @ 85DD3FC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24808D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2480AB
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2480DC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248128
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248151
-
- .align 2
-gUnknown_085DD410:: @ 85DD410
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24818E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2481A9
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2481E1
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248221
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24824F
-
- .align 2
-gUnknown_085DD424:: @ 85DD424
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248297
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2482B1
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2482DC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248321
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24833D
-
- .align 2
-gUnknown_085DD438:: @ 85DD438
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248369
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24838D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2483C1
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248401
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248431
-
- .align 2
-gUnknown_085DD44C:: @ 85DD44C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248467
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248477
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2484AC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2484E7
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248517
-
- .align 2
-gUnknown_085DD460:: @ 85DD460
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248553
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24856A
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24857D
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2485E5
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248614
-
- .align 2
-gUnknown_085DD474:: @ 85DD474
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24864E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248661
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248671
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2486C6
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2486FF
-
- .align 2
-gUnknown_085DD488:: @ 85DD488
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248725
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248751
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248781
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2487C9
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2487F7
-
- .align 2
-gUnknown_085DD49C:: @ 85DD49C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248829
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24885B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248892
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2488D8
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248908
-
- .align 2
-gUnknown_085DD4B0:: @ 85DD4B0
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24894B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24895F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_24896F
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2489BD
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_2489E7
-
- .align 2
-gUnknown_085DD4C4:: @ 85DD4C4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248A10
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248A40
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248A72
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248AC0
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248AEB
-
- .align 2
-gUnknown_085DD4D8:: @ 85DD4D8
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248B22
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248B39
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248B4C
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248BB4
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248BEE
-
- .align 2
-gUnknown_085DD4EC:: @ 85DD4EC
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248C2E
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248C5B
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248C90
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248CCF
- .4byte BattleFrontier_BattleTowerMultiBattleRoom_Text_248D04
-
- .align 2
-gUnknown_085DD500:: @ 85DD500
- .4byte 0x00000047, gUnknown_085DD118
- .4byte 0x0000002b, gUnknown_085DD12C
- .4byte 0x00000000, gUnknown_085DD140
- .4byte 0x00000014, gUnknown_085DD154
- .4byte 0x0000002d, gUnknown_085DD168
- .4byte 0x00000013, gUnknown_085DD17C
- .4byte 0x0000002f, gUnknown_085DD190
- .4byte 0x00000043, gUnknown_085DD1A4
- .4byte 0x00000026, gUnknown_085DD1B8
- .4byte 0x00000015, gUnknown_085DD1CC
- .4byte 0x0000000a, gUnknown_085DD1E0
- .4byte 0x00000010, gUnknown_085DD1F4
- .4byte 0x0000000c, gUnknown_085DD208
- .4byte 0x00000042, gUnknown_085DD21C
- .4byte 0x00000031, gUnknown_085DD230
- .4byte 0x00000030, gUnknown_085DD244
- .4byte 0x00000036, gUnknown_085DD258
- .4byte 0x0000002e, gUnknown_085DD26C
- .4byte 0x00000011, gUnknown_085DD280
- .4byte 0x00000019, gUnknown_085DD294
- .4byte 0x00000020, gUnknown_085DD2A8
- .4byte 0x00000029, gUnknown_085DD2BC
- .4byte 0x00000009, gUnknown_085DD2D0
- .4byte 0x00000016, gUnknown_085DD2E4
- .4byte 0x00000034, gUnknown_085DD2F8
- .4byte 0x00000004, gUnknown_085DD30C
- .4byte 0x00000035, gUnknown_085DD320
- .4byte 0x00000037, gUnknown_085DD334
- .4byte 0x0000001d, gUnknown_085DD348
- .4byte 0x0000003a, gUnknown_085DD35C
- .4byte 0x00000005, gUnknown_085DD370
- .4byte 0x00000044, gUnknown_085DD384
- .4byte 0x00000045, gUnknown_085DD398
- .4byte 0x0000000d, gUnknown_085DD3AC
- .4byte 0x0000000e, gUnknown_085DD3C0
- .4byte 0x00000003, gUnknown_085DD3D4
- .4byte 0x00000012, gUnknown_085DD3E8
- .4byte 0x00000017, gUnknown_085DD3FC
- .4byte 0x0000001a, gUnknown_085DD410
- .4byte 0x0000001b, gUnknown_085DD424
- .4byte 0x0000001c, gUnknown_085DD438
- .4byte 0x0000001e, gUnknown_085DD44C
- .4byte 0x0000001f, gUnknown_085DD460
- .4byte 0x00000027, gUnknown_085DD474
- .4byte 0x00000002, gUnknown_085DD488
- .4byte 0x0000002a, gUnknown_085DD49C
- .4byte 0x00000038, gUnknown_085DD4B0
- .4byte 0x00000032, gUnknown_085DD4C4
- .4byte 0x00000033, gUnknown_085DD4D8
- .4byte 0x00000007, gUnknown_085DD4EC
-
- .align 2
-gUnknown_085DD690:: @ 85DD690
- .4byte gUnknown_085DCFD8
- .4byte gUnknown_085DCFEC
- .4byte gUnknown_085DD000
- .4byte gUnknown_085DD014
- .4byte gUnknown_085DD028
- .4byte gUnknown_085DD03C
- .4byte gUnknown_085DD050
- .4byte gUnknown_085DD064
- .4byte gUnknown_085DD078
- .4byte gUnknown_085DD08C
- .4byte gUnknown_085DD0A0
- .4byte gUnknown_085DD0B4
- .4byte gUnknown_085DD0C8
- .4byte gUnknown_085DD0DC
- .4byte gUnknown_085DD0F0
- .4byte gUnknown_085DD104
-
-sStevenMons:: @ 85DD6D0
- .byte 0x8f, 0x01, 0x1f, 0x2a, 0x02
-
-gUnknown_085DD6D5:: @ 85DD6D5
- .byte 0x00, 0xfc, 0xfc, 0x00, 0x06, 0x00, 0x00
-
- .align 1
-gUnknown_085DD6DC:: @ 85DD6DC
- .2byte 0x0071, 0x005e, 0x0073, 0x00e8, 0x00e3, 0x2b1f, 0xfc08, 0x0000, 0x0600, 0x00fc, 0x005c, 0x014c, 0x00b6, 0x00d3, 0x0180, 0x2c1f
- .2byte 0x0003, 0x00fc, 0xfc00, 0x0006, 0x0057, 0x00b6, 0x004c, 0x0151
-
-@ 85DD70C
- .include "data/battle_frontier/slateport_battle_tent_trainer_mons.inc"
-
-@ 85DDA14
- .include "data/battle_frontier/slateport_battle_tent_trainers.inc"
-
-@ 85DE02C
- .include "data/battle_frontier/slateport_battle_tent_mons.inc"
-
-@ 85DE48C
- .include "data/battle_frontier/verdanturf_battle_tent_trainer_mons.inc"
-
-@ 85DE610
- .include "data/battle_frontier/verdanturf_battle_tent_trainers.inc"
-
-@ 85DEC28
- .include "data/battle_frontier/verdanturf_battle_tent_mons.inc"
-
-@ 85DEEF8
- .include "data/battle_frontier/fallarbor_battle_tent_trainer_mons.inc"
-
-@ 85DF084
- .include "data/battle_frontier/fallarbor_battle_tent_trainers.inc"
-
-@ 85DF69C
- .include "data/battle_frontier/fallarbor_battle_tent_mons.inc"
diff --git a/data/cable_car.s b/data/cable_car.s
deleted file mode 100644
index c141e593c..000000000
--- a/data/cable_car.s
+++ /dev/null
@@ -1,106 +0,0 @@
-#include "constants/event_objects.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085CD66C:: @ 85CD66C
- .4byte 0x000011c0, 0x000021d1, 0x000031e2, 0x000001f3
-
- .align 2
-gCableCarMtChimneyTilemap:: @ 85CD67C
- .incbin "graphics/misc/cable_car_mt_chimney_map.bin.lz"
-
- .align 2
-gCableCarTreeTilemap:: @ 85CD7D4
- .incbin "graphics/misc/cable_car_tree_map.bin.lz"
-
- .align 2
-gCableCarMountainTilemap:: @ 85CD958
- .incbin "graphics/misc/cable_car_mountain_map.bin.lz"
-
- .align 2
-gCableCarPylonHookTilemapEntries:: @ 85CDB1C
- .2byte 0x3000
- .2byte 0x3001
- .2byte 0x3002
- .2byte 0x3003
- .2byte 0x3004
- .2byte 0x3005
- .2byte 0x3006
- .2byte 0x3007
- .2byte 0x3008
- .2byte 0x3009
-
- .align 2
-gCableCarPylonStemTilemap:: @ 85CDB30
- .incbin "graphics/misc/cable_car_pylon_stem_map.bin.lz"
-
- .align 2
-gUnknown_085CDB54:: @ 85CDB54
- obj_tiles gCableCar_Gfx, 0x800, 1
- obj_tiles gCableCarDoor_Gfx, 0x40, 2
- obj_tiles gCableCarCord_Gfx, 0x80, 3
- null_obj_tiles
-
- .align 2
-gUnknown_085CDB74:: @ 85CDB74
- obj_pal gCableCar_Pal, 1
- null_obj_pal
-
- .align 2
-gOamData_85CDB84:: @ 85CDB84
- .2byte 0x0300
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_85CDB8C:: @ 85CDB8C
- .2byte 0x4300
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_85CDB94:: @ 85CDB94
- .2byte 0x0300
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gSpriteTemplate_85CDB9C:: @ 85CDB9C
- spr_template 1, 1, gOamData_85CDB84, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8150868
-
- .align 2
-gSpriteTemplate_85CDBB4:: @ 85CDBB4
- spr_template 2, 1, gOamData_85CDB8C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8150868
-
- .align 2
-gSpriteTemplate_85CDBCC:: @ 85CDBCC
- spr_template 3, 1, gOamData_85CDB94, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, nullsub_58
-
-gCableCarPlayerGraphicsIDs:: @ 85CDBE4
- .byte EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL
- .byte EVENT_OBJ_GFX_RIVAL_MAY_NORMAL
-
-gMtChimneyHikerGraphicsIDs:: @ 85CDBE6
- .byte EVENT_OBJ_GFX_HIKER
- .byte EVENT_OBJ_GFX_CAMPER
- .byte EVENT_OBJ_GFX_PICNICKER
- .byte EVENT_OBJ_GFX_ZIGZAGOON_1 @ not used
-
- .align 1
-gMtChimneyHikerCoords:: @ 85CDBEA
- .2byte 0, 80
- .2byte 240, 146
-
-gMtChimneyHikerMovementDelayTable:: @ 85CDBF2
- .byte 0
- .byte 60
- .byte 120
- .byte 170
-
- .align 2
-gUnknown_085CDBF8:: @ 85CDBF8
- .4byte sub_8150A68
- .4byte sub_8150AF4
diff --git a/data/contest_painting.s b/data/contest_painting.s
deleted file mode 100644
index 42d76f9bc..000000000
--- a/data/contest_painting.s
+++ /dev/null
@@ -1,106 +0,0 @@
-@ the third big chunk of data
-
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085A989C:: @ 85A989C
- .incbin "graphics/picture_frame/bg.gbapal"
-
- .align 2
-gUnknown_085A9A9C:: @ 85A9A9C
- .incbin "graphics/picture_frame/frame0.4bpp.rl"
-
- .align 2
-gUnknown_085AAB20:: @ 85AAB20
- .incbin "graphics/picture_frame/frame1.4bpp.rl"
-
- .align 2
-gUnknown_085AB750:: @ 85AB750
- .incbin "graphics/picture_frame/frame2.4bpp.rl"
-
- .align 2
-gUnknown_085AC288:: @ 85AC288
- .incbin "graphics/picture_frame/frame3.4bpp.rl"
-
- .align 2
-gUnknown_085AD240:: @ 85AD240
- .incbin "graphics/picture_frame/frame4.4bpp.rl"
-
- .align 2
-gUnknown_085AE370:: @ 85AE370
- .incbin "graphics/picture_frame/frame5.4bpp.rl"
-
- .align 2
-gUnknown_085AE974:: @ 85AE974
- .incbin "graphics/picture_frame/frame0_map.bin.rl"
-
- .align 2
-gUnknown_085AEE80:: @ 85AEE80
- .incbin "graphics/picture_frame/frame1_map.bin.rl"
-
- .align 2
-gUnknown_085AF38C:: @ 85AF38C
- .incbin "graphics/picture_frame/frame2_map.bin.rl"
-
- .align 2
-gUnknown_085AF898:: @ 85AF898
- .incbin "graphics/picture_frame/frame3_map.bin.rl"
-
- .align 2
-gUnknown_085AFDA4:: @ 85AFDA4
- .incbin "graphics/picture_frame/frame4_map.bin.rl"
-
- .align 2
-gUnknown_085B02B0:: @ 85B02B0
- .incbin "graphics/picture_frame/frame5_map.bin.rl"
-
- .align 2
-gUnknown_085B07C0:: @ 85B07C0
- .4byte gContestCoolness
- .4byte gContestBeauty
- .4byte gContestCuteness
- .4byte gContestSmartness
- .4byte gContestToughness
-
- .align 2
-gContestRankTextPointers:: @ 85B07D4
- .4byte gContestRankNormal
- .4byte gContestRankSuper
- .4byte gContestRankHyper
- .4byte gContestRankMaster
- .4byte gContestLink
-
- .align 2
-gUnknown_085B07E8:: @ 85B07E8
- .4byte 0x000010a5
-
- .align 2
-gUnknown_085B07EC:: @ 85B07EC
- window_template 0x01, 0x02, 0x0e, 0x1a, 0x04, 0x0f, 0x0001
-
- .align 2
-gContestPaintingDescriptionPointers:: @ 85B07F4
- .4byte gContestPaintingCool1
- .4byte gContestPaintingCool2
- .4byte gContestPaintingCool3
- .4byte gContestPaintingBeauty1
- .4byte gContestPaintingBeauty2
- .4byte gContestPaintingBeauty3
- .4byte gContestPaintingCute1
- .4byte gContestPaintingCute2
- .4byte gContestPaintingCute3
- .4byte gContestPaintingSmart1
- .4byte gContestPaintingSmart2
- .4byte gContestPaintingSmart3
- .4byte gContestPaintingTough1
- .4byte gContestPaintingTough2
- .4byte gContestPaintingTough3
-
-gUnknown_085B0830:: @ 85B0830
- .4byte 0xc0003000, 0x00000000
-
-gUnknown_085B0838:: @ 85B0838
- .2byte 0x0000, 0x0000
diff --git a/data/cute_sketch.s b/data/contest_painting_effects.s
index d14b51a51..d14b51a51 100644
--- a/data/cute_sketch.s
+++ b/data/contest_painting_effects.s
diff --git a/data/data2c.s b/data/data2c.s
index 1946f5bdb..5bfea56ae 100644
--- a/data/data2c.s
+++ b/data/data2c.s
@@ -9,10 +9,13 @@
.section .rodata
.align 2
-gUnknown_0831AC70:: @ 831AC70
+gBattleIntroSlideScanlineEffectParams:: @ 831AC70
.4byte REG_BG3HOFS
.4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
.4byte 1
+
+ .align 2
+gUnknown_0831AC7C:: @ 831AC7C
.4byte REG_BG3HOFS
.4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_32BIT | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
.4byte 1
diff --git a/data/event_scripts.s b/data/event_scripts.s
index ce92cf388..2353d031f 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -1,5 +1,6 @@
#include "constants/battle_frontier.h"
#include "constants/battle_setup.h"
+#include "constants/event_objects.h"
#include "constants/field_effects.h"
#include "constants/flags.h"
#include "constants/items.h"
@@ -536,7 +537,7 @@ EventScript_23B5F0:: @ 823B5F0
goto_eq EventScript_23B5A1
msgbox Text_2767D1, MSGBOX_SIGN
special sub_80E9C2C
- special sub_80FA57C
+ special DoSecretBasePCTurnOffEffect
releaseall
end
@@ -546,13 +547,13 @@ EventScript_23B62F:: @ 823B62F
goto_eq EventScript_23B5A1
msgbox Text_2767E9, MSGBOX_SIGN
special sub_80E9C2C
- special sub_80FA57C
+ special DoSecretBasePCTurnOffEffect
releaseall
end
EventScript_23B652:: @ 823B652
msgbox Text_27676F, MSGBOX_SIGN
- special sub_80FA57C
+ special DoSecretBasePCTurnOffEffect
closemessage
releaseall
end
@@ -563,7 +564,7 @@ EventScript_23B660:: @ 823B660
end
EventScript_23B66E:: @ 823B66E
- special sub_80FA57C
+ special DoSecretBasePCTurnOffEffect
closemessage
releaseall
end
@@ -591,7 +592,7 @@ EventScript_SecretBaseSandOrnament:: @ 823B684
end
EventScript_SecretBaseShieldOrToyTV:: @ 823B68C
- special sub_80FAC78
+ special GetShieldToyTVDecorationInfo
compare VAR_RESULT, 0
goto_eq EventScript_23B6BC
compare VAR_RESULT, 1
@@ -847,9 +848,9 @@ VerdanturfTown_BattleTentLobby_EventScript_27134F:: @ 827134F
EventScript_271354:: @ 8271354
cmdD8
cmdD9
-
+
.include "data/scripts/trainer_battle.inc"
-
+
Std_MsgboxAutoclose:: @ 8271494
message 0x0
waitmessage
@@ -2234,11 +2235,11 @@ RusturfTunnel_EventScript_272216:: @ 8272216
EventScript_27222B:: @ 827222B
delay 30
- applymovement 255, PetalburgCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_2725A6
waitmovement 0
showobjectat 255, MAP_PETALBURG_CITY
delay 30
- applymovement 255, Movement_27224E
+ applymovement EVENT_OBJ_ID_PLAYER, Movement_27224E
waitmovement 0
delay 30
return
@@ -2454,7 +2455,7 @@ EverGrandeCity_DrakesRoom_EventScript_2723F8:: @ 82723F8
EverGrandeCity_GlaciasRoom_EventScript_2723F8:: @ 82723F8
EverGrandeCity_PhoebesRoom_EventScript_2723F8:: @ 82723F8
EverGrandeCity_SidneysRoom_EventScript_2723F8:: @ 82723F8
- applymovement 255, EverGrandeCity_SidneysRoom_Movement_2725C6
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_SidneysRoom_Movement_2725C6
waitmovement 0
playse SE_DOOR
setmetatile 6, 1, 836, 0
@@ -2476,7 +2477,7 @@ EverGrandeCity_DrakesRoom_EventScript_272475:: @ 8272475
EverGrandeCity_GlaciasRoom_EventScript_272475:: @ 8272475
EverGrandeCity_PhoebesRoom_EventScript_272475:: @ 8272475
EverGrandeCity_SidneysRoom_EventScript_272475:: @ 8272475
- applymovement 255, EverGrandeCity_SidneysRoom_Movement_2725BA
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_SidneysRoom_Movement_2725BA
waitmovement 0
playse SE_TRACK_DOOR
setmetatile 5, 12, 518, 1
@@ -4245,7 +4246,7 @@ gUnknown_0827EE07:: @ 27EE07
gUnknown_0827EE09:: @ 27EE09
.string "8$"
-
+
.include "data/scripts/tv.inc"
.include "data/text/tv.inc"
@@ -4651,35 +4652,35 @@ gOtherText_DontYouAgree:: @ 8294301
.string "\n"
.string "Don't you agree?$"
-gUnknown_08294313:: @ 8294313
+gMauvilleManText_ISoWantToGoOnAVacation:: @ 8294313
.string "I so want to go on a vacation.\n"
.string "Would you happen to know a nice place?$"
-gUnknown_08294359:: @ 8294359
+gMauvilleManText_IBoughtCrayonsWith120Colors:: @ 8294359
.string "I bought crayons with 120 colors!\n"
.string "Don't you think that's nice?$"
-gUnknown_08294398:: @ 8294398
+gMauvilleManText_WouldntItBeNiceIfWeCouldFloat:: @ 8294398
.string "Wouldn't it be nice if we could float\n"
.string "away on a cloud of bubbles?$"
-gUnknown_082943DA:: @ 82943DA
+gMauvilleManText_WhenYouWriteOnASandyBeach:: @ 82943DA
.string "When you write on a sandy beach,\n"
.string "they wash away. It makes me sad.$"
-gUnknown_0829441C:: @ 829441C
+gMauvilleManText_WhatsTheBottomOfTheSeaLike:: @ 829441C
.string "What's the bottom of the sea like?\n"
.string "Just once I would so love to go!$"
-gUnknown_08294460:: @ 8294460
+gMauvilleManText_WhenYouSeeTheSettingSunDoesIt:: @ 8294460
.string "When you see the setting sun, does it\n"
.string "make you want to go home?$"
-gUnknown_082944A0:: @ 82944A0
+gMauvilleManText_LyingBackInTheGreenGrass:: @ 82944A0
.string "Lying back in the green grass…\n"
.string "Oh, it's so, so nice!$"
-gUnknown_082944D5:: @ 82944D5
+gMauvilleManText_SecretBasesAreSoWonderful:: @ 82944D5
.string "SECRET BASES are so wonderful!\n"
.string "Can't you feel the excitement?$"
@@ -4778,7 +4779,7 @@ MtPyre_2F_MapScript1_2A8331: @ 82A8331
EventScript_FallDownHole:: @ 82A8337
lockall
delay 20
- applymovement 255, GraniteCave_B1F_Movement_2A8369
+ applymovement EVENT_OBJ_ID_PLAYER, GraniteCave_B1F_Movement_2A8369
waitmovement 0
playse SE_RU_HYUU
delay 60
@@ -4789,7 +4790,7 @@ EventScript_FallDownHole:: @ 82A8337
gUnknown_082A8350:: @ 82A8350
lockall
delay 20
- applymovement 255, GraniteCave_B1F_Movement_2A8369
+ applymovement EVENT_OBJ_ID_PLAYER, GraniteCave_B1F_Movement_2A8369
waitmovement 0
playse SE_RU_HYUU
delay 60
@@ -9079,7 +9080,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_2C3F6F:: @ 82C3F6F
end
BattleFrontier_BattlePikeThreePathRoom_EventScript_2C4030:: @ 82C4030
- applymovement 255, BattleFrontier_BattlePikeThreePathRoom_Movement_2C427A
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeThreePathRoom_Movement_2C427A
waitmovement 0
call BattleFrontier_BattlePikeThreePathRoom_EventScript_25BB49
warpsilent MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1, 255, 4, 7
@@ -9087,7 +9088,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_2C4030:: @ 82C4030
end
BattleFrontier_BattlePikeThreePathRoom_EventScript_2C4049:: @ 82C4049
- applymovement 255, BattleFrontier_BattlePikeThreePathRoom_Movement_2C427A
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeThreePathRoom_Movement_2C427A
waitmovement 0
call BattleFrontier_BattlePikeThreePathRoom_EventScript_25BB49
warpsilent MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3, 255, 4, 19
@@ -9168,7 +9169,7 @@ BattleFrontier_BattlePikeRandomRoom3_EventScript_2C4136:: @ 82C4136
BattleFrontier_BattlePikeRandomRoom1_EventScript_2C4144:: @ 82C4144
BattleFrontier_BattlePikeRandomRoom3_EventScript_2C4144:: @ 82C4144
- applymovement 255, BattleFrontier_BattlePikeRandomRoom1_Movement_2C427A
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeRandomRoom1_Movement_2C427A
waitmovement 0
call BattleFrontier_BattlePikeRandomRoom1_EventScript_25BB49
warpsilent MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM2, 255, 2, 7
@@ -9176,7 +9177,7 @@ BattleFrontier_BattlePikeRandomRoom3_EventScript_2C4144:: @ 82C4144
BattleFrontier_BattlePikeRandomRoom1_EventScript_2C415C:: @ 82C415C
BattleFrontier_BattlePikeRandomRoom3_EventScript_2C415C:: @ 82C415C
- applymovement 255, BattleFrontier_BattlePikeRandomRoom1_Movement_2C427A
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeRandomRoom1_Movement_2C427A
waitmovement 0
call BattleFrontier_BattlePikeRandomRoom1_EventScript_25BB49
warpsilent MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM, 255, 6, 10
diff --git a/data/field_effect_misc.s b/data/field_effect_misc.s
deleted file mode 100644
index f1b28d906..000000000
--- a/data/field_effect_misc.s
+++ /dev/null
@@ -1,244 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gSpriteImage_858D978:: @ 858D978
- .incbin "graphics/unknown/858E588/0.4bpp"
-
- .align 2
-gSpriteImage_858D9F8:: @ 858D9F8
- .incbin "graphics/unknown/858E588/1.4bpp"
-
- .align 2
-gSpriteImage_858DA78:: @ 858DA78
- .incbin "graphics/unknown/858E588/2.4bpp"
-
- .align 2
-gSpriteImage_858DAF8:: @ 858DAF8
- .incbin "graphics/unknown/858E588/3.4bpp"
-
- .align 2
-gSpriteImage_858DB78:: @ 858DB78
- .incbin "graphics/unknown/858E588/4.4bpp"
-
- .space 32
-
- .align 2
-gFieldEffectObjectPalette7:: @ 858DC18
- .incbin "graphics/event_objects/palettes/field_effect_object_palette_07.gbapal"
-
- .align 2
-gSpriteImage_858DC38:: @ 858DC38
- .incbin "graphics/unknown/858E5D8/0.4bpp"
-
- .align 2
-gSpriteImage_858DCB8:: @ 858DCB8
- .incbin "graphics/unknown/858E5D8/1.4bpp"
-
- .align 2
-gSpriteImage_858DD38:: @ 858DD38
- .incbin "graphics/unknown/858E5D8/2.4bpp"
-
- .align 2
-gSpriteImage_858DDB8:: @ 858DDB8
- .incbin "graphics/unknown/858E5D8/3.4bpp"
-
- .align 2
-gSpriteImage_858DE38:: @ 858DE38
- .incbin "graphics/unknown/858E5D8/4.4bpp"
-
- .align 2
-gSpriteImage_858DEB8:: @ 858DEB8
- .incbin "graphics/unknown/858E5B0/0.4bpp"
-
- .align 2
-gSpriteImage_858DF38:: @ 858DF38
- .incbin "graphics/unknown/858E5B0/1.4bpp"
-
- .align 2
-gSpriteImage_858DFB8:: @ 858DFB8
- .incbin "graphics/unknown/858E5B0/2.4bpp"
-
- .align 2
-gSpriteImage_858E038:: @ 858E038
- .incbin "graphics/unknown/858E5B0/3.4bpp"
-
- .align 2
-gSpriteImage_858E0B8:: @ 858E0B8
- .incbin "graphics/unknown/858E5B0/4.4bpp"
-
- .align 2
-gSpriteImage_858E138:: @ 858E138
- .incbin "graphics/unknown/858E5B0/5.4bpp"
-
- .align 2
-gFieldEffectObjectPalette8:: @ 858E1B8
- .incbin "graphics/event_objects/palettes/field_effect_object_palette_08.gbapal"
-
- .align 2
-gSpriteImage_858E1D8:: @ 858E1D8
- .incbin "graphics/unknown/858E674/0.4bpp"
-
- .align 2
-gSpriteImage_858E2D8:: @ 858E2D8
- .incbin "graphics/unknown/858E674/1.4bpp"
-
- .align 2
-gSpriteImage_858E3D8:: @ 858E3D8
- .incbin "graphics/unknown/858E674/2.4bpp"
-
- .align 2
-gOamData_858E4D8:: @ 858E4D8
- .2byte 0x0000, 0x4000, 0x0800, 0x0000
-
- .align 2
-gSpriteAnim_858E4E0:: @ 858E4E0
- .2byte 0x0000, 0x0008, 0x0001, 0x0008, 0x0002, 0x0008, 0x0003, 0x0008, 0x0004, 0x0008, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_858E4F8:: @ 858E4F8
- .2byte 0x0000, 0x0008, 0x0001, 0x0008, 0x0002, 0x0008, 0x0003, 0x0008, 0x0004, 0x0008, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_858E510:: @ 858E510
- .2byte 0x0004, 0x0008, 0x0003, 0x0008, 0x0002, 0x0008, 0x0001, 0x0008, 0x0000, 0x0008, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_858E528:: @ 858E528
- .2byte 0x0000, 0x0048, 0x0001, 0x0048, 0x0002, 0x0048, 0x0003, 0x0048, 0x0004, 0x0048, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_858E540:: @ 858E540
- .2byte 0x0004, 0x0048, 0x0003, 0x0048, 0x0002, 0x0048, 0x0001, 0x0048, 0x0000, 0x0048, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_858E558:: @ 858E558
- .2byte 0x0000, 0x0008, 0x0001, 0x0008, 0x0002, 0x0008, 0x0003, 0x0008, 0x0004, 0x0008, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_858E570:: @ 858E570
- .4byte gSpriteAnim_858E4E0
-
- .align 2
-gSpriteAnimTable_858E574:: @ 858E574
- .4byte gSpriteAnim_858E4F8
- .4byte gSpriteAnim_858E510
- .4byte gSpriteAnim_858E528
- .4byte gSpriteAnim_858E540
-
- .align 2
-gSpriteAnimTable_858E584:: @ 858E584
- .4byte gSpriteAnim_858E558
-
- .align 2
-gUnknown_858E588:: @ 858E588
- obj_frame_tiles gSpriteImage_858D978, 0x0080
- obj_frame_tiles gSpriteImage_858D9F8, 0x0080
- obj_frame_tiles gSpriteImage_858DA78, 0x0080
- obj_frame_tiles gSpriteImage_858DAF8, 0x0080
- obj_frame_tiles gSpriteImage_858DB78, 0x0080
-
- .align 2
-gUnknown_858E5B0:: @ 858E5B0
- obj_frame_tiles gSpriteImage_858DEB8, 0x0080
- obj_frame_tiles gSpriteImage_858DF38, 0x0080
- obj_frame_tiles gSpriteImage_858DFB8, 0x0080
- obj_frame_tiles gSpriteImage_858E038, 0x0080
- obj_frame_tiles gSpriteImage_858E0B8, 0x0080
-
- .align 2
-gUnknown_858E5D8:: @ 858E5D8
- obj_frame_tiles gSpriteImage_858DC38, 0x0080
- obj_frame_tiles gSpriteImage_858DCB8, 0x0080
- obj_frame_tiles gSpriteImage_858DD38, 0x0080
- obj_frame_tiles gSpriteImage_858DDB8, 0x0080
- obj_frame_tiles gSpriteImage_858DE38, 0x0080
-
- .align 2
-gUnknown_0858E600:: @ 858E600
- spr_template 0xffff, 0x1003, gOamData_858E4D8, gSpriteAnimTable_858E570, gUnknown_858E588, gDummySpriteAffineAnimTable, sub_80FA18C
-
- .align 2
-gUnknown_0858E618:: @ 858E618
- spr_template 0xffff, 0x1008, gOamData_858E4D8, gSpriteAnimTable_858E574, gUnknown_858E5B0, gDummySpriteAffineAnimTable, sub_80FA2D8
-
- .align 2
-gUnknown_0858E630:: @ 858E630
- spr_template 0xffff, 0x1008, gOamData_858E4D8, gSpriteAnimTable_858E584, gUnknown_858E5D8, gDummySpriteAffineAnimTable, sub_80FA3FC
-
- .align 2
-gFieldEffectObjectPaletteInfo7:: @ 858E648
- obj_pal gFieldEffectObjectPalette7, 0x1003
-
- .align 2
-gFieldEffectObjectPaletteInfo8:: @ 858E650
- obj_pal gFieldEffectObjectPalette8, 0x1008
-
- .align 2
-gOamData_858E658:: @ 858E658
- .2byte 0x8000, 0x8000, 0x0800, 0x0000
-
- .align 2
-gSpriteAnim_858E660:: @ 858E660
- .2byte 0x0000, 0x0006, 0x0001, 0x0006, 0x0002, 0x0006, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_858E670:: @ 858E670
- .4byte gSpriteAnim_858E660
-
- .align 2
-gUnknown_0858E674:: @ 858E674
- obj_frame_tiles gSpriteImage_858E1D8, 0x0100
- obj_frame_tiles gSpriteImage_858E2D8, 0x0100
- obj_frame_tiles gSpriteImage_858E3D8, 0x0100
-
- .align 2
-gUnknown_0858E68C:: @ 858E68C
- spr_template 0xffff, 0x100e, gOamData_858E658, gSpriteAnimTable_858E670, gUnknown_0858E674, gDummySpriteAffineAnimTable, door_restore_tilemap
-
- .align 2
-@ This uses one of the secret base palettes, so there is no
-@ "field_effect_object_palette_09.pal" file.
-gFieldEffectObjectPaletteInfo9:: @ 858E6A4
- obj_pal gTilesetPalettes_SecretBase + 5 * 0x20, 0x100E
-
- .align 2
-gSpriteImage_858E6AC:: @ 858E6AC
- .incbin "graphics/unknown/858E84C/0.4bpp"
-
- .align 2
-gSpriteImage_858E72C:: @ 858E72C
- .incbin "graphics/unknown/858E84C/1.4bpp"
-
- .align 2
-gSpriteImage_858E7AC:: @ 858E7AC
- .incbin "graphics/unknown/858E84C/2.4bpp"
-
- .align 2
-gUnknown_0858E82C:: @ 858E82C
- .incbin "graphics/unknown/unknown_58E82C.gbapal"
-
- .align 2
-gUnknown_0858E84C:: @ 858E84C
- obj_frame_tiles gSpriteImage_858E6AC, 0x0080
- obj_frame_tiles gSpriteImage_858E72C, 0x0080
- obj_frame_tiles gSpriteImage_858E7AC, 0x0080
-
- .align 2
-gUnknown_0858E864:: @ 858E864
- obj_pal gUnknown_0858E82C, 0x1000
-
- .align 2
-gSpriteAnim_858E86C:: @ 858E86C
- .2byte 0x0000, 0x001e, 0x0001, 0x001e, 0x0002, 0x001e, 0xfffe, 0x0000
-
- .align 2
-gSpriteAnimTable_858E87C:: @ 858E87C
- .4byte gSpriteAnim_858E86C
-
- .align 2
-gUnknown_0858E880:: @ 858E880
- spr_template 0xffff, 0x1000, gEventObjectBaseOam_32x8, gSpriteAnimTable_858E87C, gUnknown_0858E84C, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s
index eab655877..81de41aaa 100644
--- a/data/field_effect_scripts.s
+++ b/data/field_effect_scripts.s
@@ -118,7 +118,7 @@ gFieldEffectScript_GroundImpactDust:: @ 82DBB28
field_eff_end
gFieldEffectScript_Unknown11:: @ 82DBB32
- field_eff_callnative oei_sweet_scent
+ field_eff_callnative FldEff_UseSecretPowerCave
field_eff_end
gFieldEffectScript_BikeHopTallGrass:: @ 82DBB38
@@ -179,11 +179,11 @@ gFieldEffectScript_Unknown25:: @ 82DBBB6
field_eff_end
gFieldEffectScript_Unknown26:: @ 82DBBC5
- field_eff_callnative sub_80FA208
+ field_eff_callnative FldEff_UseSecretPowerTree
field_eff_end
gFieldEffectScript_Unknown27:: @ 82DBBCB
- field_eff_callnative sub_80FA36C
+ field_eff_callnative FldEff_UseSecretPowerShrub
field_eff_end
gFieldEffectScript_TreeDisguise:: @ 82DBBD1
@@ -264,11 +264,11 @@ gFieldEffectScript_HeartIcon:: @ 82DBC56
field_eff_end
gFieldEffectScript_Unknown47:: @ 82DBC60
- field_eff_callnative sub_80FA6FC
+ field_eff_callnative FldEff_NopA6FC
field_eff_end
gFieldEffectScript_Unknown48:: @ 82DBC66
- field_eff_callnative sub_80FA700
+ field_eff_callnative FldEff_NopA700
field_eff_end
gFieldEffectScript_JumpOutOfAsh:: @ 82DBC6C
@@ -284,7 +284,7 @@ gFieldEffectScript_Unknown51:: @ 82DBC80
field_eff_end
gFieldEffectScript_Unknown52:: @ 82DBC86
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo9, sub_80FAA7C
+ field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo9, FldEff_SandPillar
field_eff_end
gFieldEffectScript_Bubbles:: @ 82DBC90
@@ -296,15 +296,15 @@ gFieldEffectScript_Unknown54:: @ 82DBC9A
field_eff_end
gFieldEffectScript_Unknown55:: @ 82DBCA4
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo7, sub_80FA13C
+ field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo7, FldEff_SecretPowerCave
field_eff_end
gFieldEffectScript_Unknown56:: @ 82DBCAE
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo8, sub_80FA248
+ field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo8, FldEff_SecretPowerTree
field_eff_end
gFieldEffectScript_Unknown57:: @ 82DBCB8
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo8, sub_80FA3AC
+ field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo8, FldEff_SecretPowerShrub
field_eff_end
gFieldEffectScript_Unknown58:: @ 82DBCC2
@@ -320,7 +320,7 @@ gFieldEffectScript_Unknown60:: @ 82DBCD2
field_eff_end
gFieldEffectScript_Unknown61:: @ 82DBCD8
- field_eff_callnative sub_80FA458
+ field_eff_callnative FldEff_SecretBasePCTurnOn
field_eff_end
gFieldEffectScript_Unknown62:: @ 82DBCDE
diff --git a/data/field_screen.s b/data/field_screen.s
deleted file mode 100644
index 968e2e7f3..000000000
--- a/data/field_screen.s
+++ /dev/null
@@ -1,492 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_0854014C:: @ 854014C
- .incbin "graphics/misc/sunny_day/0.gbapal"
- .incbin "graphics/misc/sunny_day/1.gbapal"
- .incbin "graphics/misc/sunny_day/2.gbapal"
- .incbin "graphics/misc/sunny_day/3.gbapal"
- .incbin "graphics/misc/sunny_day/4.gbapal"
- .incbin "graphics/misc/sunny_day/5.gbapal"
- .incbin "graphics/misc/sunny_day/6.gbapal"
- .incbin "graphics/misc/sunny_day/7.gbapal"
- .incbin "graphics/misc/sunny_day/8.gbapal"
- .incbin "graphics/misc/sunny_day/9.gbapal"
- .incbin "graphics/misc/sunny_day/10.gbapal"
- .incbin "graphics/misc/sunny_day/11.gbapal"
- .incbin "graphics/misc/sunny_day/12.gbapal"
- .incbin "graphics/misc/sunny_day/13.gbapal"
- .incbin "graphics/misc/sunny_day/14.gbapal"
- .incbin "graphics/misc/sunny_day/15.gbapal"
- .incbin "graphics/misc/sunny_day/16.gbapal"
- .incbin "graphics/misc/sunny_day/17.gbapal"
- .incbin "graphics/misc/sunny_day/18.gbapal"
- .incbin "graphics/misc/sunny_day/19.gbapal"
- .incbin "graphics/misc/sunny_day/20.gbapal"
- .incbin "graphics/misc/sunny_day/21.gbapal"
- .incbin "graphics/misc/sunny_day/22.gbapal"
- .incbin "graphics/misc/sunny_day/23.gbapal"
- .incbin "graphics/misc/sunny_day/24.gbapal"
- .incbin "graphics/misc/sunny_day/25.gbapal"
- .incbin "graphics/misc/sunny_day/26.gbapal"
- .incbin "graphics/misc/sunny_day/27.gbapal"
- .incbin "graphics/misc/sunny_day/28.gbapal"
- .incbin "graphics/misc/sunny_day/29.gbapal"
- .incbin "graphics/misc/sunny_day/30.gbapal"
- .incbin "graphics/misc/sunny_day/31.gbapal"
- .incbin "graphics/misc/sunny_day/32.gbapal"
- .incbin "graphics/misc/sunny_day/33.gbapal"
- .incbin "graphics/misc/sunny_day/34.gbapal"
- .incbin "graphics/misc/sunny_day/35.gbapal"
- .incbin "graphics/misc/sunny_day/36.gbapal"
- .incbin "graphics/misc/sunny_day/37.gbapal"
- .incbin "graphics/misc/sunny_day/38.gbapal"
- .incbin "graphics/misc/sunny_day/39.gbapal"
- .incbin "graphics/misc/sunny_day/40.gbapal"
- .incbin "graphics/misc/sunny_day/41.gbapal"
- .incbin "graphics/misc/sunny_day/42.gbapal"
- .incbin "graphics/misc/sunny_day/43.gbapal"
- .incbin "graphics/misc/sunny_day/44.gbapal"
- .incbin "graphics/misc/sunny_day/45.gbapal"
- .incbin "graphics/misc/sunny_day/46.gbapal"
- .incbin "graphics/misc/sunny_day/47.gbapal"
- .incbin "graphics/misc/sunny_day/48.gbapal"
- .incbin "graphics/misc/sunny_day/49.gbapal"
- .incbin "graphics/misc/sunny_day/50.gbapal"
- .incbin "graphics/misc/sunny_day/51.gbapal"
- .incbin "graphics/misc/sunny_day/52.gbapal"
- .incbin "graphics/misc/sunny_day/53.gbapal"
- .incbin "graphics/misc/sunny_day/54.gbapal"
- .incbin "graphics/misc/sunny_day/55.gbapal"
- .incbin "graphics/misc/sunny_day/56.gbapal"
- .incbin "graphics/misc/sunny_day/57.gbapal"
- .incbin "graphics/misc/sunny_day/58.gbapal"
- .incbin "graphics/misc/sunny_day/59.gbapal"
- .incbin "graphics/misc/sunny_day/60.gbapal"
- .incbin "graphics/misc/sunny_day/61.gbapal"
- .incbin "graphics/misc/sunny_day/62.gbapal"
- .incbin "graphics/misc/sunny_day/63.gbapal"
- .incbin "graphics/misc/sunny_day/64.gbapal"
- .incbin "graphics/misc/sunny_day/65.gbapal"
- .incbin "graphics/misc/sunny_day/66.gbapal"
- .incbin "graphics/misc/sunny_day/67.gbapal"
- .incbin "graphics/misc/sunny_day/68.gbapal"
- .incbin "graphics/misc/sunny_day/69.gbapal"
- .incbin "graphics/misc/sunny_day/70.gbapal"
- .incbin "graphics/misc/sunny_day/71.gbapal"
- .incbin "graphics/misc/sunny_day/72.gbapal"
- .incbin "graphics/misc/sunny_day/73.gbapal"
- .incbin "graphics/misc/sunny_day/74.gbapal"
- .incbin "graphics/misc/sunny_day/75.gbapal"
- .incbin "graphics/misc/sunny_day/76.gbapal"
- .incbin "graphics/misc/sunny_day/77.gbapal"
- .incbin "graphics/misc/sunny_day/78.gbapal"
- .incbin "graphics/misc/sunny_day/79.gbapal"
- .incbin "graphics/misc/sunny_day/80.gbapal"
- .incbin "graphics/misc/sunny_day/81.gbapal"
- .incbin "graphics/misc/sunny_day/82.gbapal"
- .incbin "graphics/misc/sunny_day/83.gbapal"
- .incbin "graphics/misc/sunny_day/84.gbapal"
- .incbin "graphics/misc/sunny_day/85.gbapal"
- .incbin "graphics/misc/sunny_day/86.gbapal"
- .incbin "graphics/misc/sunny_day/87.gbapal"
- .incbin "graphics/misc/sunny_day/88.gbapal"
- .incbin "graphics/misc/sunny_day/89.gbapal"
- .incbin "graphics/misc/sunny_day/90.gbapal"
- .incbin "graphics/misc/sunny_day/91.gbapal"
- .incbin "graphics/misc/sunny_day/92.gbapal"
- .incbin "graphics/misc/sunny_day/93.gbapal"
- .incbin "graphics/misc/sunny_day/94.gbapal"
- .incbin "graphics/misc/sunny_day/95.gbapal"
-
- .align 2
-gUnknown_0854C14C:: @ 854C14C
- .4byte gUnknown_02038454
-
- .align 2
-gUnknown_0854C150:: @ 854C150
- .4byte sub_80AB26C
- .4byte nullsub_36
- .4byte sub_80AB26C
- .4byte sub_80AB290
- .4byte sub_80AC438
- .4byte sub_80AC4B4
- .4byte sub_80AC484
- .4byte sub_80AC514
- .4byte sub_80AC55C
- .4byte nullsub_95
- .4byte sub_80AC580
- .4byte sub_80AC590
- .4byte sub_80AC928
- .4byte sub_80AC9C4
- .4byte sub_80AC994
- .4byte sub_80ACA24
- .4byte sub_80ACF8C
- .4byte snowflakes_progress2
- .4byte sub_80ACFDC
- .4byte sub_80AD084
- .4byte sub_80AD444
- .4byte sub_80AD584
- .4byte sub_80AD4B8
- .4byte sub_80AD910
- .4byte sub_80ADA60
- .4byte sub_80ADAF0
- .4byte sub_80ADAC0
- .4byte sub_80ADBB0
- .4byte sub_80ADDBC
- .4byte sub_80ADE48
- .4byte sub_80ADE18
- .4byte sub_80ADEF4
- .4byte sub_80AE45C
- .4byte sub_80AE50C
- .4byte sub_80AE4DC
- .4byte sub_80AE588
- .4byte sub_80AE0E4
- .4byte sub_80AE198
- .4byte sub_80AE168
- .4byte sub_80AE1FC
- .4byte sub_80ADA60
- .4byte sub_80ADAF0
- .4byte sub_80ADAC0
- .4byte sub_80ADBB0
- .4byte sub_80AE9F0
- .4byte nullsub_96
- .4byte sub_80AEA20
- .4byte sub_80AEA30
- .4byte sub_80AC6D0
- .4byte sub_80AC734
- .4byte sub_80AC704
- .4byte sub_80AC818
- .4byte sub_80AD4E8
- .4byte sub_80AD584
- .4byte sub_80AD554
- .4byte sub_80AD910
- .4byte sub_80AEA34
- .4byte sub_80AEAB8
- .4byte sub_80AEA88
- .4byte sub_80AEB2C
-
- .align 2
-gUnknown_0854C240:: @ 854C240
- .4byte sub_80AB3A8
- .4byte sub_80AB434
- .4byte nullsub_94
- .4byte nullsub_94
-
- .align 2
-gUnknown_0854C250:: @ 854C250
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01
-
- .align 2
-gUnknown_0854C270:: @ 854C270
- .incbin "graphics/weather/0.gbapal"
-
- .align 2
-gUnknown_0854C290:: @ 854C290
- .incbin "graphics/weather/1.gbapal"
-
- .align 2
-gUnknown_0854C2B0:: @ 854C2B0
- .incbin "graphics/weather/2.gbapal"
-
- .align 2
-gWeatherFog2Tiles:: @ 854C2D0
- .incbin "graphics/weather/fog2.4bpp"
-
- .align 2
-gWeatherFog1Tiles:: @ 854CAD0
- .incbin "graphics/weather/fog1.4bpp"
-
- .align 2
-gWeatherCloudTiles:: @ 854D2D0
- .incbin "graphics/weather/cloud.4bpp"
-
- .align 2
-gWeatherSnow1Tiles:: @ 854DAD0
- .incbin "graphics/weather/snow0.4bpp"
-
- .align 2
-gWeatherSnow2Tiles:: @ 854DAF0
- .incbin "graphics/weather/snow1.4bpp"
-
- .align 2
-gWeatherBubbleTiles:: @ 854DB10
- .incbin "graphics/weather/bubble.4bpp"
-
- .align 2
-gWeatherAshTiles:: @ 854DB50
- .incbin "graphics/weather/ash.4bpp"
-
- .align 2
-gWeatherRainTiles:: @ 854EB50
- .incbin "graphics/weather/rain.4bpp"
-
- .align 2
-gWeatherSandstormTiles:: @ 854F150
- .incbin "graphics/weather/sandstorm.4bpp"
-
- .align 1
-gUnknown_0854FB50:: @ 854FB50
- .2byte 0x0000, 0x0042, 0x0005, 0x0049, 0x000a, 0x004e
-
- .align 2
-sCloudSpriteSheet:: @ 854FB5C
- obj_tiles gWeatherCloudTiles, 0x0800, 0x1200
-
- .align 2
-gOamData_854FB64:: @ 854FB64
- .2byte 0x0400, 0xc000, 0x0c00, 0x0000
-
- .align 2
-gSpriteAnim_854FB6C:: @ 854FB6C
- .2byte 0x0000, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_854FB74:: @ 854FB74
- .4byte gSpriteAnim_854FB6C
-
- .align 2
-sCloudSpriteTemplate:: @ 854FB78
- spr_template 0x1200, 0x1201, gOamData_854FB64, gSpriteAnimTable_854FB74, NULL, gDummySpriteAffineAnimTable, sub_80AC6B4
-
- .align 2
-gUnknown_0854FB90:: @ 854FB90
- .2byte 0x0000, 0x0000, 0x0000, 0x00a0, 0x0000, 0x0040, 0x0090, 0x00e0, 0x0090, 0x0080, 0x0020, 0x0020, 0x0020, 0x00c0, 0x0020, 0x0060
- .2byte 0x0048, 0x0080, 0x0048, 0x0020, 0x0048, 0x00c0, 0x00d8, 0x0060, 0x00d8, 0x0000, 0x0068, 0x00a0, 0x0068, 0x0040, 0x0068, 0x00e0
- .2byte 0x0090, 0x0000, 0x0090, 0x00a0, 0x0090, 0x0040, 0x0020, 0x00e0, 0x0020, 0x0080, 0x0048, 0x0020, 0x0048, 0x00c0, 0x0030, 0x0060
-
- .align 2
-gOamData_854FBF0:: @ 854FBF0
- .2byte 0x8000, 0x8000, 0x2400, 0x0000
-
- .align 2
-gSpriteAnim_854FBF8:: @ 854FBF8
- .2byte 0x0000, 0x0010, 0xfffe, 0x0000
-
- .align 2
-gSpriteAnim_854FC00:: @ 854FC00
- .2byte 0x0008, 0x0003, 0x0020, 0x0002, 0x0028, 0x0002, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_854FC10:: @ 854FC10
- .2byte 0x0008, 0x0003, 0x0010, 0x0003, 0x0018, 0x0004, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_854FC20:: @ 854FC20
- .4byte gSpriteAnim_854FBF8
- .4byte gSpriteAnim_854FC00
- .4byte gSpriteAnim_854FC10
-
- .align 2
-gSpriteTemplate_854FC2C:: @ 854FC2C
- spr_template 0x1206, 0x1200, gOamData_854FBF0, gSpriteAnimTable_854FC20, NULL, gDummySpriteAffineAnimTable, sub_80ACB84
-
- .align 1
-gUnknown_0854FC44:: @ 854FC44
- .2byte 0xff98, 0x00d0, 0xff60, 0x0140
-
- .align 1
-gUnknown_0854FC4C:: @ 854FC4C
- .2byte 0x0012, 0x0007, 0x000c, 0x000a
-
- .align 2
-gUnknown_0854FC54:: @ 854FC54
- obj_tiles gWeatherRainTiles, 0x0600, 0x1206
-
- .align 2
-gOamData_854FC5C:: @ 854FC5C
- .2byte 0x0000, 0x0000, 0x0400, 0x0000
-
- .align 2
-gUnknown_0854FC64:: @ 854FC64
- obj_frame_tiles gWeatherSnow1Tiles, 0x0020
- obj_frame_tiles gWeatherSnow2Tiles, 0x0020
-
- .align 2
-gSpriteAnim_854FC74:: @ 854FC74
- .2byte 0x0000, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_854FC7C:: @ 854FC7C
- .2byte 0x0001, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_854FC84:: @ 854FC84
- .4byte gSpriteAnim_854FC74
- .4byte gSpriteAnim_854FC7C
-
- .align 2
-gUnknown_0854FC8C:: @ 854FC8C
- spr_template 0xffff, 0x1200, gOamData_854FC5C, gSpriteAnimTable_854FC84, gUnknown_0854FC64, gDummySpriteAffineAnimTable, sub_80AD30C
-
- .align 2
-gUnknown_0854FCA4:: @ 854FCA4
- .2byte 0x0000, 0x0006, 0x0006, 0x000c, 0x0012, 0x002a, 0x012c, 0x012c
-
- .align 2
-gOamData_854FCB4:: @ 854FCB4
- .2byte 0x0400, 0xc000, 0x0800, 0x0000
-
- .align 2
-gSpriteAnim_854FCBC:: @ 854FCBC
- .2byte 0x0000, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_854FCC4:: @ 854FCC4
- .2byte 0x0020, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_854FCCC:: @ 854FCCC
- .2byte 0x0040, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_854FCD4:: @ 854FCD4
- .2byte 0x0060, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_854FCDC:: @ 854FCDC
- .2byte 0x0080, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_854FCE4:: @ 854FCE4
- .2byte 0x00a0, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_854FCEC:: @ 854FCEC
- .4byte gSpriteAnim_854FCBC
- .4byte gSpriteAnim_854FCC4
- .4byte gSpriteAnim_854FCCC
- .4byte gSpriteAnim_854FCD4
- .4byte gSpriteAnim_854FCDC
- .4byte gSpriteAnim_854FCE4
-
- .align 2
-gSpriteAffineAnim_854FD04:: @ 854FD04
- .2byte 0x0200, 0x0200, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gSpriteAffineAnimTable_854FD14:: @ 854FD14
- .4byte gSpriteAffineAnim_854FD04
-
- .align 2
-gSpriteTemplate_854FD18:: @ 854FD18
- spr_template 0x1201, 0x1200, gOamData_854FCB4, gSpriteAnimTable_854FCEC, NULL, gSpriteAffineAnimTable_854FD14, sub_80ADC4C
-
- .align 2
-gUnknown_0854FD30:: @ 854FD30
- obj_tiles gWeatherFog1Tiles, 0x0800, 0x1201
-
- .align 2
-gUnknown_0854FD38:: @ 854FD38
- obj_tiles gWeatherAshTiles, 0x1000, 0x1202
-
- .align 2
-gOamData_854FD40:: @ 854FD40
- .2byte 0x0400, 0xc000, 0xf400, 0x0000
-
- .align 2
-gSpriteAnim_854FD48:: @ 854FD48
- .2byte 0x0000, 0x003c, 0x0040, 0x003c, 0xfffe, 0x0000
-
- .align 2
-gSpriteAnimTable_854FD54:: @ 854FD54
- .4byte gSpriteAnim_854FD48
-
- .align 2
-gSpriteTemplate_854FD58:: @ 854FD58
- spr_template 0x1202, 0x1200, gOamData_854FD40, gSpriteAnimTable_854FD54, NULL, gDummySpriteAffineAnimTable, sub_80AE068
-
- .align 2
-gUnknown_0854FD70:: @ 854FD70
- obj_tiles gWeatherFog2Tiles, 0x0800, 0x1203
-
- .align 2
-gOamData_854FD78:: @ 854FD78
- .2byte 0x0400, 0xc000, 0x0800, 0x0000
-
- .align 2
-gSpriteAnim_854FD80:: @ 854FD80
- .2byte 0x0000, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_854FD88:: @ 854FD88
- .4byte gSpriteAnim_854FD80
-
- .align 2
-gSpriteTemplate_854FD8C:: @ 854FD8C
- spr_template 0x1203, 0x1200, gOamData_854FD78, gSpriteAnimTable_854FD88, NULL, gDummySpriteAffineAnimTable, sub_80AE3FC
-
- .align 2
-gOamData_854FDA4:: @ 854FDA4
- .2byte 0x0400, 0xc000, 0x0400, 0x0000
-
- .align 2
-gSpriteAnim_854FDAC:: @ 854FDAC
- .2byte 0x0000, 0x0003, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_854FDB4:: @ 854FDB4
- .2byte 0x0040, 0x0003, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_854FDBC:: @ 854FDBC
- .4byte gSpriteAnim_854FDAC
- .4byte gSpriteAnim_854FDB4
-
- .align 2
-gSpriteTemplate_854FDC4:: @ 854FDC4
- spr_template 0x1204, 0x1201, gOamData_854FDA4, gSpriteAnimTable_854FDBC, NULL, gDummySpriteAffineAnimTable, sub_80AE8F8
-
- .align 2
-gUnknown_0854FDDC:: @ 854FDDC
- obj_tiles gWeatherSandstormTiles, 0x0a00, 0x1204
-
- .align 1
-gUnknown_0854FDE4:: @ 854FDE4
- .2byte 0x0000, 0x0078, 0x0050, 0x00a0, 0x0028, 0x0000
-
-gUnknown_0854FDF0:: @ 854FDF0
- .byte 0x28, 0x5a, 0x3c, 0x5a, 0x02, 0x3c, 0x28, 0x1e
-
- .align 2
-gUnknown_0854FDF8:: @ 854FDF8
- obj_tiles gWeatherBubbleTiles, 0x0040, 0x1205
-
- .align 1
-gUnknown_0854FE00:: @ 854FE00
- .2byte 0x0078, 0x00a0, 0x0178, 0x00a0, 0x0028, 0x008c, 0x0128, 0x008c, 0x00b4, 0x0082, 0x01b4, 0x0082, 0x003c, 0x00a0, 0x01b4, 0x00a0
- .2byte 0x00dc, 0x00b4, 0x01dc, 0x00b4, 0x000a, 0x005a, 0x010a, 0x005a, 0x0100, 0x00a0
-
- .align 2
-gSpriteAnim_854FE34:: @ 854FE34
- .2byte 0x0000, 0x0010, 0x0001, 0x0010, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_854FE40:: @ 854FE40
- .4byte gSpriteAnim_854FE34
-
- .align 2
-gSpriteTemplate_854FE44:: @ 854FE44
- spr_template 0x1205, 0x1200, gUnknown_08524904, gSpriteAnimTable_854FE40, NULL, gDummySpriteAffineAnimTable, sub_80AEC34
-
-gUnknown_0854FE5C:: @ 854FE5C
- .byte 0x02, 0x03, 0x05, 0x03
-
-gUnknown_0854FE60:: @ 854FE60
- .byte 0x02, 0x02, 0x03, 0x02
-
- .align 1
-gUnknown_0854FE64:: @ 854FE64
- .2byte 0x00c8, 0x0048, 0x0040, 0x0038, 0x0030, 0x0028, 0x0020, 0x0018, 0x0000, 0x0000
-
- .align 2
-gMaxFlashLevel:: @ 854FE78
- .4byte 0x00000008
-
- .align 2
-gUnknown_0854FE7C:: @ 854FE7C
- .4byte 0x04000040, 0xa2600001, 0x00000001
-
diff --git a/data/field_weather.s b/data/field_weather.s
new file mode 100644
index 000000000..2121ecf23
--- /dev/null
+++ b/data/field_weather.s
@@ -0,0 +1,103 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+gUnknown_0854014C:: @ 854014C
+ .incbin "graphics/misc/sunny_day/0.gbapal"
+ .incbin "graphics/misc/sunny_day/1.gbapal"
+ .incbin "graphics/misc/sunny_day/2.gbapal"
+ .incbin "graphics/misc/sunny_day/3.gbapal"
+ .incbin "graphics/misc/sunny_day/4.gbapal"
+ .incbin "graphics/misc/sunny_day/5.gbapal"
+ .incbin "graphics/misc/sunny_day/6.gbapal"
+ .incbin "graphics/misc/sunny_day/7.gbapal"
+ .incbin "graphics/misc/sunny_day/8.gbapal"
+ .incbin "graphics/misc/sunny_day/9.gbapal"
+ .incbin "graphics/misc/sunny_day/10.gbapal"
+ .incbin "graphics/misc/sunny_day/11.gbapal"
+ .incbin "graphics/misc/sunny_day/12.gbapal"
+ .incbin "graphics/misc/sunny_day/13.gbapal"
+ .incbin "graphics/misc/sunny_day/14.gbapal"
+ .incbin "graphics/misc/sunny_day/15.gbapal"
+ .incbin "graphics/misc/sunny_day/16.gbapal"
+ .incbin "graphics/misc/sunny_day/17.gbapal"
+ .incbin "graphics/misc/sunny_day/18.gbapal"
+ .incbin "graphics/misc/sunny_day/19.gbapal"
+ .incbin "graphics/misc/sunny_day/20.gbapal"
+ .incbin "graphics/misc/sunny_day/21.gbapal"
+ .incbin "graphics/misc/sunny_day/22.gbapal"
+ .incbin "graphics/misc/sunny_day/23.gbapal"
+ .incbin "graphics/misc/sunny_day/24.gbapal"
+ .incbin "graphics/misc/sunny_day/25.gbapal"
+ .incbin "graphics/misc/sunny_day/26.gbapal"
+ .incbin "graphics/misc/sunny_day/27.gbapal"
+ .incbin "graphics/misc/sunny_day/28.gbapal"
+ .incbin "graphics/misc/sunny_day/29.gbapal"
+ .incbin "graphics/misc/sunny_day/30.gbapal"
+ .incbin "graphics/misc/sunny_day/31.gbapal"
+ .incbin "graphics/misc/sunny_day/32.gbapal"
+ .incbin "graphics/misc/sunny_day/33.gbapal"
+ .incbin "graphics/misc/sunny_day/34.gbapal"
+ .incbin "graphics/misc/sunny_day/35.gbapal"
+ .incbin "graphics/misc/sunny_day/36.gbapal"
+ .incbin "graphics/misc/sunny_day/37.gbapal"
+ .incbin "graphics/misc/sunny_day/38.gbapal"
+ .incbin "graphics/misc/sunny_day/39.gbapal"
+ .incbin "graphics/misc/sunny_day/40.gbapal"
+ .incbin "graphics/misc/sunny_day/41.gbapal"
+ .incbin "graphics/misc/sunny_day/42.gbapal"
+ .incbin "graphics/misc/sunny_day/43.gbapal"
+ .incbin "graphics/misc/sunny_day/44.gbapal"
+ .incbin "graphics/misc/sunny_day/45.gbapal"
+ .incbin "graphics/misc/sunny_day/46.gbapal"
+ .incbin "graphics/misc/sunny_day/47.gbapal"
+ .incbin "graphics/misc/sunny_day/48.gbapal"
+ .incbin "graphics/misc/sunny_day/49.gbapal"
+ .incbin "graphics/misc/sunny_day/50.gbapal"
+ .incbin "graphics/misc/sunny_day/51.gbapal"
+ .incbin "graphics/misc/sunny_day/52.gbapal"
+ .incbin "graphics/misc/sunny_day/53.gbapal"
+ .incbin "graphics/misc/sunny_day/54.gbapal"
+ .incbin "graphics/misc/sunny_day/55.gbapal"
+ .incbin "graphics/misc/sunny_day/56.gbapal"
+ .incbin "graphics/misc/sunny_day/57.gbapal"
+ .incbin "graphics/misc/sunny_day/58.gbapal"
+ .incbin "graphics/misc/sunny_day/59.gbapal"
+ .incbin "graphics/misc/sunny_day/60.gbapal"
+ .incbin "graphics/misc/sunny_day/61.gbapal"
+ .incbin "graphics/misc/sunny_day/62.gbapal"
+ .incbin "graphics/misc/sunny_day/63.gbapal"
+ .incbin "graphics/misc/sunny_day/64.gbapal"
+ .incbin "graphics/misc/sunny_day/65.gbapal"
+ .incbin "graphics/misc/sunny_day/66.gbapal"
+ .incbin "graphics/misc/sunny_day/67.gbapal"
+ .incbin "graphics/misc/sunny_day/68.gbapal"
+ .incbin "graphics/misc/sunny_day/69.gbapal"
+ .incbin "graphics/misc/sunny_day/70.gbapal"
+ .incbin "graphics/misc/sunny_day/71.gbapal"
+ .incbin "graphics/misc/sunny_day/72.gbapal"
+ .incbin "graphics/misc/sunny_day/73.gbapal"
+ .incbin "graphics/misc/sunny_day/74.gbapal"
+ .incbin "graphics/misc/sunny_day/75.gbapal"
+ .incbin "graphics/misc/sunny_day/76.gbapal"
+ .incbin "graphics/misc/sunny_day/77.gbapal"
+ .incbin "graphics/misc/sunny_day/78.gbapal"
+ .incbin "graphics/misc/sunny_day/79.gbapal"
+ .incbin "graphics/misc/sunny_day/80.gbapal"
+ .incbin "graphics/misc/sunny_day/81.gbapal"
+ .incbin "graphics/misc/sunny_day/82.gbapal"
+ .incbin "graphics/misc/sunny_day/83.gbapal"
+ .incbin "graphics/misc/sunny_day/84.gbapal"
+ .incbin "graphics/misc/sunny_day/85.gbapal"
+ .incbin "graphics/misc/sunny_day/86.gbapal"
+ .incbin "graphics/misc/sunny_day/87.gbapal"
+ .incbin "graphics/misc/sunny_day/88.gbapal"
+ .incbin "graphics/misc/sunny_day/89.gbapal"
+ .incbin "graphics/misc/sunny_day/90.gbapal"
+ .incbin "graphics/misc/sunny_day/91.gbapal"
+ .incbin "graphics/misc/sunny_day/92.gbapal"
+ .incbin "graphics/misc/sunny_day/93.gbapal"
+ .incbin "graphics/misc/sunny_day/94.gbapal"
+ .incbin "graphics/misc/sunny_day/95.gbapal"
diff --git a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc
index 75ac9a4ec..660e13947 100644
--- a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc
@@ -536,7 +536,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257C16:: @ 8257C16
hideobjectat 8, MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM
removeobject 7
call BattleFrontier_BattleArenaBattleRoom_EventScript_24BCDC
- applymovement 255, BattleFrontier_BattleArenaBattleRoom_Movement_24C773
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleArenaBattleRoom_Movement_24C773
setvar VAR_TEMP_1, 1
end
diff --git a/data/maps/BattleFrontier_BattleArenaCorridor/scripts.inc b/data/maps/BattleFrontier_BattleArenaCorridor/scripts.inc
index 5ffb5de3d..f83f6f339 100644
--- a/data/maps/BattleFrontier_BattleArenaCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattleArenaCorridor/scripts.inc
@@ -10,14 +10,14 @@ BattleFrontier_BattleArenaCorridor_EventScript_2573C9:: @ 82573C9
delay 16
setvar VAR_TEMP_0, 1
applymovement 1, BattleFrontier_BattleArenaCorridor_Movement_25742F
- applymovement 255, BattleFrontier_BattleArenaCorridor_Movement_257417
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleArenaCorridor_Movement_257417
waitmovement 0
applymovement 1, BattleFrontier_BattleArenaCorridor_Movement_257444
waitmovement 0
msgbox BattleFrontier_BattleArenaCorridor_Text_257449, MSGBOX_SIGN
applymovement 1, BattleFrontier_BattleArenaCorridor_Movement_257446
waitmovement 0
- applymovement 255, BattleFrontier_BattleArenaCorridor_Movement_25742C
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleArenaCorridor_Movement_25742C
waitmovement 0
setvar VAR_0x8006, 0
warp MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM, 255, 7, 5
diff --git a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc
index 36f864c14..79044d471 100644
--- a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc
@@ -259,12 +259,12 @@ BattleFrontier_BattleArenaLobby_EventScript_256003:: @ 8256003
BattleFrontier_BattleArenaLobby_EventScript_256005:: @ 8256005
applymovement 1, BattleFrontier_BattleArenaLobby_Movement_256034
- applymovement 255, BattleFrontier_BattleArenaLobby_Movement_256041
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_256041
waitmovement 0
opendoor 2, 2
waitdooranim
applymovement 1, BattleFrontier_BattleArenaLobby_Movement_25603E
- applymovement 255, BattleFrontier_BattleArenaLobby_Movement_25604C
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_25604C
waitmovement 0
closedoor 2, 2
waitdooranim
@@ -308,12 +308,12 @@ BattleFrontier_BattleArenaLobby_Movement_25604C: @ 825604C
BattleFrontier_BattleArenaLobby_EventScript_256050:: @ 8256050
applymovement 1, BattleFrontier_BattleArenaLobby_Movement_25607F
- applymovement 255, BattleFrontier_BattleArenaLobby_Movement_256088
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_256088
waitmovement 0
opendoor 11, 2
waitdooranim
applymovement 1, BattleFrontier_BattleArenaLobby_Movement_25603E
- applymovement 255, BattleFrontier_BattleArenaLobby_Movement_25604C
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleArenaLobby_Movement_25604C
waitmovement 0
closedoor 11, 2
waitdooranim
diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc
index 2d147e426..9b4c045d8 100644
--- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc
@@ -551,7 +551,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C48B:: @ 824C48B
call BattleFrontier_BattleDomeBattleRoom_EventScript_24C502
call BattleFrontier_BattleDomeBattleRoom_EventScript_24BCDC
setvar VAR_TEMP_1, 1
- applymovement 255, BattleFrontier_BattleDomeBattleRoom_Movement_24C773
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_24C773
setvar VAR_0x8004, 1
setvar VAR_0x8005, 2
special CallFrontierUtilFunc
diff --git a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc
index a4c0dafc4..f69e7b633 100644
--- a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc
@@ -15,12 +15,12 @@ BattleFrontier_BattleDomeCorridor_EventScript_24B10E:: @ 824B10E
compare VAR_RESULT, 1
goto_eq BattleFrontier_BattleDomeCorridor_EventScript_24B161
applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1B2
- applymovement 255, BattleFrontier_BattleDomeCorridor_Movement_24B1A1
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1A1
waitmovement 0
opendoor 13, 3
waitdooranim
applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1BE
- applymovement 255, BattleFrontier_BattleDomeCorridor_Movement_24B1AE
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1AE
waitmovement 0
closedoor 13, 3
waitdooranim
@@ -28,12 +28,12 @@ BattleFrontier_BattleDomeCorridor_EventScript_24B10E:: @ 824B10E
BattleFrontier_BattleDomeCorridor_EventScript_24B161:: @ 824B161
applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1D6
- applymovement 255, BattleFrontier_BattleDomeCorridor_Movement_24B1C1
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1C1
waitmovement 0
opendoor 37, 3
waitdooranim
applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1E6
- applymovement 255, BattleFrontier_BattleDomeCorridor_Movement_24B1D2
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1D2
waitmovement 0
closedoor 37, 3
waitdooranim
diff --git a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc
index a4a719090..9e906433a 100644
--- a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc
@@ -313,7 +313,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249C6E:: @ 8249C6E
call_if 1, BattleFrontier_BattleDomeLobby_EventScript_249CDD
compare VAR_FRONTIER_BATTLE_MODE, 1
call_if 1, BattleFrontier_BattleDomeLobby_EventScript_249CE5
- applymovement 255, BattleFrontier_BattleDomeLobby_Movement_249D45
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_249D45
waitmovement 0
compare VAR_FRONTIER_BATTLE_MODE, 0
call_if 1, BattleFrontier_BattleDomeLobby_EventScript_249D2D
@@ -324,7 +324,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249C6E:: @ 8249C6E
call_if 1, BattleFrontier_BattleDomeLobby_EventScript_249CED
compare VAR_FRONTIER_BATTLE_MODE, 1
call_if 1, BattleFrontier_BattleDomeLobby_EventScript_249CF5
- applymovement 255, BattleFrontier_BattleDomeLobby_Movement_249D4E
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_249D4E
waitmovement 0
compare VAR_FRONTIER_BATTLE_MODE, 0
call_if 1, BattleFrontier_BattleDomeLobby_EventScript_249D39
diff --git a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc
index 28d634162..8e4a8c944 100644
--- a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc
@@ -24,7 +24,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B222:: @ 824B222
setvar VAR_0x8006, 1
special CallFrontierUtilFunc
setvar VAR_TEMP_0, 1
- applymovement 255, BattleFrontier_BattleDomePreBattleRoom_Movement_24B652
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B652
waitmovement 0
lockall
@@ -171,11 +171,11 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D:: @ 824B46D
closemessage
applymovement 1, BattleFrontier_BattleDomePreBattleRoom_Movement_24B64F
waitmovement 0
- applymovement 255, BattleFrontier_BattleDomePreBattleRoom_Movement_24B657
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B657
waitmovement 0
opendoor 5, 1
waitdooranim
- applymovement 255, BattleFrontier_BattleDomePreBattleRoom_Movement_24B659
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B659
waitmovement 0
closedoor 5, 1
waitdooranim
diff --git a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc
index ab3ea4d7c..4298f7579 100644
--- a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc
@@ -55,7 +55,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25AE3B:: @ 825AE3B
closemessage
applymovement 2, BattleFrontier_BattleFactoryBattleRoom_Movement_25B18B
applymovement 8, BattleFrontier_BattleFactoryBattleRoom_Movement_25B17B
- applymovement 255, BattleFrontier_BattleFactoryBattleRoom_Movement_25B17B
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_25B17B
waitmovement 0
call BattleFrontier_BattleFactoryBattleRoom_EventScript_25B1B4
goto BattleFrontier_BattleFactoryBattleRoom_EventScript_25AEA7
@@ -65,7 +65,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25AE67:: @ 825AE67
compare VAR_TEMP_F, 0
goto_if 5, BattleFrontier_BattleFactoryBattleRoom_EventScript_25AE3B
applymovement 8, BattleFrontier_BattleFactoryBattleRoom_Movement_25B17B
- applymovement 255, BattleFrontier_BattleFactoryBattleRoom_Movement_25B17B
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleFactoryBattleRoom_Movement_25B17B
waitmovement 0
call BattleFrontier_BattleFactoryBattleRoom_EventScript_25B1B4
setvar VAR_0x8004, 11
diff --git a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc
index b387fc048..ab6e3ee84 100644
--- a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc
@@ -223,7 +223,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_25871A:: @ 825871A
compare VAR_FRONTIER_BATTLE_MODE, 1
call_if 1, BattleFrontier_BattleFactoryLobby_EventScript_258762
applymovement VAR_LAST_TALKED, BattleFrontier_BattleFactoryLobby_Movement_2587A7
- applymovement 255, BattleFrontier_BattleFactoryLobby_Movement_2587AC
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleFactoryLobby_Movement_2587AC
waitmovement 0
warp MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM, 255, 8, 13
setvar VAR_TEMP_0, 0
diff --git a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc
index a212ce38f..683b633ff 100644
--- a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc
@@ -27,7 +27,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259AF9:: @ 8259AF9
goto_eq BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259BA5
setvar VAR_TEMP_0, 1
applymovement 1, BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A1AC
- applymovement 255, BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A19A
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A19A
waitmovement 0
compare VAR_0x8006, 2
goto_eq BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E69
@@ -448,12 +448,12 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_25A146:: @ 825A146
BattleFrontier_BattleFactoryPreBattleRoom_EventScript_25A17C:: @ 825A17C
applymovement 1, BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A1B3
- applymovement 255, BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A1A0
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A1A0
return
BattleFrontier_BattleFactoryPreBattleRoom_EventScript_25A18B:: @ 825A18B
applymovement 1, BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A1B9
- applymovement 255, BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A1A6
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A1A6
return
BattleFrontier_BattleFactoryPreBattleRoom_Movement_25A19A: @ 825A19A
diff --git a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc
index ccada959e..c377d9580 100644
--- a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc
@@ -357,7 +357,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24FE3E:: @ 824FE3E
hideobjectat 1, MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM
call BattleFrontier_BattlePalaceBattleRoom_EventScript_24F833
setvar VAR_TEMP_1, 1
- applymovement 255, BattleFrontier_BattlePalaceBattleRoom_Movement_24FE90
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePalaceBattleRoom_Movement_24FE90
removeobject 2
applymovement 4, BattleFrontier_BattlePalaceBattleRoom_Movement_24FE90
applymovement 5, BattleFrontier_BattlePalaceBattleRoom_Movement_24FE90
diff --git a/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc b/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc
index 199a67fa6..98c6f8092 100644
--- a/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc
@@ -9,7 +9,7 @@ BattleFrontier_BattlePalaceCorridor_MapScript2_24F4A9: @ 824F4A9
BattleFrontier_BattlePalaceCorridor_EventScript_24F4B3:: @ 824F4B3
delay 16
applymovement 1, BattleFrontier_BattlePalaceCorridor_Movement_24F5B8
- applymovement 255, BattleFrontier_BattlePalaceCorridor_Movement_24F5B8
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_24F5B8
waitmovement 0
lockall
setvar VAR_0x8004, 3
@@ -31,12 +31,12 @@ BattleFrontier_BattlePalaceCorridor_EventScript_24F4B3:: @ 824F4B3
compare VAR_RESULT, 1
goto_eq BattleFrontier_BattlePalaceCorridor_EventScript_24F553
applymovement 1, BattleFrontier_BattlePalaceCorridor_Movement_24F5BD
- applymovement 255, BattleFrontier_BattlePalaceCorridor_Movement_24F5C4
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_24F5C4
waitmovement 0
opendoor 6, 3
waitdooranim
applymovement 1, BattleFrontier_BattlePalaceCorridor_Movement_24F5DA
- applymovement 255, BattleFrontier_BattlePalaceCorridor_Movement_24F5D9
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_24F5D9
waitmovement 0
closedoor 6, 3
waitdooranim
@@ -44,12 +44,12 @@ BattleFrontier_BattlePalaceCorridor_EventScript_24F4B3:: @ 824F4B3
BattleFrontier_BattlePalaceCorridor_EventScript_24F553:: @ 824F553
applymovement 1, BattleFrontier_BattlePalaceCorridor_Movement_24F5CB
- applymovement 255, BattleFrontier_BattlePalaceCorridor_Movement_24F5D2
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_24F5D2
waitmovement 0
opendoor 10, 3
waitdooranim
applymovement 1, BattleFrontier_BattlePalaceCorridor_Movement_24F5DA
- applymovement 255, BattleFrontier_BattlePalaceCorridor_Movement_24F5D9
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePalaceCorridor_Movement_24F5D9
waitmovement 0
closedoor 10, 3
waitdooranim
diff --git a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc
index c81331ddc..223dbc45a 100644
--- a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc
@@ -303,7 +303,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DBBC:: @ 824DBBC
compare VAR_FRONTIER_BATTLE_MODE, 1
call_if 1, BattleFrontier_BattlePalaceLobby_EventScript_24DC29
applymovement VAR_LAST_TALKED, BattleFrontier_BattlePalaceLobby_Movement_24DC47
- applymovement 255, BattleFrontier_BattlePalaceLobby_Movement_24DC47
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePalaceLobby_Movement_24DC47
waitmovement 0
compare VAR_FRONTIER_BATTLE_MODE, 0
call_if 1, BattleFrontier_BattlePalaceLobby_EventScript_24DC2F
@@ -311,7 +311,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DBBC:: @ 824DBBC
call_if 1, BattleFrontier_BattlePalaceLobby_EventScript_24DC35
waitdooranim
applymovement VAR_LAST_TALKED, BattleFrontier_BattlePalaceLobby_Movement_24DC49
- applymovement 255, BattleFrontier_BattlePalaceLobby_Movement_24DC4C
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePalaceLobby_Movement_24DC4C
waitmovement 0
compare VAR_FRONTIER_BATTLE_MODE, 0
call_if 1, BattleFrontier_BattlePalaceLobby_EventScript_24DC3B
diff --git a/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc b/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc
index 0a0df3636..7793fcbc2 100644
--- a/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc
@@ -18,14 +18,14 @@ BattleFrontier_BattlePikeCorridor_EventScript_25C786:: @ 825C786
setvar VAR_0x8004, 24
setvar VAR_0x8005, 1
special CallBattlePikeFunction
- applymovement 255, BattleFrontier_BattlePikeCorridor_Movement_25C80B
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeCorridor_Movement_25C80B
applymovement 1, BattleFrontier_BattlePikeCorridor_Movement_25C812
waitmovement 0
lockall
msgbox BattleFrontier_BattlePikeCorridor_Text_25C817, MSGBOX_DEFAULT
closemessage
releaseall
- applymovement 255, BattleFrontier_BattlePikeCorridor_Movement_25C80E
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeCorridor_Movement_25C80E
waitmovement 0
setvar VAR_0x8004, 2
setvar VAR_0x8005, 0
diff --git a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc
index e4f3e1a6e..82ff5b3ae 100644
--- a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc
@@ -263,7 +263,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25BA80:: @ 825BA80
BattleFrontier_BattlePikeLobby_EventScript_25BA94:: @ 825BA94
applymovement 1, BattleFrontier_BattlePikeLobby_Movement_25BAA7
- applymovement 255, BattleFrontier_BattlePikeLobby_Movement_25BAA6
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeLobby_Movement_25BAA6
waitmovement 0
return
diff --git a/data/maps/BattleFrontier_BattlePikeRandomRoom1/scripts.inc b/data/maps/BattleFrontier_BattlePikeRandomRoom1/scripts.inc
index 79a10880a..eea909b9c 100644
--- a/data/maps/BattleFrontier_BattlePikeRandomRoom1/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeRandomRoom1/scripts.inc
@@ -112,8 +112,8 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D2BF:: @ 825D2BF
BattleFrontier_BattlePikeRandomRoom1_EventScript_25D2FB:: @ 825D2FB
msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25E311, MSGBOX_DEFAULT
closemessage
- special SpawnScriptEventObject
- applymovement 127, BattleFrontier_BattlePikeRandomRoom1_Movement_25D9B0
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, BattleFrontier_BattlePikeRandomRoom1_Movement_25D9B0
applymovement 2, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7E2
waitmovement 0
playse 267
@@ -215,7 +215,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D460:: @ 825D460
BattleFrontier_BattlePikeRandomRoom1_EventScript_25D49D:: @ 825D49D
applymovement 1, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7EA
waitmovement 0
- applymovement 255, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7DC
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7DC
waitmovement 0
setvar VAR_0x8004, 1
setvar VAR_0x8005, 1
@@ -277,7 +277,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D53E:: @ 825D53E
applymovement 1, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7C8
applymovement 2, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7CA
waitmovement 0
- applymovement 255, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7BB
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7BB
waitmovement 0
setvar VAR_0x8004, 21
setvar VAR_0x8005, 0
@@ -285,7 +285,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D53E:: @ 825D53E
msgbox gStringVar4, MSGBOX_DEFAULT
closemessage
delay 16
- applymovement 255, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7BD
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7BD
waitmovement 0
setvar VAR_0x8004, 21
setvar VAR_0x8005, 1
@@ -302,13 +302,13 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D53E:: @ 825D53E
end
BattleFrontier_BattlePikeRandomRoom1_EventScript_25D5DC:: @ 825D5DC
- applymovement 255, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7BD
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7BD
waitmovement 0
applymovement 1, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7CC
waitmovement 0
applymovement 2, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7D4
waitmovement 0
- applymovement 255, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7BF
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7BF
waitmovement 0
end
@@ -431,7 +431,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D774:: @ 825D774
BattleFrontier_BattlePikeRandomRoom1_EventScript_25D77B:: @ 825D77B
closemessage
- applymovement 255, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7DC
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePikeRandomRoom1_Movement_25D7DC
waitmovement 0
setvar VAR_0x8004, SPECIAL_BATTLE_PIKE_SINGLE
setvar VAR_0x8005, 0
diff --git a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc
index d890b2d06..c2c32e0b1 100644
--- a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc
@@ -434,7 +434,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250D42:: @ 8250D42
BattleFrontier_BattlePyramidLobby_EventScript_250D56:: @ 8250D56
applymovement 1, BattleFrontier_BattlePyramidLobby_Movement_250DC4
- applymovement 255, BattleFrontier_BattlePyramidLobby_Movement_250DCD
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePyramidLobby_Movement_250DCD
waitmovement 0
msgbox BattleFrontier_BattlePyramidLobby_Text_251569, MSGBOX_DEFAULT
setvar VAR_0x8004, 1
@@ -457,7 +457,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250D9C:: @ 8250D9C
closemessage
applymovement 1, BattleFrontier_BattlePyramidLobby_Movement_250DD5
waitmovement 0
- applymovement 255, BattleFrontier_BattlePyramidLobby_Movement_250DD8
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePyramidLobby_Movement_250DD8
waitmovement 0
return
diff --git a/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc b/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc
index d7a1a3c3b..a3a004d6b 100644
--- a/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc
@@ -96,7 +96,7 @@ BattleFrontier_BattlePyramidTop_EventScript_2551D0:: @ 82551D0
closemessage
applymovement 1, BattleFrontier_BattlePyramidTop_Movement_2553FD
waitmovement 0
- applymovement 255, BattleFrontier_BattlePyramidTop_Movement_255403
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattlePyramidTop_Movement_255403
waitmovement 0
applymovement 1, BattleFrontier_BattlePyramidTop_Movement_255400
waitmovement 0
@@ -138,8 +138,8 @@ BattleFrontier_BattlePyramidTop_EventScript_255256:: @ 8255256
special CallFrontierUtilFunc
compare VAR_RESULT, 0
goto_if 5, BattleFrontier_BattlePyramidTop_EventScript_2552D0
- special SpawnScriptEventObject
- applymovement 127, BattleFrontier_BattlePyramidTop_Movement_25540C
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, BattleFrontier_BattlePyramidTop_Movement_25540C
waitmovement 0
msgbox BattleFrontier_BattlePyramidTop_Text_255669, MSGBOX_DEFAULT
closemessage
@@ -185,8 +185,8 @@ BattleFrontier_BattlePyramidTop_EventScript_255335:: @ 8255335
special CallFrontierUtilFunc
compare VAR_RESULT, 0
goto_if 5, BattleFrontier_BattlePyramidTop_EventScript_255388
- special SpawnScriptEventObject
- applymovement 127, BattleFrontier_BattlePyramidTop_Movement_25540C
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, BattleFrontier_BattlePyramidTop_Movement_25540C
waitmovement 0
msgbox BattleFrontier_BattlePyramidTop_Text_255951, MSGBOX_DEFAULT
closemessage
diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc
index 83b78d40e..d8e3d3ce6 100644
--- a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc
@@ -18,7 +18,7 @@ BattleFrontier_BattleTowerBattleRoom_MapScript2_241B62: @ 8241B62
BattleFrontier_BattleTowerBattleRoom_EventScript_241B6C:: @ 8241B6C
setvar VAR_TEMP_0, 1
- applymovement 255, BattleFrontier_BattleTowerBattleRoom_Movement_242179
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_242179
waitmovement 0
setvar VAR_0x8004, 1
setvar VAR_0x8005, 2
@@ -27,7 +27,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241B6C:: @ 8241B6C
goto_eq BattleFrontier_BattleTowerBattleRoom_EventScript_241BC3
applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_24218D
waitmovement 0
- applymovement 255, BattleFrontier_BattleTowerBattleRoom_Movement_24217E
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_24217E
waitmovement 0
setvar VAR_TEMP_2, 1
setvar VAR_0x8004, 2
@@ -79,7 +79,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241C2F:: @ 8241C2F
call_if 5, BattleFrontier_BattleTowerBattleRoom_EventScript_241EC3
applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_24218D
waitmovement 0
- applymovement 255, BattleFrontier_BattleTowerBattleRoom_Movement_24217E
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_24217E
waitmovement 0
msgbox BattleFrontier_BattleTowerBattleRoom_Text_242217, MSGBOX_DEFAULT
playfanfare MUS_ME_ASA
@@ -146,7 +146,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241DAA:: @ 8241DAA
BattleFrontier_BattleTowerBattleRoom_EventScript_241DDC:: @ 8241DDC
closemessage
- applymovement 255, BattleFrontier_BattleTowerBattleRoom_Movement_242180
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_242180
waitmovement 0
applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_242192
waitmovement 0
@@ -275,7 +275,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241F79:: @ 8241F79
BattleFrontier_BattleTowerBattleRoom_EventScript_241FAF:: @ 8241FAF
call BattleFrontier_BattleTowerBattleRoom_EventScript_242170
closemessage
- applymovement 255, BattleFrontier_BattleTowerBattleRoom_Movement_242180
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_242180
waitmovement 0
applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_242192
waitmovement 0
diff --git a/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc b/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc
index 9ff6bbc59..b0a9624f8 100644
--- a/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc
@@ -24,13 +24,13 @@ BattleFrontier_BattleTowerCorridor_EventScript_241AF0:: @ 8241AF0
compare VAR_0x8006, 1
goto_eq BattleFrontier_BattleTowerCorridor_EventScript_241B16
applymovement 1, BattleFrontier_BattleTowerCorridor_Movement_241B3A
- applymovement 255, BattleFrontier_BattleTowerCorridor_Movement_241B39
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_241B39
waitmovement 0
goto BattleFrontier_BattleTowerCorridor_EventScript_241B27
BattleFrontier_BattleTowerCorridor_EventScript_241B16:: @ 8241B16
applymovement 1, BattleFrontier_BattleTowerCorridor_Movement_241B37
- applymovement 255, BattleFrontier_BattleTowerCorridor_Movement_241B36
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_241B36
waitmovement 0
BattleFrontier_BattleTowerCorridor_EventScript_241B27:: @ 8241B27
diff --git a/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc b/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc
index 968d45772..aa0fa97ff 100644
--- a/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc
@@ -10,7 +10,7 @@ BattleFrontier_BattleTowerElevator_MapScript2_2419E6: @ 82419E6
BattleFrontier_BattleTowerElevator_EventScript_2419F0:: @ 82419F0
setvar VAR_TEMP_0, 1
applymovement 1, BattleFrontier_BattleTowerElevator_Movement_241A86
- applymovement 255, BattleFrontier_BattleTowerElevator_Movement_241A8A
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_241A8A
waitmovement 0
special sub_813A080
waitse
@@ -18,7 +18,7 @@ BattleFrontier_BattleTowerElevator_EventScript_2419F0:: @ 82419F0
waitstate
delay 48
applymovement 1, BattleFrontier_BattleTowerElevator_Movement_241A8E
- applymovement 255, BattleFrontier_BattleTowerElevator_Movement_241A92
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_241A92
waitmovement 0
call BattleFrontier_BattleTowerElevator_EventScript_241A28
end
diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc
index 0911ea5f2..ec649dd9f 100644
--- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc
@@ -769,12 +769,12 @@ BattleFrontier_BattleTowerLobby_EventScript_23F15B:: @ 823F15B
call BattleFrontier_BattleTowerLobby_EventScript_23F1E8
call BattleFrontier_BattleTowerLobby_EventScript_23F22D
applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerLobby_Movement_23F195
- applymovement 255, BattleFrontier_BattleTowerLobby_Movement_23F195
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_23F195
waitmovement 0
opendoor VAR_0x8004, 1
waitdooranim
applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerLobby_Movement_23F199
- applymovement 255, BattleFrontier_BattleTowerLobby_Movement_23F19C
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_23F19C
waitmovement 0
closedoor VAR_0x8004, 1
waitdooranim
diff --git a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc
index b0c35a7fc..03bb7be63 100644
--- a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc
@@ -60,12 +60,12 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E35:: @ 8243E35
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E41:: @ 8243E41
lockall
- applymovement 255, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243E75
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243E75
waitmovement 0
applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243E77
waitmovement 0
moveobjectoffscreen 1
- applymovement 255, BattleFrontier_BattleTowerMultiBattleRoom_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_2725A6
waitmovement 0
msgbox BattleFrontier_BattleTowerMultiBattleRoom_Text_244056, MSGBOX_DEFAULT
special HealPlayerParty
@@ -119,19 +119,19 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243EB5:: @ 8243EB5
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243EE4:: @ 8243EE4
applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F26
- applymovement 255, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F1A
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F1A
waitmovement 0
return
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243EF6: @ 8243EF6
applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F26
- applymovement 255, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F1E
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F1E
waitmovement 0
return
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F08: @ 8243F08
applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F26
- applymovement 255, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F22
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F22
waitmovement 0
return
diff --git a/data/maps/BattleFrontier_OutsideEast/scripts.inc b/data/maps/BattleFrontier_OutsideEast/scripts.inc
index fe034442e..bc154052d 100644
--- a/data/maps/BattleFrontier_OutsideEast/scripts.inc
+++ b/data/maps/BattleFrontier_OutsideEast/scripts.inc
@@ -117,7 +117,7 @@ BattleFrontier_OutsideEast_EventScript_242CEA:: @ 8242CEA
BattleFrontier_OutsideEast_EventScript_242CFC:: @ 8242CFC
lock
faceplayer
- special sub_80FAFF8
+ special DoWateringBerryTreeAnim
waitstate
waitse
playse 269
diff --git a/data/maps/BattleFrontier_ReceptionGate/scripts.inc b/data/maps/BattleFrontier_ReceptionGate/scripts.inc
index 30f3a10d5..5ed97bd60 100644
--- a/data/maps/BattleFrontier_ReceptionGate/scripts.inc
+++ b/data/maps/BattleFrontier_ReceptionGate/scripts.inc
@@ -21,7 +21,7 @@ BattleFrontier_ReceptionGate_EventScript_2661F3:: @ 82661F3
waitmovement 0
msgbox BattleFrontier_ReceptionGate_Text_266580, MSGBOX_DEFAULT
closemessage
- applymovement 255, BattleFrontier_ReceptionGate_Movement_2662D2
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_ReceptionGate_Movement_2662D2
waitmovement 0
goto BattleFrontier_ReceptionGate_EventScript_266229
end
@@ -40,18 +40,18 @@ BattleFrontier_ReceptionGate_EventScript_266229:: @ 8266229
closemessage
applymovement 1, BattleFrontier_ReceptionGate_Movement_2725A6
applymovement 2, BattleFrontier_ReceptionGate_Movement_2725A6
- applymovement 255, BattleFrontier_ReceptionGate_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_ReceptionGate_Movement_2725A6
waitmovement 0
playse SE_PIN
applymovement 1, BattleFrontier_ReceptionGate_Movement_272598
applymovement 2, BattleFrontier_ReceptionGate_Movement_272598
- applymovement 255, BattleFrontier_ReceptionGate_Movement_272598
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_ReceptionGate_Movement_272598
waitmovement 0
msgbox BattleFrontier_ReceptionGate_Text_266733, MSGBOX_DEFAULT
closemessage
applymovement 1, BattleFrontier_ReceptionGate_Movement_2662F0
applymovement 2, BattleFrontier_ReceptionGate_Movement_2662F6
- applymovement 255, BattleFrontier_ReceptionGate_Movement_2662D7
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_ReceptionGate_Movement_2662D7
applymovement 4, BattleFrontier_ReceptionGate_Movement_2662E0
waitmovement 0
msgbox BattleFrontier_ReceptionGate_Text_266764, MSGBOX_DEFAULT
diff --git a/data/maps/DewfordTown/scripts.inc b/data/maps/DewfordTown/scripts.inc
index 41abdcede..66e2bb9f9 100644
--- a/data/maps/DewfordTown/scripts.inc
+++ b/data/maps/DewfordTown/scripts.inc
@@ -123,16 +123,16 @@ DewfordTown_EventScript_1E9660:: @ 81E9660
applymovement 2, DewfordTown_Movement_1E991D
waitmovement 0
removeobject 2
- applymovement 255, DewfordTown_Movement_1E9911
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Movement_1E9911
waitmovement 0
hideobjectat 255, MAP_DEWFORD_TOWN
call DewfordTown_EventScript_2720A0
applymovement 4, DewfordTown_Movement_1E97A2
- applymovement 255, DewfordTown_Movement_1E97A2
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Movement_1E97A2
waitmovement 0
showobjectat 255, MAP_ROUTE104
call DewfordTown_EventScript_2720A8
- applymovement 255, DewfordTown_Movement_1E9914
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Movement_1E9914
waitmovement 0
showobjectat 255, MAP_ROUTE104
clearflag FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY
@@ -155,16 +155,16 @@ DewfordTown_EventScript_1E96E7:: @ 81E96E7
applymovement 2, DewfordTown_Movement_1E991D
waitmovement 0
removeobject 2
- applymovement 255, DewfordTown_Movement_1E9911
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Movement_1E9911
waitmovement 0
hideobjectat 255, MAP_DEWFORD_TOWN
call DewfordTown_EventScript_2720A0
applymovement 4, DewfordTown_Movement_1E9865
- applymovement 255, DewfordTown_Movement_1E9865
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Movement_1E9865
waitmovement 0
call DewfordTown_EventScript_2720A8
showobjectat 255, MAP_ROUTE109
- applymovement 255, DewfordTown_Movement_1E9918
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Movement_1E9918
waitmovement 0
setobjectxyperm 2, 21, 26
addobject 2
diff --git a/data/maps/DewfordTown_Hall/scripts.inc b/data/maps/DewfordTown_Hall/scripts.inc
index bec9826f3..3a75fca12 100644
--- a/data/maps/DewfordTown_Hall/scripts.inc
+++ b/data/maps/DewfordTown_Hall/scripts.inc
@@ -200,7 +200,7 @@ DewfordTown_Hall_EventScript_1FD73A:: @ 81FD73A
DewfordTown_Hall_EventScript_1FD75B:: @ 81FD75B
compare VAR_FACING, 4
goto_eq DewfordTown_Hall_EventScript_1FD739
- applymovement 255, DewfordTown_Hall_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Hall_Movement_2725A8
waitmovement 0
return
@@ -224,19 +224,19 @@ DewfordTown_Hall_EventScript_1FD793:: @ 81FD793
return
DewfordTown_Hall_EventScript_1FD7AA:: @ 81FD7AA
- applymovement 255, DewfordTown_Hall_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Hall_Movement_2725A6
waitmovement 0
return
DewfordTown_Hall_EventScript_1FD7B5:: @ 81FD7B5
- applymovement 255, DewfordTown_Hall_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Hall_Movement_2725AA
waitmovement 0
return
DewfordTown_Hall_EventScript_1FD7C0:: @ 81FD7C0
compare VAR_FACING, 3
goto_eq DewfordTown_Hall_EventScript_1FD739
- applymovement 255, DewfordTown_Hall_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, DewfordTown_Hall_Movement_2725A4
waitmovement 0
return
diff --git a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc
index 250a3012b..4b51399eb 100644
--- a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc
+++ b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc
@@ -22,10 +22,10 @@ EverGrandeCity_ChampionsRoom_MapScript2_228A14: @ 8228A14
EverGrandeCity_ChampionsRoom_EventScript_228A1E:: @ 8228A1E
lockall
- applymovement 255, EverGrandeCity_ChampionsRoom_Movement_2725C1
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_2725C1
waitmovement 0
delay 40
- applymovement 255, EverGrandeCity_ChampionsRoom_Movement_228A42
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_228A42
waitmovement 0
setvar VAR_TEMP_1, 1
goto EverGrandeCity_ChampionsRoom_EventScript_228A45
@@ -105,7 +105,7 @@ EverGrandeCity_ChampionsRoom_EventScript_228B30:: @ 8228B30
addobject 3
applymovement 3, EverGrandeCity_ChampionsRoom_Movement_228C43
waitmovement 0
- applymovement 255, EverGrandeCity_ChampionsRoom_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_2725A8
waitmovement 0
msgbox EverGrandeCity_ChampionsRoom_Text_2291E6, MSGBOX_DEFAULT
call EverGrandeCity_ChampionsRoom_EventScript_272184
@@ -119,12 +119,12 @@ EverGrandeCity_ChampionsRoom_EventScript_228B30:: @ 8228B30
closemessage
delay 30
applymovement 1, EverGrandeCity_ChampionsRoom_Movement_228C3B
- applymovement 255, EverGrandeCity_ChampionsRoom_Movement_228C1D
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_228C1D
applymovement 3, EverGrandeCity_ChampionsRoom_Movement_2725A6
applymovement 2, EverGrandeCity_ChampionsRoom_Movement_228C38
waitmovement 0
delay 20
- applymovement 255, EverGrandeCity_ChampionsRoom_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_2725AA
waitmovement 0
msgbox EverGrandeCity_ChampionsRoom_Text_2293EB, MSGBOX_DEFAULT
checkplayergender
@@ -134,7 +134,7 @@ EverGrandeCity_ChampionsRoom_EventScript_228B30:: @ 8228B30
call_if 1, EverGrandeCity_ChampionsRoom_EventScript_228BF4
closemessage
applymovement 1, EverGrandeCity_ChampionsRoom_Movement_228C3F
- applymovement 255, EverGrandeCity_ChampionsRoom_Movement_228C20
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_228C20
waitmovement 0
setflag FLAG_HIDE_PETALBURG_GYM_GREETER
warp MAP_EVER_GRANDE_CITY_HALL_OF_FAME, 255, 7, 16
@@ -153,7 +153,7 @@ EverGrandeCity_ChampionsRoom_EventScript_228BF4:: @ 8228BF4
EverGrandeCity_ChampionsRoom_EventScript_228BFD:: @ 8228BFD
applymovement 2, EverGrandeCity_ChampionsRoom_Movement_228C26
waitmovement 0
- applymovement 255, EverGrandeCity_ChampionsRoom_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_ChampionsRoom_Movement_2725A4
waitmovement 0
return
diff --git a/data/maps/EverGrandeCity_HallOfFame/scripts.inc b/data/maps/EverGrandeCity_HallOfFame/scripts.inc
index 2a871e18f..5fd0ff139 100644
--- a/data/maps/EverGrandeCity_HallOfFame/scripts.inc
+++ b/data/maps/EverGrandeCity_HallOfFame/scripts.inc
@@ -18,24 +18,24 @@ EverGrandeCity_HallOfFame_MapScript2_229846: @ 8229846
EverGrandeCity_HallOfFame_EventScript_229850:: @ 8229850
lockall
applymovement 1, EverGrandeCity_HallOfFame_Movement_229901
- applymovement 255, EverGrandeCity_HallOfFame_Movement_229901
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_HallOfFame_Movement_229901
waitmovement 0
applymovement 1, EverGrandeCity_HallOfFame_Movement_2725A8
- applymovement 255, EverGrandeCity_HallOfFame_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_HallOfFame_Movement_2725A4
waitmovement 0
msgbox EverGrandeCity_HallOfFame_Text_22990E, MSGBOX_DEFAULT
closemessage
applymovement 1, EverGrandeCity_HallOfFame_Movement_229908
- applymovement 255, EverGrandeCity_HallOfFame_Movement_229908
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_HallOfFame_Movement_229908
waitmovement 0
delay 20
applymovement 1, EverGrandeCity_HallOfFame_Movement_2725A8
- applymovement 255, EverGrandeCity_HallOfFame_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_HallOfFame_Movement_2725A4
waitmovement 0
msgbox EverGrandeCity_HallOfFame_Text_2299A3, MSGBOX_DEFAULT
closemessage
applymovement 1, EverGrandeCity_HallOfFame_Movement_2725A6
- applymovement 255, EverGrandeCity_HallOfFame_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_HallOfFame_Movement_2725A6
waitmovement 0
delay 20
dofieldeffect 62
diff --git a/data/maps/EverGrandeCity_PokemonLeague_1F/scripts.inc b/data/maps/EverGrandeCity_PokemonLeague_1F/scripts.inc
index 0f3f6c33e..bc27878ab 100644
--- a/data/maps/EverGrandeCity_PokemonLeague_1F/scripts.inc
+++ b/data/maps/EverGrandeCity_PokemonLeague_1F/scripts.inc
@@ -77,12 +77,12 @@ EverGrandeCity_PokemonLeague_1F_EventScript_229636:: @ 8229636
end
EverGrandeCity_PokemonLeague_1F_EventScript_229698:: @ 8229698
- applymovement 255, EverGrandeCity_PokemonLeague_1F_Movement_2296DA
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_PokemonLeague_1F_Movement_2296DA
waitmovement 0
return
EverGrandeCity_PokemonLeague_1F_EventScript_2296A3:: @ 82296A3
- applymovement 255, EverGrandeCity_PokemonLeague_1F_Movement_2296DE
+ applymovement EVENT_OBJ_ID_PLAYER, EverGrandeCity_PokemonLeague_1F_Movement_2296DE
waitmovement 0
return
diff --git a/data/maps/FallarborTown_BattleTentCorridor/scripts.inc b/data/maps/FallarborTown_BattleTentCorridor/scripts.inc
index d21216208..f3d0a924e 100644
--- a/data/maps/FallarborTown_BattleTentCorridor/scripts.inc
+++ b/data/maps/FallarborTown_BattleTentCorridor/scripts.inc
@@ -10,12 +10,12 @@ FallarborTown_BattleTentCorridor_EventScript_2006B7:: @ 82006B7
lockall
setvar VAR_TEMP_0, 1
applymovement 1, FallarborTown_BattleTentCorridor_Movement_2006FB
- applymovement 255, FallarborTown_BattleTentCorridor_Movement_2006FB
+ applymovement EVENT_OBJ_ID_PLAYER, FallarborTown_BattleTentCorridor_Movement_2006FB
waitmovement 0
opendoor 2, 1
waitdooranim
applymovement 1, FallarborTown_BattleTentCorridor_Movement_200701
- applymovement 255, FallarborTown_BattleTentCorridor_Movement_200700
+ applymovement EVENT_OBJ_ID_PLAYER, FallarborTown_BattleTentCorridor_Movement_200700
waitmovement 0
closedoor 2, 1
waitdooranim
diff --git a/data/maps/FallarborTown_BattleTentLobby/scripts.inc b/data/maps/FallarborTown_BattleTentLobby/scripts.inc
index aed9aa93f..abe8a9202 100644
--- a/data/maps/FallarborTown_BattleTentLobby/scripts.inc
+++ b/data/maps/FallarborTown_BattleTentLobby/scripts.inc
@@ -245,12 +245,12 @@ FallarborTown_BattleTentLobby_EventScript_2001CD:: @ 82001CD
FallarborTown_BattleTentLobby_EventScript_2001CF:: @ 82001CF
applymovement 1, FallarborTown_BattleTentLobby_Movement_2001FE
- applymovement 255, FallarborTown_BattleTentLobby_Movement_200205
+ applymovement EVENT_OBJ_ID_PLAYER, FallarborTown_BattleTentLobby_Movement_200205
waitmovement 0
opendoor 6, 1
waitdooranim
applymovement 1, FallarborTown_BattleTentLobby_Movement_200202
- applymovement 255, FallarborTown_BattleTentLobby_Movement_200209
+ applymovement EVENT_OBJ_ID_PLAYER, FallarborTown_BattleTentLobby_Movement_200209
waitmovement 0
closedoor 6, 1
waitdooranim
diff --git a/data/maps/GraniteCave_StevensRoom/scripts.inc b/data/maps/GraniteCave_StevensRoom/scripts.inc
index da0668bac..ff594021a 100644
--- a/data/maps/GraniteCave_StevensRoom/scripts.inc
+++ b/data/maps/GraniteCave_StevensRoom/scripts.inc
@@ -42,13 +42,13 @@ GraniteCave_StevensRoom_EventScript_22DD0D:: @ 822DD0D
return
GraniteCave_StevensRoom_EventScript_22DD18:: @ 822DD18
- applymovement 255, GraniteCave_StevensRoom_Movement_22DD4C
+ applymovement EVENT_OBJ_ID_PLAYER, GraniteCave_StevensRoom_Movement_22DD4C
applymovement 1, GraniteCave_StevensRoom_Movement_22DD45
waitmovement 0
return
GraniteCave_StevensRoom_EventScript_22DD2A:: @ 822DD2A
- applymovement 255, GraniteCave_StevensRoom_Movement_22DD4C
+ applymovement EVENT_OBJ_ID_PLAYER, GraniteCave_StevensRoom_Movement_22DD4C
applymovement 1, GraniteCave_StevensRoom_Movement_22DD51
waitmovement 0
return
diff --git a/data/maps/LavaridgeTown/scripts.inc b/data/maps/LavaridgeTown/scripts.inc
index a42703900..9d2a8b6dc 100644
--- a/data/maps/LavaridgeTown/scripts.inc
+++ b/data/maps/LavaridgeTown/scripts.inc
@@ -136,7 +136,7 @@ LavaridgeTown_EventScript_1EA65C:: @ 81EA65C
waitmovement 0
applymovement 8, LavaridgeTown_Movement_27259A
waitmovement 0
- applymovement 255, LavaridgeTown_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LavaridgeTown_Movement_2725A8
waitmovement 0
return
@@ -151,7 +151,7 @@ LavaridgeTown_EventScript_1EA6AC:: @ 81EA6AC
return
LavaridgeTown_EventScript_1EA6B7:: @ 81EA6B7
- applymovement 255, LavaridgeTown_Movement_1EA6DF
+ applymovement EVENT_OBJ_ID_PLAYER, LavaridgeTown_Movement_1EA6DF
applymovement 7, LavaridgeTown_Movement_1EA6E3
waitmovement 0
return
diff --git a/data/maps/LilycoveCity_ContestLobby/scripts.inc b/data/maps/LilycoveCity_ContestLobby/scripts.inc
index a849925bd..b172dfd7a 100644
--- a/data/maps/LilycoveCity_ContestLobby/scripts.inc
+++ b/data/maps/LilycoveCity_ContestLobby/scripts.inc
@@ -37,7 +37,7 @@ LilycoveCity_ContestLobby_EventScript_21A264:: @ 821A264
addobject 4
applymovement 4, LilycoveCity_ContestLobby_Movement_21A407
waitmovement 4
- applymovement 255, LilycoveCity_ContestLobby_Movement_21A418
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_ContestLobby_Movement_21A418
waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_21ADB9, MSGBOX_DEFAULT
lockall
@@ -212,7 +212,7 @@ LilycoveCity_ContestLobby_EventScript_21A436:: @ 821A436
addobject 11
applymovement 11, LilycoveCity_ContestLobby_Movement_21A533
waitmovement 11
- applymovement 255, LilycoveCity_ContestLobby_Movement_21A545
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_ContestLobby_Movement_21A545
waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_21ADB9, MSGBOX_DEFAULT
lockall
@@ -422,12 +422,12 @@ LilycoveCity_ContestLobby_EventScript_21A670:: @ 821A670
delay 20
applymovement 1, LilycoveCity_ContestLobby_Movement_21A706
waitmovement 0
- applymovement 255, LilycoveCity_ContestLobby_Movement_21A6F2
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_ContestLobby_Movement_21A6F2
waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_27B653, MSGBOX_DEFAULT
closemessage
applymovement 1, LilycoveCity_ContestLobby_Movement_21A6FD
- applymovement 255, LilycoveCity_ContestLobby_Movement_21A6E8
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_ContestLobby_Movement_21A6E8
waitmovement 0
releaseall
return
@@ -945,7 +945,7 @@ LilycoveCity_ContestLobby_EventScript_21AC49:: @ 821AC49
delay 20
applymovement 2, LilycoveCity_ContestLobby_Movement_21ACEF
waitmovement 0
- applymovement 255, LilycoveCity_ContestLobby_Movement_21ACDB
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_ContestLobby_Movement_21ACDB
waitmovement 0
messageautoscroll LilycoveCity_ContestLobby_Text_27B653
waitmessage
@@ -953,7 +953,7 @@ LilycoveCity_ContestLobby_EventScript_21AC49:: @ 821AC49
closemessage
call LilycoveCity_ContestLobby_EventScript_27AD92
applymovement 2, LilycoveCity_ContestLobby_Movement_21ACE5
- applymovement 255, LilycoveCity_ContestLobby_Movement_21ACD0
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_ContestLobby_Movement_21ACD0
waitmovement 0
release
return
diff --git a/data/maps/LilycoveCity_CoveLilyMotel_1F/scripts.inc b/data/maps/LilycoveCity_CoveLilyMotel_1F/scripts.inc
index 18ef70cfd..35ab3aa8e 100644
--- a/data/maps/LilycoveCity_CoveLilyMotel_1F/scripts.inc
+++ b/data/maps/LilycoveCity_CoveLilyMotel_1F/scripts.inc
@@ -46,11 +46,11 @@ LilycoveCity_CoveLilyMotel_1F_EventScript_218211:: @ 8218211
waitmovement 0
applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_27259A
waitmovement 0
- applymovement 255, LilycoveCity_CoveLilyMotel_1F_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_CoveLilyMotel_1F_Movement_2725AA
waitmovement 0
msgbox LilycoveCity_CoveLilyMotel_1F_Text_21839B, MSGBOX_DEFAULT
closemessage
- applymovement 255, LilycoveCity_CoveLilyMotel_1F_Movement_218259
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_CoveLilyMotel_1F_Movement_218259
applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_21825E
waitmovement 0
applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_218260
diff --git a/data/maps/LilycoveCity_Harbor/scripts.inc b/data/maps/LilycoveCity_Harbor/scripts.inc
index 67ef01e09..7beb75988 100644
--- a/data/maps/LilycoveCity_Harbor/scripts.inc
+++ b/data/maps/LilycoveCity_Harbor/scripts.inc
@@ -439,12 +439,12 @@ LilycoveCity_Harbor_EventScript_21E5CC:: @ 821E5CC
return
LilycoveCity_Harbor_EventScript_21E610:: @ 821E610
- applymovement 255, LilycoveCity_Harbor_Movement_21E630
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_Harbor_Movement_21E630
waitmovement 0
return
LilycoveCity_Harbor_EventScript_21E61B:: @ 821E61B
- applymovement 255, LilycoveCity_Harbor_Movement_21E633
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_Harbor_Movement_21E633
waitmovement 0
return
@@ -525,14 +525,14 @@ LilycoveCity_Harbor_EventScript_21E696:: @ 821E696
LilycoveCity_Harbor_EventScript_21E6A1:: @ 821E6A1
applymovement 5, LilycoveCity_Harbor_Movement_21E6D3
- applymovement 255, LilycoveCity_Harbor_Movement_21E6D7
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_Harbor_Movement_21E6D7
applymovement 4, LilycoveCity_Harbor_Movement_21E6DC
waitmovement 0
return
LilycoveCity_Harbor_EventScript_21E6BA:: @ 821E6BA
applymovement 5, LilycoveCity_Harbor_Movement_21E6D3
- applymovement 255, LilycoveCity_Harbor_Movement_21E6E4
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_Harbor_Movement_21E6E4
applymovement 4, LilycoveCity_Harbor_Movement_21E6EA
waitmovement 0
return
diff --git a/data/maps/LilycoveCity_LilycoveMuseum_1F/scripts.inc b/data/maps/LilycoveCity_LilycoveMuseum_1F/scripts.inc
index f56102a99..54ba63fb0 100644
--- a/data/maps/LilycoveCity_LilycoveMuseum_1F/scripts.inc
+++ b/data/maps/LilycoveCity_LilycoveMuseum_1F/scripts.inc
@@ -47,7 +47,7 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_218D1E:: @ 8218D1E
LilycoveCity_LilycoveMuseum_1F_EventScript_218D5A:: @ 8218D5A
lockall
- applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_218DA1
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_LilycoveMuseum_1F_Movement_218DA1
waitmovement 0
warp MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F, 255, 11, 8
waitstate
@@ -55,7 +55,7 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_218D5A:: @ 8218D5A
LilycoveCity_LilycoveMuseum_1F_EventScript_218D6F:: @ 8218D6F
lockall
- applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_218D9B
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_LilycoveMuseum_1F_Movement_218D9B
waitmovement 0
warp MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F, 255, 11, 8
waitstate
@@ -63,7 +63,7 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_218D6F:: @ 8218D6F
LilycoveCity_LilycoveMuseum_1F_EventScript_218D84:: @ 8218D84
lockall
- applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_218D9E
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_LilycoveMuseum_1F_Movement_218D9E
waitmovement 0
warp MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F, 255, 11, 8
waitstate
diff --git a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc
index 5f2b64aec..e2bda1ab5 100644
--- a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc
+++ b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc
@@ -68,17 +68,17 @@ LilycoveCity_LilycoveMuseum_2F_MapScript2_2197FE: @ 82197FE
LilycoveCity_LilycoveMuseum_2F_EventScript_219808:: @ 8219808
lockall
applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_27259E
- applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_219861
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_LilycoveMuseum_2F_Movement_219861
waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_2199EB, MSGBOX_SIGN
applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_219863
waitmovement 0
- applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_219863
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_LilycoveMuseum_2F_Movement_219863
waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_219A0D, MSGBOX_SIGN
applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_27259E
waitmovement 0
- applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_219861
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_LilycoveMuseum_2F_Movement_219861
waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_219BC4, MSGBOX_SIGN
copyvar VAR_0x4094, 0x1
diff --git a/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc b/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc
index d4c0f4cea..54df8e81a 100644
--- a/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc
+++ b/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc
@@ -15,12 +15,12 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_21C79A:: @ 821C79A
applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_21C7FD
applymovement 2, LilycoveCity_PokemonTrainerFanClub_Movement_21C7F5
waitmovement 0
- applymovement 255, LilycoveCity_PokemonTrainerFanClub_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_PokemonTrainerFanClub_Movement_2725A8
waitmovement 0
msgbox LilycoveCity_PokemonTrainerFanClub_Text_21CF12, MSGBOX_DEFAULT
applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_21C804
waitmovement 0
- applymovement 255, LilycoveCity_PokemonTrainerFanClub_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LilycoveCity_PokemonTrainerFanClub_Movement_2725A4
waitmovement 0
applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_21C807
waitmovement 0
diff --git a/data/maps/LittlerootTown/scripts.inc b/data/maps/LittlerootTown/scripts.inc
index 660a3984d..8e70af98b 100644
--- a/data/maps/LittlerootTown/scripts.inc
+++ b/data/maps/LittlerootTown/scripts.inc
@@ -114,7 +114,7 @@ LittlerootTown_EventScript_1E7EF9:: @ 81E7EF9
LittlerootTown_EventScript_1E7F17:: @ 81E7F17
delay 15
playse SE_DANSA
- applymovement 255, LittlerootTown_Movement_1E7FAC
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_1E7FAC
waitmovement 0
opendoor VAR_0x8004, VAR_0x8005
waitdooranim
@@ -129,12 +129,12 @@ LittlerootTown_EventScript_1E7F17:: @ 81E7F17
msgbox LittlerootTown_Text_1E86BC, MSGBOX_DEFAULT
closemessage
applymovement 4, LittlerootTown_Movement_1E7F9D
- applymovement 255, LittlerootTown_Movement_1E7FA4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_1E7FA4
waitmovement 0
opendoor VAR_0x8004, VAR_0x8005
waitdooranim
applymovement 4, LittlerootTown_Movement_1E7FA1
- applymovement 255, LittlerootTown_Movement_1E7FA9
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_1E7FA9
waitmovement 0
setflag FLAG_HIDE_LITTLEROOT_TOWN_MOM_OUTSIDE
setvar VAR_0x4092, 3
@@ -280,7 +280,7 @@ LittlerootTown_EventScript_1E80AD:: @ 81E80AD
msgbox LittlerootTown_Text_1E8BB8, MSGBOX_DEFAULT
closemessage
applymovement 1, LittlerootTown_Movement_1E80DF
- applymovement 255, LittlerootTown_Movement_1E80EB
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_1E80EB
waitmovement 0
msgbox LittlerootTown_Text_1E8C07, MSGBOX_DEFAULT
closemessage
@@ -362,7 +362,7 @@ LittlerootTown_EventScript_1E811F:: @ 81E811F
lockall
applymovement 1, LittlerootTown_Movement_2725A8
waitmovement 0
- applymovement 255, LittlerootTown_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725A4
waitmovement 0
special GetPlayerBigGuyGirlString
msgbox LittlerootTown_Text_1E8C3A, MSGBOX_DEFAULT
@@ -533,70 +533,70 @@ LittlerootTown_EventScript_1E82F0:: @ 81E82F0
return
LittlerootTown_EventScript_1E8333:: @ 81E8333
- applymovement 255, LittlerootTown_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725AA
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85D1
waitmovement 0
return
LittlerootTown_EventScript_1E8348:: @ 81E8348
- applymovement 255, LittlerootTown_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725AA
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85D8
waitmovement 0
return
LittlerootTown_EventScript_1E835D:: @ 81E835D
- applymovement 255, LittlerootTown_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725A4
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85DF
waitmovement 0
return
LittlerootTown_EventScript_1E8372:: @ 81E8372
- applymovement 255, LittlerootTown_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725A4
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85E4
waitmovement 0
return
LittlerootTown_EventScript_1E8387:: @ 81E8387
- applymovement 255, LittlerootTown_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725A4
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85EA
waitmovement 0
return
LittlerootTown_EventScript_1E839C:: @ 81E839C
- applymovement 255, LittlerootTown_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725A4
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85ED
waitmovement 0
return
LittlerootTown_EventScript_1E83B1:: @ 81E83B1
- applymovement 255, LittlerootTown_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725A8
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85F1
waitmovement 0
return
LittlerootTown_EventScript_1E83C6:: @ 81E83C6
- applymovement 255, LittlerootTown_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725A8
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85F5
waitmovement 0
return
LittlerootTown_EventScript_1E83DB:: @ 81E83DB
- applymovement 255, LittlerootTown_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725A8
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85F8
waitmovement 0
return
LittlerootTown_EventScript_1E83F0:: @ 81E83F0
- applymovement 255, LittlerootTown_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_Movement_2725A8
waitmovement 0
applymovement 4, LittlerootTown_Movement_1E85FE
waitmovement 0
diff --git a/data/maps/LittlerootTown_BrendansHouse_1F/scripts.inc b/data/maps/LittlerootTown_BrendansHouse_1F/scripts.inc
index 4413a80d5..363579e6e 100644
--- a/data/maps/LittlerootTown_BrendansHouse_1F/scripts.inc
+++ b/data/maps/LittlerootTown_BrendansHouse_1F/scripts.inc
@@ -62,7 +62,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_1F7814:: @ 81F7814
lockall
msgbox LittlerootTown_BrendansHouse_1F_Text_1F7B67, MSGBOX_DEFAULT
closemessage
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1F783A
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_1F783A
applymovement 1, LittlerootTown_BrendansHouse_1F_Movement_1F783A
waitmovement 0
warp MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 255, 7, 1
@@ -95,7 +95,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_1F785E:: @ 81F785E
waitmovement 0
applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_27259A
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725A4
applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_1F789C
waitmovement 0
special GetRivalSonDaughterString
@@ -182,7 +182,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_1F78E2:: @ 81F78E2
end
LittlerootTown_BrendansHouse_1F_EventScript_1F7981:: @ 81F7981
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725AA
waitmovement 0
return
@@ -228,19 +228,19 @@ LittlerootTown_BrendansHouse_1F_Movement_1F79B9: @ 81F79B9
step_end
LittlerootTown_BrendansHouse_1F_EventScript_1F79C1:: @ 81F79C1
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1F79F7
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_1F79F7
applymovement 7, LittlerootTown_BrendansHouse_1F_Movement_1F7A06
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1F79D3:: @ 81F79D3
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1F79FB
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_1F79FB
applymovement 7, LittlerootTown_BrendansHouse_1F_Movement_1F7A0C
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1F79E5:: @ 81F79E5
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1F7A02
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_1F7A02
applymovement 7, LittlerootTown_BrendansHouse_1F_Movement_1F7A16
waitmovement 0
return
diff --git a/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc b/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc
index 2ebc9b900..d0063a0e3 100644
--- a/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc
+++ b/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc
@@ -94,11 +94,11 @@ LittlerootTown_BrendansHouse_2F_EventScript_1F8497:: @ 81F8497
LittlerootTown_BrendansHouse_2F_EventScript_1F8507:: @ 81F8507
applymovement 1, LittlerootTown_BrendansHouse_2F_Movement_1F85C0
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_2725A8
waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_1F97B4, MSGBOX_DEFAULT
closemessage
- applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_1F85CF
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_1F85CF
applymovement 1, LittlerootTown_BrendansHouse_2F_Movement_1F85C6
waitmovement 0
return
@@ -106,11 +106,11 @@ LittlerootTown_BrendansHouse_2F_EventScript_1F8507:: @ 81F8507
LittlerootTown_BrendansHouse_2F_EventScript_1F8536:: @ 81F8536
applymovement 1, LittlerootTown_BrendansHouse_2F_Movement_1F85D7
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_2725A8
waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_1F97B4, MSGBOX_DEFAULT
closemessage
- applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_1F85E2
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_1F85E2
applymovement 1, LittlerootTown_BrendansHouse_2F_Movement_1F85DB
waitmovement 0
return
@@ -118,11 +118,11 @@ LittlerootTown_BrendansHouse_2F_EventScript_1F8536:: @ 81F8536
LittlerootTown_BrendansHouse_2F_EventScript_1F8565:: @ 81F8565
applymovement 1, LittlerootTown_BrendansHouse_2F_Movement_1F85E8
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_2725A8
waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_1F97B4, MSGBOX_DEFAULT
closemessage
- applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_1F85F6
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_1F85F6
applymovement 1, LittlerootTown_BrendansHouse_2F_Movement_1F85ED
waitmovement 0
return
@@ -130,7 +130,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_1F8565:: @ 81F8565
LittlerootTown_BrendansHouse_2F_EventScript_1F8594:: @ 81F8594
applymovement 1, LittlerootTown_BrendansHouse_2F_Movement_1F85FD
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_2725A6
waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_1F97B4, MSGBOX_DEFAULT
closemessage
diff --git a/data/maps/LittlerootTown_MaysHouse_1F/scripts.inc b/data/maps/LittlerootTown_MaysHouse_1F/scripts.inc
index 824c4d930..a974ce5cb 100644
--- a/data/maps/LittlerootTown_MaysHouse_1F/scripts.inc
+++ b/data/maps/LittlerootTown_MaysHouse_1F/scripts.inc
@@ -62,7 +62,7 @@ LittlerootTown_MaysHouse_1F_EventScript_1F8964:: @ 81F8964
lockall
msgbox LittlerootTown_MaysHouse_1F_Text_1F7B67, MSGBOX_DEFAULT
closemessage
- applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1F898A
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_1F898A
applymovement 1, LittlerootTown_MaysHouse_1F_Movement_1F898A
waitmovement 0
warp MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F, 255, 1, 1
@@ -95,7 +95,7 @@ LittlerootTown_MaysHouse_1F_EventScript_1F89AE:: @ 81F89AE
waitmovement 0
applymovement 4, LittlerootTown_MaysHouse_1F_Movement_27259A
waitmovement 0
- applymovement 255, LittlerootTown_MaysHouse_1F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_2725A8
applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1F89EC
waitmovement 0
special GetRivalSonDaughterString
@@ -221,7 +221,7 @@ LittlerootTown_MaysHouse_1F_EventScript_1F8A8B:: @ 81F8A8B
end
LittlerootTown_MaysHouse_1F_EventScript_1F8B2A:: @ 81F8B2A
- applymovement 255, LittlerootTown_MaysHouse_1F_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_2725AA
waitmovement 0
return
@@ -267,19 +267,19 @@ LittlerootTown_MaysHouse_1F_Movement_1F8B62: @ 81F8B62
step_end
LittlerootTown_MaysHouse_1F_EventScript_1F8B6A:: @ 81F8B6A
- applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1F8BA0
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_1F8BA0
applymovement 7, LittlerootTown_MaysHouse_1F_Movement_1F8BAF
waitmovement 0
return
LittlerootTown_MaysHouse_1F_EventScript_1F8B7C:: @ 81F8B7C
- applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1F8BA4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_1F8BA4
applymovement 7, LittlerootTown_MaysHouse_1F_Movement_1F8BB5
waitmovement 0
return
LittlerootTown_MaysHouse_1F_EventScript_1F8B8E:: @ 81F8B8E
- applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1F8BAB
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_1F8BAB
applymovement 7, LittlerootTown_MaysHouse_1F_Movement_1F8BBF
waitmovement 0
return
diff --git a/data/maps/LittlerootTown_MaysHouse_2F/scripts.inc b/data/maps/LittlerootTown_MaysHouse_2F/scripts.inc
index 8a2ec10ac..ba3233853 100644
--- a/data/maps/LittlerootTown_MaysHouse_2F/scripts.inc
+++ b/data/maps/LittlerootTown_MaysHouse_2F/scripts.inc
@@ -95,11 +95,11 @@ LittlerootTown_MaysHouse_2F_EventScript_1F934A:: @ 81F934A
LittlerootTown_MaysHouse_2F_EventScript_1F93BA:: @ 81F93BA
applymovement 1, LittlerootTown_MaysHouse_2F_Movement_1F9473
waitmovement 0
- applymovement 255, LittlerootTown_MaysHouse_2F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_2725A4
waitmovement 0
msgbox LittlerootTown_MaysHouse_2F_Text_1F959C, MSGBOX_DEFAULT
closemessage
- applymovement 255, LittlerootTown_MaysHouse_2F_Movement_1F9483
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_1F9483
applymovement 1, LittlerootTown_MaysHouse_2F_Movement_1F9479
waitmovement 0
return
@@ -107,11 +107,11 @@ LittlerootTown_MaysHouse_2F_EventScript_1F93BA:: @ 81F93BA
LittlerootTown_MaysHouse_2F_EventScript_1F93E9:: @ 81F93E9
applymovement 1, LittlerootTown_MaysHouse_2F_Movement_1F948B
waitmovement 0
- applymovement 255, LittlerootTown_MaysHouse_2F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_2725A4
waitmovement 0
msgbox LittlerootTown_MaysHouse_2F_Text_1F959C, MSGBOX_DEFAULT
closemessage
- applymovement 255, LittlerootTown_MaysHouse_2F_Movement_1F9497
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_1F9497
applymovement 1, LittlerootTown_MaysHouse_2F_Movement_1F948F
waitmovement 0
return
@@ -119,7 +119,7 @@ LittlerootTown_MaysHouse_2F_EventScript_1F93E9:: @ 81F93E9
LittlerootTown_MaysHouse_2F_EventScript_1F9418:: @ 81F9418
applymovement 1, LittlerootTown_MaysHouse_2F_Movement_1F949D
waitmovement 0
- applymovement 255, LittlerootTown_MaysHouse_2F_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_2725A6
waitmovement 0
msgbox LittlerootTown_MaysHouse_2F_Text_1F959C, MSGBOX_DEFAULT
closemessage
@@ -130,11 +130,11 @@ LittlerootTown_MaysHouse_2F_EventScript_1F9418:: @ 81F9418
LittlerootTown_MaysHouse_2F_EventScript_1F9440:: @ 81F9440
applymovement 1, LittlerootTown_MaysHouse_2F_Movement_1F94AD
waitmovement 0
- applymovement 255, LittlerootTown_MaysHouse_2F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_2725A4
waitmovement 0
msgbox LittlerootTown_MaysHouse_2F_Text_1F959C, MSGBOX_DEFAULT
closemessage
- applymovement 255, LittlerootTown_MaysHouse_2F_Movement_1F94BB
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_2F_Movement_1F94BB
applymovement 1, LittlerootTown_MaysHouse_2F_Movement_1F94B2
waitmovement 0
return
diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc
index ec6cd9738..829062a73 100644
--- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc
+++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc
@@ -136,7 +136,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_1F9E48:: @ 81F9E48
LittlerootTown_ProfessorBirchsLab_EventScript_1F9E67:: @ 81F9E67
lockall
- applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_1F9E78
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_ProfessorBirchsLab_Movement_1F9E78
waitmovement 0
goto LittlerootTown_ProfessorBirchsLab_EventScript_1FA2F8
end
@@ -168,7 +168,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_1F9E80:: @ 81F9E80
playse SE_TK_KASYA
delay 20
applymovement 3, LittlerootTown_ProfessorBirchsLab_Movement_2725A8
- applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_ProfessorBirchsLab_Movement_2725A4
waitmovement 0
checkplayergender
compare VAR_RESULT, 0
@@ -181,7 +181,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_1F9E80:: @ 81F9E80
applymovement 2, LittlerootTown_ProfessorBirchsLab_Movement_1F9F58
waitmovement 0
applymovement 3, LittlerootTown_ProfessorBirchsLab_Movement_2725A6
- applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_ProfessorBirchsLab_Movement_2725A6
waitmovement 0
msgbox LittlerootTown_ProfessorBirchsLab_Text_1FB419, MSGBOX_DEFAULT
playfanfare MUS_FANFA4
@@ -244,7 +244,7 @@ LittlerootTown_ProfessorBirchsLab_Movement_1F9F58: @ 81F9F58
LittlerootTown_ProfessorBirchsLab_EventScript_1F9F62:: @ 81F9F62
lockall
- applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_1F9F7C
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_ProfessorBirchsLab_Movement_1F9F7C
waitmovement 0
msgbox LittlerootTown_ProfessorBirchsLab_Text_1FB5F9, MSGBOX_DEFAULT
setvar VAR_0x40D3, 5
@@ -534,7 +534,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_1FA2F8:: @ 81FA2F8
closemessage
applymovement 3, LittlerootTown_ProfessorBirchsLab_Movement_1FA3E0
waitmovement 0
- applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_ProfessorBirchsLab_Movement_2725A8
waitmovement 0
checkplayergender
compare VAR_RESULT, 0
diff --git a/data/maps/MagmaHideout_4F/scripts.inc b/data/maps/MagmaHideout_4F/scripts.inc
index 714983999..818b11da7 100644
--- a/data/maps/MagmaHideout_4F/scripts.inc
+++ b/data/maps/MagmaHideout_4F/scripts.inc
@@ -18,7 +18,7 @@ MagmaHideout_4F_EventScript_23A560:: @ 823A560
playfanfare MUS_ME_TAMA
playse SE_TAMA
special sub_80B0534
- applymovement 255, MagmaHideout_4F_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, MagmaHideout_4F_Movement_2725A6
waitmovement 0
delay 150
removeobject 7
@@ -50,7 +50,7 @@ MagmaHideout_4F_EventScript_23A560:: @ 823A560
waitmovement 0
msgbox MagmaHideout_4F_Text_23AADA, MSGBOX_DEFAULT
closemessage
- applymovement 255, MagmaHideout_4F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, MagmaHideout_4F_Movement_2725A8
waitmovement 0
delay 30
applymovement 6, MagmaHideout_4F_Movement_27259E
diff --git a/data/maps/MarineCave_End/scripts.inc b/data/maps/MarineCave_End/scripts.inc
index f61620c29..68e27fa58 100644
--- a/data/maps/MarineCave_End/scripts.inc
+++ b/data/maps/MarineCave_End/scripts.inc
@@ -27,7 +27,7 @@ MarineCave_End_EventScript_23B012:: @ 823B012
MarineCave_End_EventScript_23B01B:: @ 823B01B
lockall
- applymovement 255, MarineCave_End_Movement_2725B2
+ applymovement EVENT_OBJ_ID_PLAYER, MarineCave_End_Movement_2725B2
waitmovement 0
applymovement 1, MarineCave_End_Movement_23B09D
waitmovement 0
diff --git a/data/maps/MauvilleCity/scripts.inc b/data/maps/MauvilleCity/scripts.inc
index 17ace6e10..e0835a87d 100644
--- a/data/maps/MauvilleCity/scripts.inc
+++ b/data/maps/MauvilleCity/scripts.inc
@@ -118,19 +118,19 @@ MauvilleCity_EventScript_1DF4AD:: @ 81DF4AD
end
MauvilleCity_EventScript_1DF4E0:: @ 81DF4E0
- applymovement 255, MauvilleCity_Movement_1DF6DF
+ applymovement EVENT_OBJ_ID_PLAYER, MauvilleCity_Movement_1DF6DF
applymovement 6, MauvilleCity_Movement_1DF6A8
applymovement 7, MauvilleCity_Movement_1DF6E2
waitmovement 0
applymovement 6, MauvilleCity_Movement_2725A8
waitmovement 0
delay 30
- applymovement 255, MauvilleCity_Movement_1DF6EE
+ applymovement EVENT_OBJ_ID_PLAYER, MauvilleCity_Movement_1DF6EE
applymovement 7, MauvilleCity_Movement_1DF6F3
waitmovement 0
msgbox MauvilleCity_Text_1DFD34, MSGBOX_DEFAULT
closemessage
- applymovement 255, MauvilleCity_Movement_1DF6CC
+ applymovement EVENT_OBJ_ID_PLAYER, MauvilleCity_Movement_1DF6CC
applymovement 7, MauvilleCity_Movement_1DF6FA
applymovement 6, MauvilleCity_Movement_1DF6B4
waitmovement 0
@@ -138,7 +138,7 @@ MauvilleCity_EventScript_1DF4E0:: @ 81DF4E0
end
MauvilleCity_EventScript_1DF53D:: @ 81DF53D
- applymovement 255, MauvilleCity_Movement_1DF6DC
+ applymovement EVENT_OBJ_ID_PLAYER, MauvilleCity_Movement_1DF6DC
applymovement 6, MauvilleCity_Movement_1DF6AE
applymovement 7, MauvilleCity_Movement_1DF6E8
waitmovement 0
@@ -149,7 +149,7 @@ MauvilleCity_EventScript_1DF53D:: @ 81DF53D
waitmovement 0
msgbox MauvilleCity_Text_1DFD34, MSGBOX_DEFAULT
closemessage
- applymovement 255, MauvilleCity_Movement_1DF6D0
+ applymovement EVENT_OBJ_ID_PLAYER, MauvilleCity_Movement_1DF6D0
applymovement 7, MauvilleCity_Movement_1DF703
applymovement 6, MauvilleCity_Movement_1DF6C0
waitmovement 0
@@ -168,7 +168,7 @@ MauvilleCity_EventScript_1DF593:: @ 81DF593
call_if 1, MauvilleCity_EventScript_1DF5F3
compare VAR_FACING, 4
call_if 1, MauvilleCity_EventScript_1DF601
- applymovement 255, MauvilleCity_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, MauvilleCity_Movement_2725AA
waitmovement 0
msgbox MauvilleCity_Text_1DFED5, MSGBOX_DEFAULT
closemessage
@@ -195,13 +195,13 @@ MauvilleCity_EventScript_1DF601:: @ 81DF601
return
MauvilleCity_EventScript_1DF616:: @ 81DF616
- applymovement 255, MauvilleCity_Movement_1DF6D5
+ applymovement EVENT_OBJ_ID_PLAYER, MauvilleCity_Movement_1DF6D5
applymovement 11, MauvilleCity_Movement_1DF725
waitmovement 0
return
MauvilleCity_EventScript_1DF628:: @ 81DF628
- applymovement 255, MauvilleCity_Movement_1DF6D8
+ applymovement EVENT_OBJ_ID_PLAYER, MauvilleCity_Movement_1DF6D8
applymovement 11, MauvilleCity_Movement_1DF72F
waitmovement 0
return
diff --git a/data/maps/MeteorFalls_1F_1R/scripts.inc b/data/maps/MeteorFalls_1F_1R/scripts.inc
index 23afa4845..4867ad44f 100644
--- a/data/maps/MeteorFalls_1F_1R/scripts.inc
+++ b/data/maps/MeteorFalls_1F_1R/scripts.inc
@@ -17,7 +17,7 @@ MeteorFalls_1F_1R_EventScript_22BD3A:: @ 822BD3A
MeteorFalls_1F_1R_EventScript_22BD5F:: @ 822BD5F
lockall
playbgm MUS_MGM0, 0
- applymovement 255, MeteorFalls_1F_1R_Movement_2725B0
+ applymovement EVENT_OBJ_ID_PLAYER, MeteorFalls_1F_1R_Movement_2725B0
waitmovement 0
delay 30
applymovement 5, MeteorFalls_1F_1R_Movement_2725B4
@@ -38,7 +38,7 @@ MeteorFalls_1F_1R_EventScript_22BD5F:: @ 822BD5F
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_22BFE4, MSGBOX_DEFAULT
closemessage
- applymovement 255, MeteorFalls_1F_1R_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, MeteorFalls_1F_1R_Movement_2725A4
applymovement 5, MeteorFalls_1F_1R_Movement_2725A4
applymovement 6, MeteorFalls_1F_1R_Movement_2725A4
waitmovement 0
@@ -55,7 +55,7 @@ MeteorFalls_1F_1R_EventScript_22BD5F:: @ 822BD5F
waitmovement 0
msgbox MeteorFalls_1F_1R_Text_22C04E, MSGBOX_DEFAULT
closemessage
- applymovement 255, MeteorFalls_1F_1R_Movement_22BF1D
+ applymovement EVENT_OBJ_ID_PLAYER, MeteorFalls_1F_1R_Movement_22BF1D
applymovement 5, MeteorFalls_1F_1R_Movement_22BEC4
applymovement 6, MeteorFalls_1F_1R_Movement_22BECE
waitmovement 0
diff --git a/data/maps/MossdeepCity/scripts.inc b/data/maps/MossdeepCity/scripts.inc
index fe037074f..a4a87e3e7 100644
--- a/data/maps/MossdeepCity/scripts.inc
+++ b/data/maps/MossdeepCity/scripts.inc
@@ -269,13 +269,13 @@ MossdeepCity_EventScript_1E4C85:: @ 81E4C85
end
MossdeepCity_EventScript_1E4CB0:: @ 81E4CB0
- applymovement 255, MossdeepCity_Movement_1E4CD4
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Movement_1E4CD4
applymovement 16, MossdeepCity_Movement_1E4CD8
waitmovement 0
return
MossdeepCity_EventScript_1E4CC2:: @ 81E4CC2
- applymovement 255, MossdeepCity_Movement_1E4CD4
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Movement_1E4CD4
applymovement 16, MossdeepCity_Movement_1E4CE2
waitmovement 0
return
diff --git a/data/maps/MossdeepCity_Gym/scripts.inc b/data/maps/MossdeepCity_Gym/scripts.inc
index f42b3f4e4..dd9ebf951 100644
--- a/data/maps/MossdeepCity_Gym/scripts.inc
+++ b/data/maps/MossdeepCity_Gym/scripts.inc
@@ -118,7 +118,7 @@ MossdeepCity_Gym_EventScript_220999:: @ 8220999
checkflag FLAG_0x064
goto_eq MossdeepCity_Gym_EventScript_2209D0
setflag FLAG_0x064
- applymovement 255, MossdeepCity_Gym_Movement_220C30
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Gym_Movement_220C30
waitmovement 0
setmetatile 5, 5, 516, 0
setmetatile 2, 7, 569, 1
@@ -133,7 +133,7 @@ MossdeepCity_Gym_EventScript_2209C8:: @ 82209C8
MossdeepCity_Gym_EventScript_2209D0:: @ 82209D0
clearflag FLAG_0x064
- applymovement 255, MossdeepCity_Gym_Movement_220C30
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Gym_Movement_220C30
waitmovement 0
setmetatile 5, 5, 524, 0
setmetatile 2, 7, 568, 1
@@ -145,7 +145,7 @@ MossdeepCity_Gym_EventScript_2209F5:: @ 82209F5
checkflag FLAG_0x065
goto_eq MossdeepCity_Gym_EventScript_220A24
setflag FLAG_0x065
- applymovement 255, MossdeepCity_Gym_Movement_220C30
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Gym_Movement_220C30
waitmovement 0
setmetatile 8, 14, 516, 0
setmetatile 8, 10, 569, 1
@@ -154,7 +154,7 @@ MossdeepCity_Gym_EventScript_2209F5:: @ 82209F5
MossdeepCity_Gym_EventScript_220A24:: @ 8220A24
clearflag FLAG_0x065
- applymovement 255, MossdeepCity_Gym_Movement_220C30
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Gym_Movement_220C30
waitmovement 0
setmetatile 8, 14, 517, 0
setmetatile 8, 10, 568, 1
@@ -166,7 +166,7 @@ MossdeepCity_Gym_EventScript_220A49:: @ 8220A49
checkflag FLAG_0x066
goto_eq MossdeepCity_Gym_EventScript_220A78
setflag FLAG_0x066
- applymovement 255, MossdeepCity_Gym_Movement_220C30
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Gym_Movement_220C30
waitmovement 0
setmetatile 15, 17, 524, 0
setmetatile 17, 15, 569, 1
@@ -175,7 +175,7 @@ MossdeepCity_Gym_EventScript_220A49:: @ 8220A49
MossdeepCity_Gym_EventScript_220A78:: @ 8220A78
clearflag FLAG_0x066
- applymovement 255, MossdeepCity_Gym_Movement_220C30
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Gym_Movement_220C30
waitmovement 0
setmetatile 15, 17, 516, 0
setmetatile 17, 15, 568, 1
@@ -187,7 +187,7 @@ MossdeepCity_Gym_EventScript_220A9D:: @ 8220A9D
checkflag FLAG_0x067
goto_eq MossdeepCity_Gym_EventScript_220ACC
setflag FLAG_0x067
- applymovement 255, MossdeepCity_Gym_Movement_220C30
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Gym_Movement_220C30
waitmovement 0
setmetatile 1, 23, 525, 0
setmetatile 5, 24, 569, 1
@@ -196,7 +196,7 @@ MossdeepCity_Gym_EventScript_220A9D:: @ 8220A9D
MossdeepCity_Gym_EventScript_220ACC:: @ 8220ACC
clearflag FLAG_0x067
- applymovement 255, MossdeepCity_Gym_Movement_220C30
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_Gym_Movement_220C30
waitmovement 0
setmetatile 1, 23, 516, 0
setmetatile 5, 24, 568, 1
diff --git a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc
index 3c31ec06c..96bc41e07 100644
--- a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc
+++ b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc
@@ -32,16 +32,16 @@ MossdeepCity_SpaceCenter_2F_MapScript2_223DB5: @ 8223DB5
MossdeepCity_SpaceCenter_2F_EventScript_223DBF:: @ 8223DBF
playse SE_PIN
- applymovement 255, MossdeepCity_SpaceCenter_2F_Movement_272598
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_SpaceCenter_2F_Movement_272598
waitmovement 0
- applymovement 255, MossdeepCity_SpaceCenter_2F_Movement_27259A
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_SpaceCenter_2F_Movement_27259A
waitmovement 0
msgbox MossdeepCity_SpaceCenter_2F_Text_2243A4, MSGBOX_YESNO
compare VAR_RESULT, 1
goto_eq MossdeepCity_SpaceCenter_2F_EventScript_223E09
msgbox MossdeepCity_SpaceCenter_2F_Text_2243FE, MSGBOX_DEFAULT
closemessage
- applymovement 255, MossdeepCity_SpaceCenter_2F_Movement_223E07
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_SpaceCenter_2F_Movement_223E07
waitmovement 0
warp MAP_MOSSDEEP_CITY_SPACE_CENTER_1F, 255, 13, 1
waitstate
@@ -57,13 +57,13 @@ MossdeepCity_SpaceCenter_2F_EventScript_223E09:: @ 8223E09
trainerbattle_no_intro TRAINER_GRUNT_34, MossdeepCity_SpaceCenter_2F_Text_224461
applymovement 6, MossdeepCity_SpaceCenter_2F_Movement_223E85
waitmovement 0
- applymovement 255, MossdeepCity_SpaceCenter_2F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_SpaceCenter_2F_Movement_2725A4
waitmovement 0
msgbox MossdeepCity_SpaceCenter_2F_Text_22446E, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_35, MossdeepCity_SpaceCenter_2F_Text_224499
applymovement 5, MossdeepCity_SpaceCenter_2F_Movement_223E81
waitmovement 0
- applymovement 255, MossdeepCity_SpaceCenter_2F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_SpaceCenter_2F_Movement_2725A8
waitmovement 0
msgbox MossdeepCity_SpaceCenter_2F_Text_2244AB, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_36, MossdeepCity_SpaceCenter_2F_Text_2244F1
diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc
index 88df5692e..ee89519bc 100644
--- a/data/maps/MtChimney/scripts.inc
+++ b/data/maps/MtChimney/scripts.inc
@@ -62,7 +62,7 @@ MtChimney_EventScript_22EE0B:: @ 822EE0B
call_if 1, MtChimney_EventScript_22EEC7
compare VAR_FACING, 2
call_if 1, MtChimney_EventScript_22EED2
- applymovement 255, MtChimney_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, MtChimney_Movement_2725A4
waitmovement 0
msgbox MtChimney_Text_22FC3D, MSGBOX_DEFAULT
closemessage
diff --git a/data/maps/MtChimney_CableCarStation/scripts.inc b/data/maps/MtChimney_CableCarStation/scripts.inc
index 2544e6729..664f75935 100644
--- a/data/maps/MtChimney_CableCarStation/scripts.inc
+++ b/data/maps/MtChimney_CableCarStation/scripts.inc
@@ -19,7 +19,7 @@ MtChimney_CableCarStation_MapScript2_22AC1D: @ 822AC1D
MtChimney_CableCarStation_EventScript_22AC27:: @ 822AC27
lockall
- applymovement 255, MtChimney_CableCarStation_Movement_22ACB4
+ applymovement EVENT_OBJ_ID_PLAYER, MtChimney_CableCarStation_Movement_22ACB4
applymovement 1, MtChimney_CableCarStation_Movement_22ACAA
waitmovement 0
setvar VAR_0x40A3, 0
@@ -42,13 +42,13 @@ MtChimney_CableCarStation_EventScript_22AC6C:: @ 822AC6C
msgbox MtChimney_CableCarStation_Text_22ACF8, MSGBOX_DEFAULT
closemessage
applymovement 1, MtChimney_CableCarStation_Movement_22ACA5
- applymovement 255, MtChimney_CableCarStation_Movement_22ACAF
+ applymovement EVENT_OBJ_ID_PLAYER, MtChimney_CableCarStation_Movement_22ACAF
waitmovement 0
setvar VAR_0x8004, 1
setvar VAR_0x40A3, 2
incrementgamestat 48
special CableCarWarp
- special sub_814FC9C
+ special CableCar
waitstate
release
end
diff --git a/data/maps/MtPyre_Summit/scripts.inc b/data/maps/MtPyre_Summit/scripts.inc
index 13caaab1e..3e19bc95a 100644
--- a/data/maps/MtPyre_Summit/scripts.inc
+++ b/data/maps/MtPyre_Summit/scripts.inc
@@ -32,7 +32,7 @@ MtPyre_Summit_EventScript_232030:: @ 8232030
MtPyre_Summit_EventScript_23203C:: @ 823203C
playbgm MUS_AQA_0, 0
- applymovement 255, MtPyre_Summit_Movement_2725B2
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2725B2
waitmovement 0
applymovement 2, MtPyre_Summit_Movement_2725AA
waitmovement 0
@@ -86,7 +86,7 @@ MtPyre_Summit_EventScript_2320EC:: @ 82320EC
MtPyre_Summit_EventScript_2320F7:: @ 82320F7
applymovement 3, MtPyre_Summit_Movement_23212C
waitmovement 0
- applymovement 255, MtPyre_Summit_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2725A8
waitmovement 0
return
@@ -98,7 +98,7 @@ MtPyre_Summit_EventScript_23210C:: @ 823210C
MtPyre_Summit_EventScript_232117:: @ 8232117
applymovement 3, MtPyre_Summit_Movement_232132
waitmovement 0
- applymovement 255, MtPyre_Summit_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2725A4
waitmovement 0
return
@@ -210,7 +210,7 @@ MtPyre_Summit_EventScript_232204:: @ 8232204
end
MtPyre_Summit_EventScript_232210:: @ 8232210
- applymovement 255, MtPyre_Summit_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2725A6
waitmovement 0
delay 60
compare VAR_0x8008, 0
@@ -250,49 +250,49 @@ MtPyre_Summit_EventScript_232210:: @ 8232210
end
MtPyre_Summit_EventScript_2322C4:: @ 82322C4
- applymovement 255, MtPyre_Summit_Movement_2323C4
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2323C4
applymovement 2, MtPyre_Summit_Movement_2323B6
applymovement 8, MtPyre_Summit_Movement_2323BD
waitmovement 0
return
MtPyre_Summit_EventScript_2322DD:: @ 82322DD
- applymovement 255, MtPyre_Summit_Movement_2323CB
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2323CB
applymovement 2, MtPyre_Summit_Movement_2323B6
applymovement 8, MtPyre_Summit_Movement_2323BD
waitmovement 0
return
MtPyre_Summit_EventScript_2322F6:: @ 82322F6
- applymovement 255, MtPyre_Summit_Movement_2323D2
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2323D2
applymovement 2, MtPyre_Summit_Movement_2323B6
applymovement 8, MtPyre_Summit_Movement_2323BD
waitmovement 0
return
MtPyre_Summit_EventScript_23230F:: @ 823230F
- applymovement 255, MtPyre_Summit_Movement_2323AE
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2323AE
applymovement 2, MtPyre_Summit_Movement_2323E7
applymovement 8, MtPyre_Summit_Movement_2323D8
waitmovement 0
return
MtPyre_Summit_EventScript_232328:: @ 8232328
- applymovement 255, MtPyre_Summit_Movement_2323B2
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2323B2
applymovement 2, MtPyre_Summit_Movement_2323E7
applymovement 8, MtPyre_Summit_Movement_2323DD
waitmovement 0
return
MtPyre_Summit_EventScript_232341:: @ 8232341
- applymovement 255, MtPyre_Summit_Movement_2323B2
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2323B2
applymovement 2, MtPyre_Summit_Movement_2323E7
applymovement 8, MtPyre_Summit_Movement_2323E2
waitmovement 0
return
MtPyre_Summit_EventScript_23235A:: @ 823235A
- applymovement 255, MtPyre_Summit_Movement_2323EA
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2323EA
applymovement 8, MtPyre_Summit_Movement_2323ED
waitmovement 0
applymovement 2, MtPyre_Summit_Movement_2725A8
@@ -300,7 +300,7 @@ MtPyre_Summit_EventScript_23235A:: @ 823235A
return
MtPyre_Summit_EventScript_232376:: @ 8232376
- applymovement 255, MtPyre_Summit_Movement_2323EA
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2323EA
applymovement 8, MtPyre_Summit_Movement_2323F3
waitmovement 0
applymovement 2, MtPyre_Summit_Movement_2725A8
@@ -308,7 +308,7 @@ MtPyre_Summit_EventScript_232376:: @ 8232376
return
MtPyre_Summit_EventScript_232392:: @ 8232392
- applymovement 255, MtPyre_Summit_Movement_2323EA
+ applymovement EVENT_OBJ_ID_PLAYER, MtPyre_Summit_Movement_2323EA
applymovement 8, MtPyre_Summit_Movement_2323F8
waitmovement 0
applymovement 2, MtPyre_Summit_Movement_2725A8
diff --git a/data/maps/NavelRock_Top/scripts.inc b/data/maps/NavelRock_Top/scripts.inc
index 8ae17cb37..f2b107947 100644
--- a/data/maps/NavelRock_Top/scripts.inc
+++ b/data/maps/NavelRock_Top/scripts.inc
@@ -38,12 +38,12 @@ NavelRock_Top_EventScript_26915B:: @ 826915B
NavelRock_Top_EventScript_26916F:: @ 826916F
lockall
setvar VAR_TEMP_1, 1
- special SpawnScriptEventObject
+ special SpawnCameraObject
setvar VAR_0x8004, 3
setvar VAR_0x8005, 35
special sub_813B80C
applymovement 1, NavelRock_Top_Movement_269243
- applymovement 127, NavelRock_Top_Movement_269230
+ applymovement EVENT_OBJ_ID_CAMERA, NavelRock_Top_Movement_269230
waitmovement 0
delay 50
setweather 0
@@ -56,10 +56,10 @@ NavelRock_Top_EventScript_26916F:: @ 826916F
setvar VAR_0x8004, 3
setvar VAR_0x8005, 35
special sub_813B80C
- applymovement 127, NavelRock_Top_Movement_269234
+ applymovement EVENT_OBJ_ID_CAMERA, NavelRock_Top_Movement_269234
applymovement 1, NavelRock_Top_Movement_26923A
waitmovement 0
- special RemoveScriptEventObject
+ special RemoveCameraObject
setvar VAR_0x8004, 250
setvar VAR_0x8005, 70
setvar VAR_0x8006, 0
diff --git a/data/maps/NewMauville_Entrance/scripts.inc b/data/maps/NewMauville_Entrance/scripts.inc
index 714a20b6b..9efc423db 100644
--- a/data/maps/NewMauville_Entrance/scripts.inc
+++ b/data/maps/NewMauville_Entrance/scripts.inc
@@ -23,7 +23,7 @@ NewMauville_Entrance_MapScript1_2372FB: @ 82372FB
NewMauville_Entrance_EventScript_2372FF:: @ 82372FF
lockall
- applymovement 255, NewMauville_Entrance_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, NewMauville_Entrance_Movement_2725A6
waitmovement 0
msgbox NewMauville_Entrance_Text_237382, MSGBOX_DEFAULT
checkitem ITEM_BASEMENT_KEY, 1
diff --git a/data/maps/OldaleTown/scripts.inc b/data/maps/OldaleTown/scripts.inc
index d2e808116..80867cca6 100644
--- a/data/maps/OldaleTown/scripts.inc
+++ b/data/maps/OldaleTown/scripts.inc
@@ -54,20 +54,20 @@ OldaleTown_EventScript_1E8EFC:: @ 81E8EFC
OldaleTown_EventScript_1E8F47:: @ 81E8F47
applymovement 2, OldaleTown_Movement_1E8FD7
- applymovement 255, OldaleTown_Movement_1E9001
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_Movement_1E9001
waitmovement 0
goto OldaleTown_EventScript_1E8F8C
end
OldaleTown_EventScript_1E8F5E:: @ 81E8F5E
applymovement 2, OldaleTown_Movement_1E8FE2
- applymovement 255, OldaleTown_Movement_1E900B
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_Movement_1E900B
waitmovement 0
goto OldaleTown_EventScript_1E8F8C
end
OldaleTown_EventScript_1E8F75:: @ 81E8F75
- applymovement 255, OldaleTown_Movement_1E8FF9
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_Movement_1E8FF9
applymovement 2, OldaleTown_Movement_1E8FCE
waitmovement 0
goto OldaleTown_EventScript_1E8F8C
@@ -206,7 +206,7 @@ OldaleTown_EventScript_1E901F:: @ 81E901F
OldaleTown_EventScript_1E903F:: @ 81E903F
lockall
- applymovement 255, OldaleTown_Movement_1E9182
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_Movement_1E9182
applymovement 3, OldaleTown_Movement_1E9185
waitmovement 0
msgbox OldaleTown_Text_1E9313, MSGBOX_DEFAULT
@@ -233,7 +233,7 @@ OldaleTown_EventScript_1E9086:: @ 81E9086
lockall
applymovement 4, OldaleTown_Movement_1E9170
waitmovement 0
- applymovement 255, OldaleTown_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_Movement_2725A8
waitmovement 0
setvar VAR_0x8009, 1
goto OldaleTown_EventScript_1E90E6
@@ -243,7 +243,7 @@ OldaleTown_EventScript_1E90A6:: @ 81E90A6
lockall
applymovement 4, OldaleTown_Movement_1E9173
waitmovement 0
- applymovement 255, OldaleTown_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_Movement_2725A8
waitmovement 0
setvar VAR_0x8009, 1
goto OldaleTown_EventScript_1E90E6
@@ -253,7 +253,7 @@ OldaleTown_EventScript_1E90C6:: @ 81E90C6
lockall
applymovement 4, OldaleTown_Movement_1E9175
waitmovement 0
- applymovement 255, OldaleTown_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_Movement_2725A8
waitmovement 0
setvar VAR_0x8009, 1
goto OldaleTown_EventScript_1E90E6
@@ -299,7 +299,7 @@ OldaleTown_EventScript_1E9148:: @ 81E9148
return
OldaleTown_EventScript_1E915E:: @ 81E915E
- applymovement 255, OldaleTown_Movement_1E917E
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_Movement_1E917E
applymovement 4, OldaleTown_Movement_1E9177
waitmovement 0
return
diff --git a/data/maps/PetalburgCity/scripts.inc b/data/maps/PetalburgCity/scripts.inc
index bdffb6814..beee8d57e 100644
--- a/data/maps/PetalburgCity/scripts.inc
+++ b/data/maps/PetalburgCity/scripts.inc
@@ -33,7 +33,7 @@ PetalburgCity_EventScript_1DC32E:: @ 81DC32E
special SavePlayerParty
special PutZigzagoonInPlayerParty
applymovement 2, PetalburgCity_Movement_1DC451
- applymovement 255, PetalburgCity_Movement_1DC430
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC430
waitmovement 0
msgbox PetalburgCity_Text_1EC1F8, MSGBOX_DEFAULT
special StartWallyTutorialBattle
@@ -58,14 +58,14 @@ PetalburgCity_EventScript_1DC390:: @ 81DC390
lockall
setflag FLAG_SPECIAL_FLAG_0x4000
applymovement 5, PetalburgCity_Movement_1DC41B
- applymovement 255, PetalburgCity_Movement_1DC406
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC406
waitmovement 0
setvar VAR_0x8004, 7
setvar VAR_0x8005, 5
opendoor VAR_0x8004, VAR_0x8005
waitdooranim
applymovement 5, PetalburgCity_Movement_1DC42D
- applymovement 255, PetalburgCity_Movement_1DC418
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC418
waitmovement 0
setflag FLAG_HIDE_PETALBURG_CITY_WALLYS_UNCLE
hideobjectat 255, MAP_PETALBURG_CITY
@@ -286,7 +286,7 @@ PetalburgCity_EventScript_1DC4CA:: @ 81DC4CA
call_if 1, PetalburgCity_EventScript_1DC5FF
msgbox PetalburgCity_Text_1DC91B, MSGBOX_DEFAULT
applymovement 8, PetalburgCity_Movement_2725A8
- applymovement 255, PetalburgCity_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_2725A8
waitmovement 0
msgbox PetalburgCity_Text_1DC93E, MSGBOX_DEFAULT
closemessage
@@ -299,7 +299,7 @@ PetalburgCity_EventScript_1DC4CA:: @ 81DC4CA
PetalburgCity_EventScript_1DC57F:: @ 81DC57F
applymovement 8, PetalburgCity_Movement_1DC615
waitmovement 0
- applymovement 255, PetalburgCity_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_2725AA
waitmovement 0
return
@@ -311,38 +311,38 @@ PetalburgCity_EventScript_1DC594:: @ 81DC594
PetalburgCity_EventScript_1DC59F:: @ 81DC59F
applymovement 8, PetalburgCity_Movement_1DC61D
waitmovement 0
- applymovement 255, PetalburgCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_2725A6
waitmovement 0
return
PetalburgCity_EventScript_1DC5B4:: @ 81DC5B4
applymovement 8, PetalburgCity_Movement_1DC622
waitmovement 0
- applymovement 255, PetalburgCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_2725A6
waitmovement 0
return
PetalburgCity_EventScript_1DC5C9:: @ 81DC5C9
applymovement 8, PetalburgCity_Movement_1DC628
- applymovement 255, PetalburgCity_Movement_1DC665
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC665
waitmovement 0
return
PetalburgCity_EventScript_1DC5DB:: @ 81DC5DB
applymovement 8, PetalburgCity_Movement_1DC633
- applymovement 255, PetalburgCity_Movement_1DC66F
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC66F
waitmovement 0
return
PetalburgCity_EventScript_1DC5ED:: @ 81DC5ED
applymovement 8, PetalburgCity_Movement_1DC641
- applymovement 255, PetalburgCity_Movement_1DC67C
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC67C
waitmovement 0
return
PetalburgCity_EventScript_1DC5FF:: @ 81DC5FF
applymovement 8, PetalburgCity_Movement_1DC64C
- applymovement 255, PetalburgCity_Movement_1DC686
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC686
waitmovement 0
return
@@ -544,7 +544,7 @@ PetalburgCity_EventScript_1DC6E9:: @ 81DC6E9
waitmovement 0
applymovement 9, PetalburgCity_Movement_1DC7DB
waitmovement 0
- applymovement 255, PetalburgCity_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_2725A8
waitmovement 0
setvar VAR_0x40D1, 1
msgbox PetalburgCity_Text_1DCB31, MSGBOX_DEFAULT
@@ -573,25 +573,25 @@ PetalburgCity_EventScript_1DC6E9:: @ 81DC6E9
end
PetalburgCity_EventScript_1DC78E:: @ 81DC78E
- applymovement 255, PetalburgCity_Movement_1DC7EE
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC7EE
applymovement 9, PetalburgCity_Movement_1DC7E0
waitmovement 0
return
PetalburgCity_EventScript_1DC7A0:: @ 81DC7A0
- applymovement 255, PetalburgCity_Movement_1DC802
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC802
applymovement 9, PetalburgCity_Movement_1DC7F5
waitmovement 0
return
PetalburgCity_EventScript_1DC7B2:: @ 81DC7B2
- applymovement 255, PetalburgCity_Movement_1DC815
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC815
applymovement 9, PetalburgCity_Movement_1DC808
waitmovement 0
return
PetalburgCity_EventScript_1DC7C4:: @ 81DC7C4
- applymovement 255, PetalburgCity_Movement_1DC828
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Movement_1DC828
applymovement 9, PetalburgCity_Movement_1DC81B
waitmovement 0
return
diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc
index 6a58c20f7..9b0f4bcb5 100644
--- a/data/maps/PetalburgCity_Gym/scripts.inc
+++ b/data/maps/PetalburgCity_Gym/scripts.inc
@@ -91,14 +91,14 @@ PetalburgCity_Gym_EventScript_2049A4:: @ 82049A4
msgbox PetalburgCity_Gym_Text_205B32, MSGBOX_DEFAULT
msgbox PetalburgCity_Gym_Text_205B4C, MSGBOX_DEFAULT
closemessage
- applymovement 255, PetalburgCity_Gym_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725AA
applymovement 10, PetalburgCity_Gym_Movement_2049EC
waitmovement 0
playse SE_KAIDAN
removeobject 10
setflag FLAG_HIDE_PETALBURG_CITY_WALLY
delay 30
- applymovement 255, PetalburgCity_Gym_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725A6
waitmovement 0
msgbox PetalburgCity_Gym_Text_205C40, MSGBOX_DEFAULT
setvar VAR_0x4085, 2
@@ -238,13 +238,13 @@ PetalburgCity_Gym_EventScript_204C43:: @ 8204C43
applymovement 10, PetalburgCity_Gym_Movement_2050E1
waitmovement 0
applymovement 1, PetalburgCity_Gym_Movement_2725A8
- applymovement 255, PetalburgCity_Gym_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725A8
waitmovement 0
return
PetalburgCity_Gym_EventScript_204C5F:: @ 8204C5F
applymovement 1, PetalburgCity_Gym_Movement_2725AA
- applymovement 255, PetalburgCity_Gym_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725AA
applymovement 10, PetalburgCity_Gym_Movement_2050EB
waitmovement 0
return
@@ -252,25 +252,25 @@ PetalburgCity_Gym_EventScript_204C5F:: @ 8204C5F
PetalburgCity_Gym_EventScript_204C78:: @ 8204C78
applymovement 1, PetalburgCity_Gym_Movement_2725AA
applymovement 10, PetalburgCity_Gym_Movement_205102
- applymovement 255, PetalburgCity_Gym_Movement_205111
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_205111
waitmovement 0
return
PetalburgCity_Gym_EventScript_204C91:: @ 8204C91
applymovement 10, PetalburgCity_Gym_Movement_2050F2
- applymovement 255, PetalburgCity_Gym_Movement_205109
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_205109
waitmovement 0
return
PetalburgCity_Gym_EventScript_204CA3:: @ 8204CA3
applymovement 10, PetalburgCity_Gym_Movement_205102
- applymovement 255, PetalburgCity_Gym_Movement_20511B
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_20511B
waitmovement 0
return
PetalburgCity_Gym_EventScript_204CB5:: @ 8204CB5
applymovement 10, PetalburgCity_Gym_Movement_2050FA
- applymovement 255, PetalburgCity_Gym_Movement_205123
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_205123
waitmovement 0
return
@@ -281,19 +281,19 @@ PetalburgCity_Gym_EventScript_204CC7:: @ 8204CC7
PetalburgCity_Gym_EventScript_204CD2:: @ 8204CD2
applymovement 1, PetalburgCity_Gym_Movement_2725AA
- applymovement 255, PetalburgCity_Gym_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725A6
waitmovement 0
return
PetalburgCity_Gym_EventScript_204CE4:: @ 8204CE4
applymovement 1, PetalburgCity_Gym_Movement_2725A8
- applymovement 255, PetalburgCity_Gym_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725A4
waitmovement 0
return
PetalburgCity_Gym_EventScript_204CF6:: @ 8204CF6
applymovement 1, PetalburgCity_Gym_Movement_2725A4
- applymovement 255, PetalburgCity_Gym_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725A8
waitmovement 0
return
@@ -524,7 +524,7 @@ PetalburgCity_Gym_EventScript_204FE2:: @ 8204FE2
PetalburgCity_Gym_EventScript_204FED:: @ 8204FED
applymovement 11, PetalburgCity_Gym_Movement_2050C3
waitmovement 0
- applymovement 255, PetalburgCity_Gym_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725A4
applymovement 1, PetalburgCity_Gym_Movement_2725A4
waitmovement 0
return
@@ -532,7 +532,7 @@ PetalburgCity_Gym_EventScript_204FED:: @ 8204FED
PetalburgCity_Gym_EventScript_205009:: @ 8205009
applymovement 11, PetalburgCity_Gym_Movement_2050CA
waitmovement 0
- applymovement 255, PetalburgCity_Gym_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725AA
applymovement 1, PetalburgCity_Gym_Movement_2725AA
waitmovement 0
return
@@ -540,7 +540,7 @@ PetalburgCity_Gym_EventScript_205009:: @ 8205009
PetalburgCity_Gym_EventScript_205025:: @ 8205025
applymovement 11, PetalburgCity_Gym_Movement_2050D0
waitmovement 0
- applymovement 255, PetalburgCity_Gym_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2725AA
applymovement 1, PetalburgCity_Gym_Movement_2725AA
waitmovement 0
return
@@ -548,19 +548,19 @@ PetalburgCity_Gym_EventScript_205025:: @ 8205025
PetalburgCity_Gym_EventScript_205041:: @ 8205041
applymovement 11, PetalburgCity_Gym_Movement_20507E
applymovement 1, PetalburgCity_Gym_Movement_2725AA
- applymovement 255, PetalburgCity_Gym_Movement_2050A1
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2050A1
waitmovement 0
return
PetalburgCity_Gym_EventScript_20505A:: @ 820505A
applymovement 11, PetalburgCity_Gym_Movement_205089
- applymovement 255, PetalburgCity_Gym_Movement_2050A9
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2050A9
waitmovement 0
return
PetalburgCity_Gym_EventScript_20506C:: @ 820506C
applymovement 11, PetalburgCity_Gym_Movement_205094
- applymovement 255, PetalburgCity_Gym_Movement_2050B1
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgCity_Gym_Movement_2050B1
waitmovement 0
return
diff --git a/data/maps/PetalburgWoods/scripts.inc b/data/maps/PetalburgWoods/scripts.inc
index 387955f73..7dab2747b 100644
--- a/data/maps/PetalburgWoods/scripts.inc
+++ b/data/maps/PetalburgWoods/scripts.inc
@@ -30,7 +30,7 @@ PetalburgWoods_EventScript_22DFD7:: @ 822DFD7
applymovement 3, PetalburgWoods_Movement_22E1F9
waitmovement 0
call PetalburgWoods_EventScript_22E138
- applymovement 255, PetalburgWoods_Movement_22E1E0
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgWoods_Movement_22E1E0
applymovement 4, PetalburgWoods_Movement_22E1C2
waitmovement 0
goto PetalburgWoods_EventScript_22E1A7
@@ -41,7 +41,7 @@ PetalburgWoods_EventScript_22E079:: @ 822E079
call PetalburgWoods_EventScript_22E124
applymovement 4, PetalburgWoods_Movement_22E1D0
waitmovement 0
- applymovement 255, PetalburgWoods_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgWoods_Movement_2725A4
waitmovement 0
msgbox PetalburgWoods_Text_22E34F, MSGBOX_DEFAULT
closemessage
@@ -59,14 +59,14 @@ PetalburgWoods_EventScript_22E079:: @ 822E079
applymovement 4, PetalburgWoods_Movement_22E1EA
waitmovement 0
msgbox PetalburgWoods_Text_22E457, MSGBOX_DEFAULT
- applymovement 255, PetalburgWoods_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgWoods_Movement_2725A6
waitmovement 0
msgbox PetalburgWoods_Text_22E4A5, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_GRUNT_8, PetalburgWoods_Text_22E542
applymovement 3, PetalburgWoods_Movement_22E1F9
waitmovement 0
call PetalburgWoods_EventScript_22E138
- applymovement 255, PetalburgWoods_Movement_22E1E0
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgWoods_Movement_22E1E0
applymovement 4, PetalburgWoods_Movement_22E1D7
waitmovement 0
goto PetalburgWoods_EventScript_22E1A7
@@ -85,7 +85,7 @@ PetalburgWoods_EventScript_22E138:: @ 822E138
applymovement 3, PetalburgWoods_Movement_22E1FD
waitmovement 0
removeobject 3
- applymovement 255, PetalburgWoods_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, PetalburgWoods_Movement_2725AA
waitmovement 0
msgbox PetalburgWoods_Text_22E63D, MSGBOX_DEFAULT
giveitem_std ITEM_GREAT_BALL
diff --git a/data/maps/Route101/scripts.inc b/data/maps/Route101/scripts.inc
index f724914ba..eaf9d7118 100644
--- a/data/maps/Route101/scripts.inc
+++ b/data/maps/Route101/scripts.inc
@@ -23,7 +23,7 @@ Route101_EventScript_1EBCDE:: @ 81EBCDE
closemessage
setobjectxy 2, 0, 15
setobjectxy 4, 0, 16
- applymovement 255, Route101_Movement_1EBDC2
+ applymovement EVENT_OBJ_ID_PLAYER, Route101_Movement_1EBDC2
applymovement 2, Route101_Movement_1EBDE7
applymovement 4, Route101_Movement_1EBDB5
waitmovement 0
@@ -45,7 +45,7 @@ Route101_EventScript_1EBD4E:: @ 81EBD4E
lockall
msgbox Route101_Text_1EBEDF, MSGBOX_DEFAULT
closemessage
- applymovement 255, Route101_Movement_1EBD90
+ applymovement EVENT_OBJ_ID_PLAYER, Route101_Movement_1EBD90
waitmovement 0
releaseall
end
@@ -54,7 +54,7 @@ Route101_EventScript_1EBD64:: @ 81EBD64
lockall
msgbox Route101_Text_1EBEDF, MSGBOX_DEFAULT
closemessage
- applymovement 255, Route101_Movement_1EBD92
+ applymovement EVENT_OBJ_ID_PLAYER, Route101_Movement_1EBD92
waitmovement 0
releaseall
end
@@ -63,7 +63,7 @@ Route101_EventScript_1EBD7A:: @ 81EBD7A
lockall
msgbox Route101_Text_1EBEDF, MSGBOX_DEFAULT
closemessage
- applymovement 255, Route101_Movement_1EBD94
+ applymovement EVENT_OBJ_ID_PLAYER, Route101_Movement_1EBD94
waitmovement 0
releaseall
end
@@ -223,7 +223,7 @@ Route101_EventScript_1EBE16:: @ 81EBE16
fadescreen 1
removeobject 4
setobjectxy 255, 6, 13
- applymovement 255, Route101_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, Route101_Movement_2725A4
waitmovement 0
special ChooseStarter
waitstate
diff --git a/data/maps/Route103/scripts.inc b/data/maps/Route103/scripts.inc
index e79ddd041..e2b60e800 100644
--- a/data/maps/Route103/scripts.inc
+++ b/data/maps/Route103/scripts.inc
@@ -111,7 +111,7 @@ Route103_EventScript_1EC50A:: @ 81EC50A
end
Route103_EventScript_1EC53D:: @ 81EC53D
- applymovement 255, Route103_Movement_1EC5C8
+ applymovement EVENT_OBJ_ID_PLAYER, Route103_Movement_1EC5C8
applymovement 2, Route103_Movement_1EC5BE
waitmovement 0
playse SE_DANSA
@@ -121,7 +121,7 @@ Route103_EventScript_1EC53D:: @ 81EC53D
end
Route103_EventScript_1EC561:: @ 81EC561
- applymovement 255, Route103_Movement_1EC5D6
+ applymovement EVENT_OBJ_ID_PLAYER, Route103_Movement_1EC5D6
applymovement 2, Route103_Movement_1EC5CE
waitmovement 0
playse SE_DANSA
diff --git a/data/maps/Route104/scripts.inc b/data/maps/Route104/scripts.inc
index 1d591793d..c6f019edb 100644
--- a/data/maps/Route104/scripts.inc
+++ b/data/maps/Route104/scripts.inc
@@ -55,12 +55,12 @@ Route104_EventScript_1ECCB3:: @ 81ECCB3
setflag FLAG_HIDE_RUSBORO_CITY_RIVAL
setvar VAR_0x405A, 8
setvar VAR_0x4063, 2
- applymovement 255, Route104_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_2725A6
waitmovement 0
delay 10
addobject 34
clearflag FLAG_HIDE_ROUTE_104_RIVAL
- applymovement 255, Route104_Movement_1ECF86
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_1ECF86
waitmovement 0
applymovement 34, Route104_Movement_1ECF8A
waitmovement 0
@@ -113,7 +113,7 @@ Route104_EventScript_1ECD4B:: @ 81ECD4B
closemessage
delay 30
setflag FLAG_0x0FD
- applymovement 255, Route104_Movement_1ECDCD
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_1ECDCD
applymovement 34, Route104_Movement_1ECDC8
msgbox Route104_Text_1EDCB1, MSGBOX_DEFAULT
closemessage
@@ -204,7 +204,7 @@ Route104_EventScript_1ECE6F:: @ 81ECE6F
closemessage
delay 30
setflag FLAG_0x0FD
- applymovement 255, Route104_Movement_1ECDCD
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_1ECDCD
applymovement 34, Route104_Movement_1ECDC8
msgbox Route104_Text_1EDFC6, MSGBOX_DEFAULT
closemessage
@@ -372,7 +372,7 @@ Route104_EventScript_1ED099:: @ 81ED099
applymovement 8, Route104_Movement_1ED359
waitmovement 0
removeobject 8
- applymovement 255, Route104_Movement_1ED34F
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_1ED34F
waitmovement 0
hideobjectat 255, MAP_ROUTE104
call Route104_EventScript_2720A0
@@ -384,13 +384,13 @@ Route104_EventScript_1ED099:: @ 81ED099
Route104_EventScript_1ED0D9:: @ 81ED0D9
applymovement 7, Route104_Movement_1ED28C
- applymovement 255, Route104_Movement_1ED28C
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_1ED28C
waitmovement 0
goto Route104_EventScript_1ED139
Route104_EventScript_1ED0EF:: @ 81ED0EF
applymovement 7, Route104_Movement_1ED1C8
- applymovement 255, Route104_Movement_1ED1C8
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_1ED1C8
waitmovement 0
pokenavcall Route104_Text_1EE336
waitmessage
@@ -401,7 +401,7 @@ Route104_EventScript_1ED0EF:: @ 81ED0EF
closemessage
delay 30
setflag FLAG_0x132
- applymovement 255, Route104_Movement_1ED22A
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_1ED22A
applymovement 7, Route104_Movement_1ED22A, MAP_ROUTE104
waitmovement 7, MAP_ROUTE104
waitmovement 0
@@ -409,11 +409,11 @@ Route104_EventScript_1ED0EF:: @ 81ED0EF
Route104_EventScript_1ED139:: @ 81ED139
delay 50
- applymovement 255, Route104_Movement_1ED353
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_1ED353
waitmovement 0
call Route104_EventScript_2720A8
showobjectat 255, MAP_DEWFORD_TOWN
- applymovement 255, Route104_Movement_1ED355
+ applymovement EVENT_OBJ_ID_PLAYER, Route104_Movement_1ED355
waitmovement 0
setobjectxyperm 2, 12, 8
addobject 2
diff --git a/data/maps/Route109/scripts.inc b/data/maps/Route109/scripts.inc
index 52f6437ae..51430fd91 100644
--- a/data/maps/Route109/scripts.inc
+++ b/data/maps/Route109/scripts.inc
@@ -15,19 +15,19 @@ Route109_EventScript_1EE760:: @ 81EE760
end
Route109_EventScript_1EE7A5:: @ 81EE7A5
- applymovement 255, Route109_Movement_1EE8FD
+ applymovement EVENT_OBJ_ID_PLAYER, Route109_Movement_1EE8FD
waitmovement 0
goto Route109_EventScript_1EE7D5
end
Route109_EventScript_1EE7B5:: @ 81EE7B5
- applymovement 255, Route109_Movement_1EE905
+ applymovement EVENT_OBJ_ID_PLAYER, Route109_Movement_1EE905
waitmovement 0
goto Route109_EventScript_1EE7D5
end
Route109_EventScript_1EE7C5:: @ 81EE7C5
- applymovement 255, Route109_Movement_1EE908
+ applymovement EVENT_OBJ_ID_PLAYER, Route109_Movement_1EE908
waitmovement 0
goto Route109_EventScript_1EE7D5
end
@@ -36,12 +36,12 @@ Route109_EventScript_1EE7D5:: @ 81EE7D5
hideobjectat 255, MAP_ROUTE109
call Route109_EventScript_2720A0
applymovement 1, Route109_Movement_1EE84F
- applymovement 255, Route109_Movement_1EE84F
+ applymovement EVENT_OBJ_ID_PLAYER, Route109_Movement_1EE84F
waitmovement 0
delay 50
call Route109_EventScript_2720A8
showobjectat 255, MAP_DEWFORD_TOWN
- applymovement 255, Route109_Movement_1EE900
+ applymovement EVENT_OBJ_ID_PLAYER, Route109_Movement_1EE900
waitmovement 0
addobject 4
clearflag FLAG_HIDE_MR_BRINEY_BOAT_DEWFORD_TOWN
diff --git a/data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc b/data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc
index ee859748f..a1c3383a4 100644
--- a/data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc
+++ b/data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc
@@ -21,7 +21,7 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_26EA84:: @ 826EA84
Route110_SeasideCyclingRoadNorthEntrance_EventScript_26EA9F:: @ 826EA9F
msgbox Route110_SeasideCyclingRoadNorthEntrance_Text_26EB48, MSGBOX_DEFAULT
closemessage
- applymovement 255, Route110_SeasideCyclingRoadNorthEntrance_Movement_26EAB4
+ applymovement EVENT_OBJ_ID_PLAYER, Route110_SeasideCyclingRoadNorthEntrance_Movement_26EAB4
waitmovement 0
releaseall
end
diff --git a/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc b/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc
index 9bd6c845e..4e78df507 100644
--- a/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc
+++ b/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc
@@ -39,7 +39,7 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_26EBF6:: @ 826EBF6
Route110_SeasideCyclingRoadSouthEntrance_EventScript_26EBFC:: @ 826EBFC
msgbox Route110_SeasideCyclingRoadSouthEntrance_Text_26ECAA, MSGBOX_DEFAULT
closemessage
- applymovement 255, Route110_SeasideCyclingRoadSouthEntrance_Movement_26EC11
+ applymovement EVENT_OBJ_ID_PLAYER, Route110_SeasideCyclingRoadSouthEntrance_Movement_26EC11
waitmovement 0
releaseall
end
diff --git a/data/maps/Route110_TrickHouseEnd/scripts.inc b/data/maps/Route110_TrickHouseEnd/scripts.inc
index 892d9e65f..6f1adef4f 100644
--- a/data/maps/Route110_TrickHouseEnd/scripts.inc
+++ b/data/maps/Route110_TrickHouseEnd/scripts.inc
@@ -241,11 +241,11 @@ Route110_TrickHouseEnd_EventScript_26B041:: @ 826B041
applymovement 1, Route110_TrickHouseEnd_Movement_26B08B
waitmovement 0
playse SE_W153
- applymovement 255, Route110_TrickHouseEnd_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, Route110_TrickHouseEnd_Movement_2725AA
waitmovement 0
msgbox Route110_TrickHouseEnd_Text_26B8BD, MSGBOX_DEFAULT
closemessage
- applymovement 255, Route110_TrickHouseEnd_Movement_26B089
+ applymovement EVENT_OBJ_ID_PLAYER, Route110_TrickHouseEnd_Movement_26B089
waitmovement 0
delay 4
turnobject 1, 4
diff --git a/data/maps/Route110_TrickHouseEntrance/scripts.inc b/data/maps/Route110_TrickHouseEntrance/scripts.inc
index 22750f536..c4f30dedb 100644
--- a/data/maps/Route110_TrickHouseEntrance/scripts.inc
+++ b/data/maps/Route110_TrickHouseEntrance/scripts.inc
@@ -243,9 +243,9 @@ Route110_TrickHouseEntrance_EventScript_269D3B:: @ 8269D3B
Route110_TrickHouseEntrance_EventScript_269D6E:: @ 8269D6E
playse SE_PIN
- applymovement 255, Route110_TrickHouseEntrance_Movement_272598
+ applymovement EVENT_OBJ_ID_PLAYER, Route110_TrickHouseEntrance_Movement_272598
waitmovement 0
- applymovement 255, Route110_TrickHouseEntrance_Movement_27259A
+ applymovement EVENT_OBJ_ID_PLAYER, Route110_TrickHouseEntrance_Movement_27259A
waitmovement 0
compare VAR_0x4044, 0
call_if 1, Route110_TrickHouseEntrance_EventScript_269DEE
@@ -513,9 +513,9 @@ Route110_TrickHouseEntrance_EventScript_26A126:: @ 826A126
setmetatile 5, 1, 537, 0
special DrawWholeMapView
delay 20
- applymovement 255, Route110_TrickHouseEntrance_Movement_2725C9
+ applymovement EVENT_OBJ_ID_PLAYER, Route110_TrickHouseEntrance_Movement_2725C9
waitmovement 0
- applymovement 255, Route110_TrickHouseEntrance_Movement_26A1A7
+ applymovement EVENT_OBJ_ID_PLAYER, Route110_TrickHouseEntrance_Movement_26A1A7
waitmovement 0
switch VAR_0x4044
case 0, Route110_TrickHouseEntrance_EventScript_26A1A9
diff --git a/data/maps/Route111/scripts.inc b/data/maps/Route111/scripts.inc
index 2be579ab6..8d5de281b 100644
--- a/data/maps/Route111/scripts.inc
+++ b/data/maps/Route111/scripts.inc
@@ -227,22 +227,22 @@ Route111_EventScript_1F0F45:: @ 81F0F45
end
Route111_EventScript_1F0F7C:: @ 81F0F7C
- applymovement 255, Route111_Movement_1F0FA8
+ applymovement EVENT_OBJ_ID_PLAYER, Route111_Movement_1F0FA8
waitmovement 0
return
Route111_EventScript_1F0F87:: @ 81F0F87
- applymovement 255, Route111_Movement_1F0FAA
+ applymovement EVENT_OBJ_ID_PLAYER, Route111_Movement_1F0FAA
waitmovement 0
return
Route111_EventScript_1F0F92:: @ 81F0F92
- applymovement 255, Route111_Movement_1F0FAC
+ applymovement EVENT_OBJ_ID_PLAYER, Route111_Movement_1F0FAC
waitmovement 0
return
Route111_EventScript_1F0F9D:: @ 81F0F9D
- applymovement 255, Route111_Movement_1F0FAE
+ applymovement EVENT_OBJ_ID_PLAYER, Route111_Movement_1F0FAE
waitmovement 0
return
@@ -298,7 +298,7 @@ Route111_EventScript_1F0FE7:: @ 81F0FE7
waitmovement 0
removeobject 1
call Route111_EventScript_1F1143
- applymovement 255, Route111_Movement_1F114F
+ applymovement EVENT_OBJ_ID_PLAYER, Route111_Movement_1F114F
waitmovement 0
call Route111_EventScript_1F113C
addobject 2
@@ -316,7 +316,7 @@ Route111_EventScript_1F0FE7:: @ 81F0FE7
waitmovement 0
removeobject 2
call Route111_EventScript_1F1143
- applymovement 255, Route111_Movement_1F114F
+ applymovement EVENT_OBJ_ID_PLAYER, Route111_Movement_1F114F
waitmovement 0
call Route111_EventScript_1F113C
addobject 3
@@ -334,7 +334,7 @@ Route111_EventScript_1F0FE7:: @ 81F0FE7
waitmovement 0
removeobject 3
call Route111_EventScript_1F1143
- applymovement 255, Route111_Movement_1F114F
+ applymovement EVENT_OBJ_ID_PLAYER, Route111_Movement_1F114F
waitmovement 0
call Route111_EventScript_1F113C
addobject 4
diff --git a/data/maps/Route112_CableCarStation/scripts.inc b/data/maps/Route112_CableCarStation/scripts.inc
index 905e9e9ea..5873b2d53 100644
--- a/data/maps/Route112_CableCarStation/scripts.inc
+++ b/data/maps/Route112_CableCarStation/scripts.inc
@@ -20,7 +20,7 @@ Route112_CableCarStation_MapScript2_22AAE9: @ 822AAE9
Route112_CableCarStation_EventScript_22AAF3:: @ 822AAF3
lockall
- applymovement 255, Route112_CableCarStation_Movement_22AB80
+ applymovement EVENT_OBJ_ID_PLAYER, Route112_CableCarStation_Movement_22AB80
applymovement 1, Route112_CableCarStation_Movement_22AB76
waitmovement 0
setvar VAR_0x40A3, 0
@@ -43,13 +43,13 @@ Route112_CableCarStation_EventScript_22AB38:: @ 822AB38
msgbox Route112_CableCarStation_Text_22ABC2, MSGBOX_DEFAULT
closemessage
applymovement 1, Route112_CableCarStation_Movement_22AB71
- applymovement 255, Route112_CableCarStation_Movement_22AB7B
+ applymovement EVENT_OBJ_ID_PLAYER, Route112_CableCarStation_Movement_22AB7B
waitmovement 0
setvar VAR_0x8004, 0
setvar VAR_0x40A3, 1
incrementgamestat 48
special CableCarWarp
- special sub_814FC9C
+ special CableCar
waitstate
release
end
diff --git a/data/maps/Route114_FossilManiacsTunnel/scripts.inc b/data/maps/Route114_FossilManiacsTunnel/scripts.inc
index 7b2a91810..1159128cc 100644
--- a/data/maps/Route114_FossilManiacsTunnel/scripts.inc
+++ b/data/maps/Route114_FossilManiacsTunnel/scripts.inc
@@ -26,7 +26,7 @@ Route114_FossilManiacsTunnel_EventScript_22AF53:: @ 822AF53
Route114_FossilManiacsTunnel_EventScript_22AF66:: @ 822AF66
lockall
applymovement 1, Route114_FossilManiacsTunnel_Movement_2725A6
- applymovement 255, Route114_FossilManiacsTunnel_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, Route114_FossilManiacsTunnel_Movement_2725AA
waitmovement 0
msgbox Route114_FossilManiacsTunnel_Text_22B1F7, MSGBOX_DEFAULT
setvar VAR_0x40CC, 2
diff --git a/data/maps/Route116/scripts.inc b/data/maps/Route116/scripts.inc
index 2ad7ea58b..ab8377b1c 100644
--- a/data/maps/Route116/scripts.inc
+++ b/data/maps/Route116/scripts.inc
@@ -156,7 +156,7 @@ Route116_EventScript_1F2D84:: @ 81F2D84
Route116_EventScript_1F2D95:: @ 81F2D95
lockall
applymovement 11, Route116_Movement_2725A8
- applymovement 255, Route116_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, Route116_Movement_2725A4
waitmovement 0
msgbox Route116_Text_1F309D, MSGBOX_DEFAULT
setvar VAR_0x406F, 2
diff --git a/data/maps/Route118/scripts.inc b/data/maps/Route118/scripts.inc
index 8d1cf48e4..e7aac8ac8 100644
--- a/data/maps/Route118/scripts.inc
+++ b/data/maps/Route118/scripts.inc
@@ -70,7 +70,7 @@ Route118_EventScript_1F3E85:: @ 81F3E85
Route118_EventScript_1F3E8E:: @ 81F3E8E
lockall
setvar VAR_0x8008, 0
- applymovement 255, Route118_Movement_2725B2
+ applymovement EVENT_OBJ_ID_PLAYER, Route118_Movement_2725B2
waitmovement 0
applymovement 19, Route118_Movement_1F3F61
waitmovement 0
@@ -80,7 +80,7 @@ Route118_EventScript_1F3E8E:: @ 81F3E8E
Route118_EventScript_1F3EAE:: @ 81F3EAE
lockall
setvar VAR_0x8008, 1
- applymovement 255, Route118_Movement_2725B2
+ applymovement EVENT_OBJ_ID_PLAYER, Route118_Movement_2725B2
waitmovement 0
goto Route118_EventScript_1F3EE4
end
@@ -88,7 +88,7 @@ Route118_EventScript_1F3EAE:: @ 81F3EAE
Route118_EventScript_1F3EC4:: @ 81F3EC4
lockall
setvar VAR_0x8008, 2
- applymovement 255, Route118_Movement_2725B2
+ applymovement EVENT_OBJ_ID_PLAYER, Route118_Movement_2725B2
waitmovement 0
applymovement 19, Route118_Movement_1F3F63
waitmovement 0
@@ -114,19 +114,19 @@ Route118_EventScript_1F3EE4:: @ 81F3EE4
end
Route118_EventScript_1F3F28:: @ 81F3F28
- applymovement 255, Route118_Movement_1F3F5E
+ applymovement EVENT_OBJ_ID_PLAYER, Route118_Movement_1F3F5E
applymovement 19, Route118_Movement_1F3F69
waitmovement 0
return
Route118_EventScript_1F3F3A:: @ 81F3F3A
- applymovement 255, Route118_Movement_1F3F5E
+ applymovement EVENT_OBJ_ID_PLAYER, Route118_Movement_1F3F5E
applymovement 19, Route118_Movement_1F3F74
waitmovement 0
return
Route118_EventScript_1F3F4C:: @ 81F3F4C
- applymovement 255, Route118_Movement_1F3F5E
+ applymovement EVENT_OBJ_ID_PLAYER, Route118_Movement_1F3F5E
applymovement 19, Route118_Movement_1F3F7E
waitmovement 0
return
diff --git a/data/maps/Route119/scripts.inc b/data/maps/Route119/scripts.inc
index fd1d127d1..544330f9a 100644
--- a/data/maps/Route119/scripts.inc
+++ b/data/maps/Route119/scripts.inc
@@ -52,7 +52,7 @@ Route119_EventScript_1F4488:: @ 81F4488
call_if 1, Route119_EventScript_1F46C6
compare VAR_TEMP_1, 2
call_if 1, Route119_EventScript_1F46D1
- applymovement 255, Route119_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, Route119_Movement_2725AA
waitmovement 0
delay 30
compare VAR_TEMP_1, 1
@@ -208,13 +208,13 @@ Route119_EventScript_1F46D1:: @ 81F46D1
return
Route119_EventScript_1F46DC:: @ 81F46DC
- applymovement 255, Route119_Movement_1F471E
+ applymovement EVENT_OBJ_ID_PLAYER, Route119_Movement_1F471E
applymovement 25, Route119_Movement_1F473D
waitmovement 0
return
Route119_EventScript_1F46EE:: @ 81F46EE
- applymovement 255, Route119_Movement_1F4723
+ applymovement EVENT_OBJ_ID_PLAYER, Route119_Movement_1F4723
applymovement 25, Route119_Movement_1F4747
waitmovement 0
return
diff --git a/data/maps/Route119_WeatherInstitute_2F/scripts.inc b/data/maps/Route119_WeatherInstitute_2F/scripts.inc
index 35dd538df..1feda2f60 100644
--- a/data/maps/Route119_WeatherInstitute_2F/scripts.inc
+++ b/data/maps/Route119_WeatherInstitute_2F/scripts.inc
@@ -51,7 +51,7 @@ Route119_WeatherInstitute_2F_EventScript_26FFC8:: @ 826FFC8
closemessage
addobject 7
applymovement 7, Route119_WeatherInstitute_2F_Movement_270170
- applymovement 255, Route119_WeatherInstitute_2F_Movement_27017C
+ applymovement EVENT_OBJ_ID_PLAYER, Route119_WeatherInstitute_2F_Movement_27017C
waitmovement 0
msgbox Route119_WeatherInstitute_2F_Text_270568, MSGBOX_DEFAULT
closemessage
@@ -73,7 +73,7 @@ Route119_WeatherInstitute_2F_EventScript_26FFC8:: @ 826FFC8
removeobject 3
removeobject 8
removeobject 7
- applymovement 255, Route119_WeatherInstitute_2F_Movement_270184
+ applymovement EVENT_OBJ_ID_PLAYER, Route119_WeatherInstitute_2F_Movement_270184
waitmovement 0
fadescreen 0
applymovement 5, Route119_WeatherInstitute_2F_Movement_270187
diff --git a/data/maps/Route120/scripts.inc b/data/maps/Route120/scripts.inc
index ba16b1a2f..1eed96ece 100644
--- a/data/maps/Route120/scripts.inc
+++ b/data/maps/Route120/scripts.inc
@@ -240,7 +240,7 @@ Route120_EventScript_1F571C:: @ 81F571C
Route120_EventScript_1F572C:: @ 81F572C
applymovement 31, Route120_Movement_2725AA
- applymovement 255, Route120_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, Route120_Movement_2725A6
waitmovement 0
msgbox Route120_Text_1F5BAF, MSGBOX_DEFAULT
giveitem_std ITEM_DEVON_SCOPE
@@ -264,12 +264,12 @@ Route120_EventScript_1F572C:: @ 81F572C
end
Route120_EventScript_1F57A3:: @ 81F57A3
- applymovement 255, Route120_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, Route120_Movement_2725A4
waitmovement 0
return
Route120_EventScript_1F57AE:: @ 81F57AE
- applymovement 255, Route120_Movement_1F57B9
+ applymovement EVENT_OBJ_ID_PLAYER, Route120_Movement_1F57B9
waitmovement 0
return
diff --git a/data/maps/Route121_SafariZoneEntrance/scripts.inc b/data/maps/Route121_SafariZoneEntrance/scripts.inc
index 12fa8112e..dcc427b0d 100644
--- a/data/maps/Route121_SafariZoneEntrance/scripts.inc
+++ b/data/maps/Route121_SafariZoneEntrance/scripts.inc
@@ -8,7 +8,7 @@ Route121_SafariZoneEntrance_MapScript2_22BBC1: @ 822BBC1
Route121_SafariZoneEntrance_EventScript_22BBCB:: @ 822BBCB
lockall
- applymovement 255, Route121_SafariZoneEntrance_Movement_22BBDD
+ applymovement EVENT_OBJ_ID_PLAYER, Route121_SafariZoneEntrance_Movement_22BBDD
waitmovement 0
setvar VAR_0x40A4, 0
releaseall
@@ -46,7 +46,7 @@ Route121_SafariZoneEntrance_EventScript_22BC0E:: @ 822BC0E
Route121_SafariZoneEntrance_EventScript_22BC18:: @ 822BC18
lockall
- applymovement 255, Route121_SafariZoneEntrance_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, Route121_SafariZoneEntrance_Movement_2725A6
waitmovement 0
showmoneybox 0, 0, 0
msgbox Route121_SafariZoneEntrance_Text_2A4F74, MSGBOX_YESNO
@@ -78,7 +78,7 @@ Route121_SafariZoneEntrance_EventScript_22BC48:: @ 822BC48
hidemoneybox
nop
nop
- applymovement 255, Route121_SafariZoneEntrance_Movement_22BD18
+ applymovement EVENT_OBJ_ID_PLAYER, Route121_SafariZoneEntrance_Movement_22BD18
waitmovement 0
special EnterSafariMode
setvar VAR_0x40A4, 2
@@ -116,7 +116,7 @@ Route121_SafariZoneEntrance_EventScript_22BD06:: @ 822BD06
hidemoneybox
nop
nop
- applymovement 255, Route121_SafariZoneEntrance_Movement_22BD16
+ applymovement EVENT_OBJ_ID_PLAYER, Route121_SafariZoneEntrance_Movement_22BD16
waitmovement 0
releaseall
end
diff --git a/data/maps/Route128/scripts.inc b/data/maps/Route128/scripts.inc
index 2443051f5..b593528ab 100644
--- a/data/maps/Route128/scripts.inc
+++ b/data/maps/Route128/scripts.inc
@@ -31,12 +31,12 @@ Route128_EventScript_1F6B57:: @ 81F6B57
closemessage
applymovement 5, Route128_Movement_1F6CBB
waitmovement 0
- applymovement 255, Route128_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, Route128_Movement_2725A6
waitmovement 0
msgbox Route128_Text_1F6F1E, MSGBOX_DEFAULT
closemessage
applymovement 4, Route128_Movement_1F6C96
- applymovement 255, Route128_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, Route128_Movement_2725A4
applymovement 5, Route128_Movement_1F6CA8
waitmovement 0
msgbox Route128_Text_1F704F, MSGBOX_DEFAULT
@@ -54,12 +54,12 @@ Route128_EventScript_1F6B57:: @ 81F6B57
addobject 3
applymovement 3, Route128_Movement_1F6C87
waitmovement 0
- applymovement 255, Route128_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, Route128_Movement_2725A8
waitmovement 0
msgbox Route128_Text_1F70C9, MSGBOX_DEFAULT
closemessage
applymovement 3, Route128_Movement_1F6C85
- applymovement 255, Route128_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, Route128_Movement_2725A6
waitmovement 0
msgbox Route128_Text_1F70EA, MSGBOX_DEFAULT
applymovement 3, Route128_Movement_2725AA
diff --git a/data/maps/RustboroCity/scripts.inc b/data/maps/RustboroCity/scripts.inc
index 147c51177..26b1357a5 100644
--- a/data/maps/RustboroCity/scripts.inc
+++ b/data/maps/RustboroCity/scripts.inc
@@ -34,7 +34,7 @@ RustboroCity_MapScript2_1E070B: @ 81E070B
RustboroCity_EventScript_1E0715:: @ 81E0715
lockall
setvar VAR_0x4063, 1
- applymovement 255, RustboroCity_Movement_1E0850
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_1E0850
waitmovement 0
playse SE_KAIDAN
delay 10
@@ -46,7 +46,7 @@ RustboroCity_EventScript_1E0715:: @ 81E0715
waitmovement 0
applymovement 15, RustboroCity_Movement_27259A
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
applymovement 15, RustboroCity_Movement_1E084E
waitmovement 0
@@ -347,7 +347,7 @@ RustboroCity_EventScript_1E0A6E:: @ 81E0A6E
RustboroCity_EventScript_1E0A79:: @ 81E0A79
applymovement 9, RustboroCity_Movement_1E0AD5
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
return
@@ -511,7 +511,7 @@ RustboroCity_EventScript_1E0B6F:: @ 81E0B6F
waitmovement 0
applymovement 9, RustboroCity_Movement_27259A
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725AA
waitmovement 0
return
@@ -523,7 +523,7 @@ RustboroCity_EventScript_1E0B9B:: @ 81E0B9B
waitmovement 0
applymovement 9, RustboroCity_Movement_27259A
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725AC
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725AC
waitmovement 0
return
@@ -535,7 +535,7 @@ RustboroCity_EventScript_1E0BC7:: @ 81E0BC7
waitmovement 0
applymovement 9, RustboroCity_Movement_27259A
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
return
@@ -549,7 +549,7 @@ RustboroCity_EventScript_1E0BF3:: @ 81E0BF3
waitmovement 0
applymovement 9, RustboroCity_Movement_1E0C29
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
return
@@ -619,7 +619,7 @@ RustboroCity_EventScript_1E0CDC:: @ 81E0CDC
waitmovement 0
applymovement 9, RustboroCity_Movement_27259A
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725AA
waitmovement 0
return
@@ -631,7 +631,7 @@ RustboroCity_EventScript_1E0D08:: @ 81E0D08
waitmovement 0
applymovement 9, RustboroCity_Movement_27259A
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725AE
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725AE
waitmovement 0
return
@@ -643,7 +643,7 @@ RustboroCity_EventScript_1E0D34:: @ 81E0D34
waitmovement 0
applymovement 9, RustboroCity_Movement_27259A
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
return
@@ -657,7 +657,7 @@ RustboroCity_EventScript_1E0D60:: @ 81E0D60
waitmovement 0
applymovement 9, RustboroCity_Movement_1E0C29
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
return
@@ -708,7 +708,7 @@ RustboroCity_EventScript_1E0DF3:: @ 81E0DF3
waitmovement 0
applymovement 14, RustboroCity_Movement_1E120E
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
goto RustboroCity_EventScript_1E0FF3
@@ -724,7 +724,7 @@ RustboroCity_EventScript_1E0E33:: @ 81E0E33
waitmovement 0
applymovement 14, RustboroCity_Movement_1E1215
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
goto RustboroCity_EventScript_1E0FF3
@@ -740,7 +740,7 @@ RustboroCity_EventScript_1E0E73:: @ 81E0E73
waitmovement 0
applymovement 14, RustboroCity_Movement_1E121B
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
goto RustboroCity_EventScript_1E0FF3
@@ -756,7 +756,7 @@ RustboroCity_EventScript_1E0EB3:: @ 81E0EB3
waitmovement 0
applymovement 14, RustboroCity_Movement_1E1220
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
goto RustboroCity_EventScript_1E0FF3
@@ -772,7 +772,7 @@ RustboroCity_EventScript_1E0EF3:: @ 81E0EF3
waitmovement 0
applymovement 14, RustboroCity_Movement_1E1224
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
goto RustboroCity_EventScript_1E0FF3
@@ -788,7 +788,7 @@ RustboroCity_EventScript_1E0F33:: @ 81E0F33
waitmovement 0
applymovement 14, RustboroCity_Movement_1E1227
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
goto RustboroCity_EventScript_1E0FF3
@@ -804,7 +804,7 @@ RustboroCity_EventScript_1E0F73:: @ 81E0F73
waitmovement 0
applymovement 14, RustboroCity_Movement_1E122B
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
goto RustboroCity_EventScript_1E0FF3
@@ -820,7 +820,7 @@ RustboroCity_EventScript_1E0FB3:: @ 81E0FB3
waitmovement 0
applymovement 14, RustboroCity_Movement_1E1230
waitmovement 0
- applymovement 255, RustboroCity_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_Movement_2725A6
waitmovement 0
goto RustboroCity_EventScript_1E0FF3
diff --git a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc
index dc170677a..ce5a555ef 100644
--- a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc
+++ b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc
@@ -39,13 +39,13 @@ RustboroCity_DevonCorp_3F_EventScript_21246E:: @ 821246E
closemessage
playbgm MUS_TSURETEK, 0
applymovement 2, RustboroCity_DevonCorp_3F_Movement_212534
- applymovement 255, RustboroCity_DevonCorp_3F_Movement_212558
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_DevonCorp_3F_Movement_212558
waitmovement 0
msgbox RustboroCity_DevonCorp_3F_Text_212E2F, MSGBOX_DEFAULT
closemessage
fadedefaultbgm
applymovement 2, RustboroCity_DevonCorp_3F_Movement_212543
- applymovement 255, RustboroCity_DevonCorp_3F_Movement_212566
+ applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_DevonCorp_3F_Movement_212566
waitmovement 0
msgbox RustboroCity_DevonCorp_3F_Text_212609, MSGBOX_DEFAULT
giveitem_std ITEM_LETTER
diff --git a/data/maps/RusturfTunnel/scripts.inc b/data/maps/RusturfTunnel/scripts.inc
index 1eaaba66c..48dcaffc9 100644
--- a/data/maps/RusturfTunnel/scripts.inc
+++ b/data/maps/RusturfTunnel/scripts.inc
@@ -86,13 +86,13 @@ RusturfTunnel_EventScript_22CEAE:: @ 822CEAE
end
RusturfTunnel_EventScript_22CF5D:: @ 822CF5D
- applymovement 255, RusturfTunnel_Movement_22D042
+ applymovement EVENT_OBJ_ID_PLAYER, RusturfTunnel_Movement_22D042
applymovement 1, RusturfTunnel_Movement_22D067
waitmovement 0
return
RusturfTunnel_EventScript_22CF6F:: @ 822CF6F
- applymovement 255, RusturfTunnel_Movement_22D045
+ applymovement EVENT_OBJ_ID_PLAYER, RusturfTunnel_Movement_22D045
applymovement 1, RusturfTunnel_Movement_22D06C
waitmovement 0
applymovement 10, RusturfTunnel_Movement_2725AA
@@ -100,7 +100,7 @@ RusturfTunnel_EventScript_22CF6F:: @ 822CF6F
return
RusturfTunnel_EventScript_22CF8B:: @ 822CF8B
- applymovement 255, RusturfTunnel_Movement_22D045
+ applymovement EVENT_OBJ_ID_PLAYER, RusturfTunnel_Movement_22D045
applymovement 1, RusturfTunnel_Movement_22D06C
waitmovement 0
applymovement 10, RusturfTunnel_Movement_2725AA
@@ -110,7 +110,7 @@ RusturfTunnel_EventScript_22CF8B:: @ 822CF8B
RusturfTunnel_EventScript_22CFA7:: @ 822CFA7
applymovement 1, RusturfTunnel_Movement_2725A6
waitmovement 0
- applymovement 255, RusturfTunnel_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, RusturfTunnel_Movement_2725AA
waitmovement 0
return
@@ -135,7 +135,7 @@ RusturfTunnel_EventScript_22CFD4:: @ 822CFD4
return
RusturfTunnel_EventScript_22CFE6:: @ 822CFE6
- applymovement 255, RusturfTunnel_Movement_22D02F
+ applymovement EVENT_OBJ_ID_PLAYER, RusturfTunnel_Movement_22D02F
applymovement 10, RusturfTunnel_Movement_22D023
applymovement 1, RusturfTunnel_Movement_22D058
waitmovement 0
@@ -317,7 +317,7 @@ RusturfTunnel_EventScript_22D0C2:: @ 822D0C2
msgbox RusturfTunnel_Text_22D2E1, MSGBOX_DEFAULT
giveitem_std ITEM_DEVON_GOODS
closemessage
- applymovement 255, RusturfTunnel_Movement_22D178
+ applymovement EVENT_OBJ_ID_PLAYER, RusturfTunnel_Movement_22D178
applymovement 6, RusturfTunnel_Movement_22D181
waitmovement 0
removeobject 6
@@ -325,7 +325,7 @@ RusturfTunnel_EventScript_22D0C2:: @ 822D0C2
addobject 5
applymovement 5, RusturfTunnel_Movement_22D18B
waitmovement 0
- applymovement 255, RusturfTunnel_Movement_22D17E
+ applymovement EVENT_OBJ_ID_PLAYER, RusturfTunnel_Movement_22D17E
applymovement 5, RusturfTunnel_Movement_22D1A4
waitmovement 0
msgbox RusturfTunnel_Text_22D395, MSGBOX_DEFAULT
@@ -338,7 +338,7 @@ RusturfTunnel_EventScript_22D0C2:: @ 822D0C2
waitbuttonpress
waitmoncry
closemessage
- applymovement 255, RusturfTunnel_Movement_22D19F
+ applymovement EVENT_OBJ_ID_PLAYER, RusturfTunnel_Movement_22D19F
applymovement 5, RusturfTunnel_Movement_22D193
applymovement 7, RusturfTunnel_Movement_22D1A7
waitmovement 0
diff --git a/data/maps/SSTidalCorridor/scripts.inc b/data/maps/SSTidalCorridor/scripts.inc
index 15b0ba8e1..f844986c6 100644
--- a/data/maps/SSTidalCorridor/scripts.inc
+++ b/data/maps/SSTidalCorridor/scripts.inc
@@ -204,11 +204,11 @@ SSTidalCorridor_EventScript_23C219:: @ 823C219
lockall
applymovement 5, SSTidalCorridor_Movement_23C26D
waitmovement 0
- applymovement 255, SSTidalCorridor_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, SSTidalCorridor_Movement_2725A8
waitmovement 0
msgbox SSTidalCorridor_Text_23C28F, MSGBOX_DEFAULT
closemessage
- applymovement 255, SSTidalCorridor_Movement_23C27D
+ applymovement EVENT_OBJ_ID_PLAYER, SSTidalCorridor_Movement_23C27D
applymovement 1, SSTidalCorridor_Movement_23C284
applymovement 5, SSTidalCorridor_Movement_23C275
waitmovement 0
diff --git a/data/maps/SafariZone_South/scripts.inc b/data/maps/SafariZone_South/scripts.inc
index 6579b6571..8e9a20ad6 100644
--- a/data/maps/SafariZone_South/scripts.inc
+++ b/data/maps/SafariZone_South/scripts.inc
@@ -9,7 +9,7 @@ SafariZone_South_MapScript2_23D284: @ 823D284
SafariZone_South_EventScript_23D28E:: @ 823D28E
lockall
- applymovement 255, SafariZone_South_Movement_23D2C5
+ applymovement EVENT_OBJ_ID_PLAYER, SafariZone_South_Movement_23D2C5
waitmovement 0
applymovement 1, SafariZone_South_Movement_23D2C7
waitmovement 0
@@ -77,7 +77,7 @@ SafariZone_South_EventScript_23D31A:: @ 823D31A
SafariZone_South_EventScript_23D33F:: @ 823D33F
applymovement 1, SafariZone_South_Movement_23D38A
waitmovement 0
- applymovement 255, SafariZone_South_Movement_23D385
+ applymovement EVENT_OBJ_ID_PLAYER, SafariZone_South_Movement_23D385
waitmovement 0
goto SafariZone_South_EventScript_23D373
end
@@ -85,7 +85,7 @@ SafariZone_South_EventScript_23D33F:: @ 823D33F
SafariZone_South_EventScript_23D359:: @ 823D359
applymovement 1, SafariZone_South_Movement_23D38D
waitmovement 0
- applymovement 255, SafariZone_South_Movement_23D387
+ applymovement EVENT_OBJ_ID_PLAYER, SafariZone_South_Movement_23D387
waitmovement 0
goto SafariZone_South_EventScript_23D373
end
diff --git a/data/maps/SeafloorCavern_Room9/scripts.inc b/data/maps/SeafloorCavern_Room9/scripts.inc
index 9406fcb6c..951f967a3 100644
--- a/data/maps/SeafloorCavern_Room9/scripts.inc
+++ b/data/maps/SeafloorCavern_Room9/scripts.inc
@@ -7,15 +7,15 @@ SeafloorCavern_Room9_EventScript_234DC9:: @ 8234DC9
setvar VAR_0x8005, 3
setvar VAR_0x8006, 4
setvar VAR_0x8007, 5
- applymovement 255, SeafloorCavern_Room9_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, SeafloorCavern_Room9_Movement_2725A6
waitmovement 0
- applymovement 255, SeafloorCavern_Room9_Movement_23505C
+ applymovement EVENT_OBJ_ID_PLAYER, SeafloorCavern_Room9_Movement_23505C
waitmovement 0
playbgm MUS_AQA_0, 0
msgbox SeafloorCavern_Room9_Text_23505F, MSGBOX_DEFAULT
closemessage
addobject VAR_0x8004
- applymovement 255, SeafloorCavern_Room9_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, SeafloorCavern_Room9_Movement_2725A4
waitmovement 0
applymovement VAR_0x8004, SeafloorCavern_Room9_Movement_23502A
waitmovement 0
@@ -48,7 +48,7 @@ SeafloorCavern_Room9_EventScript_234DC9:: @ 8234DC9
playse SE_TAMA
special sub_80B0534
applymovement VAR_0x8004, SeafloorCavern_Room9_Movement_2725A6
- applymovement 255, SeafloorCavern_Room9_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, SeafloorCavern_Room9_Movement_2725A6
waitmovement 0
delay 150
removeobject 7
@@ -82,7 +82,7 @@ SeafloorCavern_Room9_EventScript_234DC9:: @ 8234DC9
setvar VAR_0x8007, 5
msgbox SeafloorCavern_Room9_Text_2352A7, MSGBOX_DEFAULT
playse SE_PC_LOGIN
- applymovement 255, SeafloorCavern_Room9_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, SeafloorCavern_Room9_Movement_2725A4
waitmovement 0
msgbox SeafloorCavern_Room9_Text_2352F6, MSGBOX_DEFAULT
closemessage
diff --git a/data/maps/SkyPillar_Outside/scripts.inc b/data/maps/SkyPillar_Outside/scripts.inc
index 1b2a1e4c9..95f229bcf 100644
--- a/data/maps/SkyPillar_Outside/scripts.inc
+++ b/data/maps/SkyPillar_Outside/scripts.inc
@@ -38,7 +38,7 @@ SkyPillar_Outside_EventScript_239304:: @ 8239304
lockall
applymovement 1, SkyPillar_Outside_Movement_2393D3
waitmovement 0
- applymovement 255, SkyPillar_Outside_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, SkyPillar_Outside_Movement_2725A4
waitmovement 0
msgbox SkyPillar_Outside_Text_239416, MSGBOX_DEFAULT
closemessage
@@ -52,7 +52,7 @@ SkyPillar_Outside_EventScript_239304:: @ 8239304
delay 40
msgbox SkyPillar_Outside_Text_2394BC, MSGBOX_DEFAULT
closemessage
- applymovement 255, SkyPillar_Outside_Movement_2393EB
+ applymovement EVENT_OBJ_ID_PLAYER, SkyPillar_Outside_Movement_2393EB
applymovement 1, SkyPillar_Outside_Movement_2393DE
waitmovement 0
setvar VAR_0x8004, 1
diff --git a/data/maps/SkyPillar_Top/scripts.inc b/data/maps/SkyPillar_Top/scripts.inc
index ef0419cdb..2b734e5b0 100644
--- a/data/maps/SkyPillar_Top/scripts.inc
+++ b/data/maps/SkyPillar_Top/scripts.inc
@@ -96,12 +96,12 @@ SkyPillar_Top_EventScript_239785:: @ 8239785
SkyPillar_Top_EventScript_23979A:: @ 823979A
lockall
fadeoutbgm 1
- applymovement 255, SkyPillar_Top_Movement_2725B2
+ applymovement EVENT_OBJ_ID_PLAYER, SkyPillar_Top_Movement_2725B2
waitmovement 0
- special SpawnScriptEventObject
- applymovement 127, SkyPillar_Top_Movement_239858
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, SkyPillar_Top_Movement_239858
waitmovement 0
- special RemoveScriptEventObject
+ special RemoveCameraObject
applymovement 1, SkyPillar_Top_Movement_23983A
waitmovement 0
waitse
@@ -128,10 +128,10 @@ SkyPillar_Top_EventScript_23979A:: @ 823979A
closemessage
delay 20
fadeinbgm 1
- special SpawnScriptEventObject
- applymovement 127, SkyPillar_Top_Movement_23985C
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, SkyPillar_Top_Movement_23985C
waitmovement 0
- special RemoveScriptEventObject
+ special RemoveCameraObject
setvar VAR_0x405E, 5
setvar VAR_0x40CA, 1
setvar VAR_0x40D7, 1
diff --git a/data/maps/SlateportCity/scripts.inc b/data/maps/SlateportCity/scripts.inc
index dc3a81650..f8e1dc454 100644
--- a/data/maps/SlateportCity/scripts.inc
+++ b/data/maps/SlateportCity/scripts.inc
@@ -56,7 +56,7 @@ SlateportCity_MapScript2_1DCD12: @ 81DCD12
SlateportCity_EventScript_1DCD1C:: @ 81DCD1C
lockall
addobject 35
- applymovement 255, SlateportCity_Movement_1DCDA8
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Movement_1DCDA8
applymovement 35, SlateportCity_Movement_1DCDAC
waitmovement 0
msgbox SlateportCity_Text_1DF032, MSGBOX_DEFAULT
@@ -576,7 +576,7 @@ SlateportCity_EventScript_1DD1F8:: @ 81DD1F8
waitmovement 0
delay 25
applymovement 11, SlateportCity_Movement_1DD33C
- applymovement 255, SlateportCity_Movement_1DD34A
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Movement_1DD34A
applymovement 10, SlateportCity_Movement_1DD319
applymovement 9, SlateportCity_Movement_1DD326
waitmovement 0
@@ -608,7 +608,7 @@ SlateportCity_EventScript_1DD1F8:: @ 81DD1F8
msgbox SlateportCity_Text_1DE8A0, MSGBOX_DEFAULT
closemessage
applymovement 11, SlateportCity_Movement_1DD337
- applymovement 255, SlateportCity_Movement_1DD344
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Movement_1DD344
waitmovement 0
removeobject 11
clearflag FLAG_HIDE_SLATEPORT_CITY_HARBOR_CAPTAIN_STERN
@@ -892,19 +892,19 @@ SlateportCity_EventScript_1DD5CE:: @ 81DD5CE
SlateportCity_EventScript_1DD5DC:: @ 81DD5DC
lockall
- applymovement 255, SlateportCity_Movement_2725B2
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Movement_2725B2
waitmovement 0
opendoor 10, 12
waitdooranim
addobject 35
- applymovement 255, SlateportCity_Movement_1DD630
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Movement_1DD630
applymovement 35, SlateportCity_Movement_1DD637
waitmovement 0
closedoor 10, 12
waitdooranim
msgbox SlateportCity_Text_1DF28C, MSGBOX_DEFAULT
closemessage
- applymovement 255, SlateportCity_Movement_1DD634
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Movement_1DD634
applymovement 35, SlateportCity_Movement_1DD63A
waitmovement 0
removeobject 35
diff --git a/data/maps/SlateportCity_BattleTentCorridor/scripts.inc b/data/maps/SlateportCity_BattleTentCorridor/scripts.inc
index 7eb935bf1..49a7180cb 100644
--- a/data/maps/SlateportCity_BattleTentCorridor/scripts.inc
+++ b/data/maps/SlateportCity_BattleTentCorridor/scripts.inc
@@ -27,7 +27,7 @@ SlateportCity_BattleTentCorridor_EventScript_208E65:: @ 8208E65
goto_eq SlateportCity_BattleTentCorridor_EventScript_208EEE
setvar VAR_TEMP_0, 1
applymovement 1, SlateportCity_BattleTentCorridor_Movement_209062
- applymovement 255, SlateportCity_BattleTentCorridor_Movement_209059
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_BattleTentCorridor_Movement_209059
waitmovement 0
compare VAR_0x8006, 2
goto_eq SlateportCity_BattleTentCorridor_EventScript_209044
@@ -49,7 +49,7 @@ SlateportCity_BattleTentCorridor_EventScript_208EB4:: @ 8208EB4
opendoor 2, 1
waitdooranim
applymovement 1, SlateportCity_BattleTentCorridor_Movement_209068
- applymovement 255, SlateportCity_BattleTentCorridor_Movement_20905E
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_BattleTentCorridor_Movement_20905E
waitmovement 0
closedoor 2, 1
waitdooranim
diff --git a/data/maps/SlateportCity_BattleTentLobby/scripts.inc b/data/maps/SlateportCity_BattleTentLobby/scripts.inc
index 8e5c81e12..84349a97f 100644
--- a/data/maps/SlateportCity_BattleTentLobby/scripts.inc
+++ b/data/maps/SlateportCity_BattleTentLobby/scripts.inc
@@ -182,12 +182,12 @@ SlateportCity_BattleTentLobby_EventScript_2089AC:: @ 82089AC
SlateportCity_BattleTentLobby_EventScript_2089C9:: @ 82089C9
applymovement 1, SlateportCity_BattleTentLobby_Movement_2089F8
- applymovement 255, SlateportCity_BattleTentLobby_Movement_2089FF
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_BattleTentLobby_Movement_2089FF
waitmovement 0
opendoor 6, 1
waitdooranim
applymovement 1, SlateportCity_BattleTentLobby_Movement_2089FC
- applymovement 255, SlateportCity_BattleTentLobby_Movement_208A03
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_BattleTentLobby_Movement_208A03
waitmovement 0
closedoor 6, 1
waitdooranim
diff --git a/data/maps/SlateportCity_Harbor/scripts.inc b/data/maps/SlateportCity_Harbor/scripts.inc
index efc0ff565..60b78542a 100644
--- a/data/maps/SlateportCity_Harbor/scripts.inc
+++ b/data/maps/SlateportCity_Harbor/scripts.inc
@@ -43,7 +43,7 @@ SlateportCity_Harbor_EventScript_20C9D3:: @ 820C9D3
SlateportCity_Harbor_EventScript_20C9DF:: @ 820C9DF
lockall
setvar VAR_0x8008, 3
- applymovement 255, SlateportCity_Harbor_Movement_20CAEF
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Harbor_Movement_20CAEF
waitmovement 0
goto SlateportCity_Harbor_EventScript_20C9F5
end
@@ -52,7 +52,7 @@ SlateportCity_Harbor_EventScript_20C9F5:: @ 820C9F5
applymovement 7, SlateportCity_Harbor_Movement_2725AA
waitmovement 0
applymovement 6, SlateportCity_Harbor_Movement_2725AA
- applymovement 255, SlateportCity_Harbor_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Harbor_Movement_2725A6
waitmovement 0
msgbox SlateportCity_Harbor_Text_20D291, MSGBOX_DEFAULT
closemessage
@@ -86,21 +86,21 @@ SlateportCity_Harbor_EventScript_20C9F5:: @ 820C9F5
SlateportCity_Harbor_EventScript_20CA89:: @ 820CA89
applymovement 4, SlateportCity_Harbor_Movement_20CAE0
waitmovement 0
- applymovement 255, SlateportCity_Harbor_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Harbor_Movement_2725AA
waitmovement 0
return
SlateportCity_Harbor_EventScript_20CA9E:: @ 820CA9E
applymovement 4, SlateportCity_Harbor_Movement_20CAE6
waitmovement 0
- applymovement 255, SlateportCity_Harbor_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Harbor_Movement_2725A8
waitmovement 0
return
SlateportCity_Harbor_EventScript_20CAB3:: @ 820CAB3
applymovement 4, SlateportCity_Harbor_Movement_20CAEB
waitmovement 0
- applymovement 255, SlateportCity_Harbor_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Harbor_Movement_2725A8
waitmovement 0
return
@@ -249,12 +249,12 @@ SlateportCity_Harbor_EventScript_20CC2D:: @ 820CC2D
end
SlateportCity_Harbor_EventScript_20CC37:: @ 820CC37
- applymovement 255, SlateportCity_Harbor_Movement_20CC4D
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Harbor_Movement_20CC4D
waitmovement 0
return
SlateportCity_Harbor_EventScript_20CC42:: @ 820CC42
- applymovement 255, SlateportCity_Harbor_Movement_20CC50
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_Harbor_Movement_20CC50
waitmovement 0
return
diff --git a/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc
index 3c777b184..ceca80c47 100644
--- a/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc
+++ b/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc
@@ -7,14 +7,14 @@ SlateportCity_OceanicMuseum_1F_EventScript_20AD96:: @ 820AD96
SlateportCity_OceanicMuseum_1F_EventScript_20AD9F:: @ 820AD9F
lockall
- applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_2725A4
waitmovement 0
goto SlateportCity_OceanicMuseum_1F_EventScript_20ADC1
end
SlateportCity_OceanicMuseum_1F_EventScript_20ADB0:: @ 820ADB0
lockall
- applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_2725A8
waitmovement 0
goto SlateportCity_OceanicMuseum_1F_EventScript_20ADC1
end
@@ -28,7 +28,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_20ADC1:: @ 820ADC1
hidemoneybox
nop
nop
- applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_20AE4B
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_20AE4B
waitmovement 0
releaseall
end
@@ -57,7 +57,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_20AE18:: @ 820AE18
hidemoneybox
nop
nop
- applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_20AE4B
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_20AE4B
waitmovement 0
releaseall
end
@@ -178,7 +178,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_20AEF8:: @ 820AEF8
end
SlateportCity_OceanicMuseum_1F_EventScript_20AF6C:: @ 820AF6C
- applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_20AFBF
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_20AFBF
applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_20AFCE
waitmovement 0
goto SlateportCity_OceanicMuseum_1F_EventScript_20AFAA
@@ -191,7 +191,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_20AF83:: @ 820AF83
end
SlateportCity_OceanicMuseum_1F_EventScript_20AF93:: @ 820AF93
- applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_20AFC4
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_1F_Movement_20AFC4
applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_20AFC7
waitmovement 0
goto SlateportCity_OceanicMuseum_1F_EventScript_20AFAA
diff --git a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc
index 040a76396..016b21f14 100644
--- a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc
+++ b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc
@@ -68,7 +68,7 @@ SlateportCity_OceanicMuseum_2F_EventScript_20BB00:: @ 820BB00
fadescreen 0
delay 30
setflag FLAG_HIDE_SLATEPORT_CITY_OCEANIC_MUSEUM_AQUA_GRUNTS
- applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_2F_Movement_2725A8
waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_20C2BE, MSGBOX_DEFAULT
setvar VAR_0x8004, 269
@@ -96,7 +96,7 @@ SlateportCity_OceanicMuseum_2F_EventScript_20BC8C:: @ 820BC8C
return
SlateportCity_OceanicMuseum_2F_EventScript_20BC92:: @ 820BC92
- applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_2F_Movement_2725A4
waitmovement 0
return
@@ -106,12 +106,12 @@ SlateportCity_OceanicMuseum_2F_EventScript_20BC9D:: @ 820BC9D
return
SlateportCity_OceanicMuseum_2F_EventScript_20BCA8:: @ 820BCA8
- applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_20BCBE
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_2F_Movement_20BCBE
waitmovement 0
return
SlateportCity_OceanicMuseum_2F_EventScript_20BCB3:: @ 820BCB3
- applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_20BCC2
+ applymovement EVENT_OBJ_ID_PLAYER, SlateportCity_OceanicMuseum_2F_Movement_20BCC2
waitmovement 0
return
diff --git a/data/maps/SootopolisCity/scripts.inc b/data/maps/SootopolisCity/scripts.inc
index de6ca59db..1b16ba339 100644
--- a/data/maps/SootopolisCity/scripts.inc
+++ b/data/maps/SootopolisCity/scripts.inc
@@ -212,10 +212,10 @@ SootopolisCity_EventScript_1E5926:: @ 81E5926
SootopolisCity_EventScript_1E5946:: @ 81E5946
delay 60
- special SpawnScriptEventObject
- applymovement 127, SootopolisCity_Movement_1E5A68
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, SootopolisCity_Movement_1E5A68
waitmovement 0
- special RemoveScriptEventObject
+ special RemoveCameraObject
delay 60
fadescreenspeed 1, 8
setweather 15
@@ -269,12 +269,12 @@ SootopolisCity_EventScript_1E5946:: @ 81E5946
applymovement 10, SootopolisCity_Movement_1E5BCF
applymovement 9, SootopolisCity_Movement_1E5BF0
waitmovement 0
- special SpawnScriptEventObject
+ special SpawnCameraObject
applymovement 10, SootopolisCity_Movement_1E5BD6
applymovement 9, SootopolisCity_Movement_1E5BF7
- applymovement 127, SootopolisCity_Movement_1E5A75
+ applymovement EVENT_OBJ_ID_CAMERA, SootopolisCity_Movement_1E5A75
waitmovement 0
- special RemoveScriptEventObject
+ special RemoveCameraObject
setvar VAR_0x405E, 2
clearflag FLAG_SPECIAL_FLAG_0x4000
releaseall
@@ -312,10 +312,10 @@ SootopolisCity_Movement_1E5A75: @ 81E5A75
SootopolisCity_EventScript_1E5A82:: @ 81E5A82
delay 60
- special SpawnScriptEventObject
- applymovement 127, SootopolisCity_Movement_1E5BA4
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, SootopolisCity_Movement_1E5BA4
waitmovement 0
- special RemoveScriptEventObject
+ special RemoveCameraObject
delay 60
fadescreenspeed 1, 8
setweather 15
@@ -369,12 +369,12 @@ SootopolisCity_EventScript_1E5A82:: @ 81E5A82
applymovement 10, SootopolisCity_Movement_1E5BCF
applymovement 9, SootopolisCity_Movement_1E5BF0
waitmovement 0
- special SpawnScriptEventObject
+ special SpawnCameraObject
applymovement 10, SootopolisCity_Movement_1E5BD6
applymovement 9, SootopolisCity_Movement_1E5BF7
- applymovement 127, SootopolisCity_Movement_1E5BAE
+ applymovement EVENT_OBJ_ID_CAMERA, SootopolisCity_Movement_1E5BAE
waitmovement 0
- special RemoveScriptEventObject
+ special RemoveCameraObject
setvar VAR_0x405E, 2
clearflag FLAG_SPECIAL_FLAG_0x4000
releaseall
@@ -502,10 +502,10 @@ SootopolisCity_EventScript_1E5BFE:: @ 81E5BFE
SootopolisCity_EventScript_1E5C1E:: @ 81E5C1E
delay 60
- special SpawnScriptEventObject
- applymovement 127, SootopolisCity_Movement_1E5A68
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, SootopolisCity_Movement_1E5A68
waitmovement 0
- special RemoveScriptEventObject
+ special RemoveCameraObject
delay 60
fadescreenspeed 1, 8
call SootopolisCity_EventScript_1E5D82
@@ -516,8 +516,8 @@ SootopolisCity_EventScript_1E5C1E:: @ 81E5C1E
special sub_813B7D8
waitstate
playse SE_T_KAMI
- special SpawnScriptEventObject
- applymovement 127, SootopolisCity_Movement_1E5E63
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, SootopolisCity_Movement_1E5E63
waitmovement 0
waitse
playmoncry SPECIES_RAYQUAZA, 2
@@ -555,10 +555,10 @@ SootopolisCity_EventScript_1E5C1E:: @ 81E5C1E
SootopolisCity_EventScript_1E5CCE:: @ 81E5CCE
delay 60
- special SpawnScriptEventObject
- applymovement 127, SootopolisCity_Movement_1E5BA4
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, SootopolisCity_Movement_1E5BA4
waitmovement 0
- special RemoveScriptEventObject
+ special RemoveCameraObject
delay 60
fadescreenspeed 1, 8
call SootopolisCity_EventScript_1E5D82
@@ -568,9 +568,9 @@ SootopolisCity_EventScript_1E5CCE:: @ 81E5CCE
setvar VAR_0x8004, 1
special sub_813B7D8
waitstate
- special SpawnScriptEventObject
- applymovement 127, SootopolisCity_Movement_1E5E63
- applymovement 255, SootopolisCity_Movement_1E5E68
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, SootopolisCity_Movement_1E5E63
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_Movement_1E5E68
waitmovement 0
waitse
playmoncry SPECIES_RAYQUAZA, 2
@@ -974,18 +974,18 @@ SootopolisCity_EventScript_1E61CC:: @ 81E61CC
msgbox SootopolisCity_Text_1E7737, MSGBOX_DEFAULT
closemessage
applymovement 7, SootopolisCity_Movement_1E62D4
- applymovement 255, SootopolisCity_Movement_1E630E
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_Movement_1E630E
waitmovement 0
delay 120
applymovement 1, SootopolisCity_Movement_1E6341
waitmovement 0
applymovement 7, SootopolisCity_Movement_1E6344
- applymovement 255, SootopolisCity_Movement_1E634F
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_Movement_1E634F
waitmovement 0
msgbox SootopolisCity_Text_1E77F0, MSGBOX_DEFAULT
closemessage
setflag FLAG_0x133
- applymovement 255, SootopolisCity_Movement_1E635A
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_Movement_1E635A
waitmovement 0
warp MAP_CAVE_OF_ORIGIN_ENTRANCE, 255, 9, 20
waitstate
@@ -993,13 +993,13 @@ SootopolisCity_EventScript_1E61CC:: @ 81E61CC
SootopolisCity_EventScript_1E6243:: @ 81E6243
applymovement 7, SootopolisCity_Movement_1E6267
- applymovement 255, SootopolisCity_Movement_1E628C
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_Movement_1E628C
waitmovement 0
return
SootopolisCity_EventScript_1E6255:: @ 81E6255
applymovement 7, SootopolisCity_Movement_1E6267
- applymovement 255, SootopolisCity_Movement_1E62B0
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_Movement_1E62B0
waitmovement 0
return
diff --git a/data/maps/SootopolisCity_Gym_1F/scripts.inc b/data/maps/SootopolisCity_Gym_1F/scripts.inc
index 570f936b5..844b3c8b3 100644
--- a/data/maps/SootopolisCity_Gym_1F/scripts.inc
+++ b/data/maps/SootopolisCity_Gym_1F/scripts.inc
@@ -73,7 +73,7 @@ SootopolisCity_Gym_1F_EventScript_224F15:: @ 8224F15
SootopolisCity_Gym_1F_EventScript_224F29:: @ 8224F29
lockall
delay 20
- applymovement 255, SootopolisCity_Gym_1F_Movement_224F42
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_Gym_1F_Movement_224F42
waitmovement 0
playse SE_RU_HYUU
delay 60
diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc
index a2073d3f7..fafcaa05d 100644
--- a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc
+++ b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc
@@ -32,12 +32,12 @@ SootopolisCity_MysteryEventsHouse_1F_MapScript2_22799D: @ 822799D
SootopolisCity_MysteryEventsHouse_1F_EventScript_2279B7:: @ 82279B7
lockall
- applymovement 255, SootopolisCity_MysteryEventsHouse_1F_Movement_227A1F
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_227A1F
waitmovement 0
applymovement 1, SootopolisCity_MysteryEventsHouse_1F_Movement_227A21
waitmovement 0
moveobjectoffscreen 1
- applymovement 255, SootopolisCity_MysteryEventsHouse_1F_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_2725A6
waitmovement 0
compare VAR_0x40C0, 1
call_if 1, SootopolisCity_MysteryEventsHouse_1F_EventScript_227A04
@@ -135,19 +135,19 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_227AEF:: @ 8227AEF
SootopolisCity_MysteryEventsHouse_1F_EventScript_227AFE:: @ 8227AFE
applymovement VAR_LAST_TALKED, SootopolisCity_MysteryEventsHouse_1F_Movement_227B40
- applymovement 255, SootopolisCity_MysteryEventsHouse_1F_Movement_227B34
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_227B34
waitmovement 0
return
SootopolisCity_MysteryEventsHouse_1F_EventScript_227B10:: @ 8227B10
applymovement VAR_LAST_TALKED, SootopolisCity_MysteryEventsHouse_1F_Movement_227B43
- applymovement 255, SootopolisCity_MysteryEventsHouse_1F_Movement_227B38
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_227B38
waitmovement 0
return
SootopolisCity_MysteryEventsHouse_1F_EventScript_227B22:: @ 8227B22
applymovement VAR_LAST_TALKED, SootopolisCity_MysteryEventsHouse_1F_Movement_227B40
- applymovement 255, SootopolisCity_MysteryEventsHouse_1F_Movement_227B3C
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_MysteryEventsHouse_1F_Movement_227B3C
waitmovement 0
return
diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc b/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc
index 9a6b4b1b3..452f2e15c 100644
--- a/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc
+++ b/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc
@@ -13,7 +13,7 @@ SootopolisCity_MysteryEventsHouse_B1F_MapScript2_227E5E: @ 8227E5E
SootopolisCity_MysteryEventsHouse_B1F_EventScript_227E68:: @ 8227E68
lockall
- applymovement 255, SootopolisCity_MysteryEventsHouse_B1F_Movement_227EF3
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_MysteryEventsHouse_B1F_Movement_227EF3
waitmovement 0
special CopyEReaderTrainerGreeting
msgbox gStringVar4, MSGBOX_DEFAULT
@@ -30,7 +30,7 @@ SootopolisCity_MysteryEventsHouse_B1F_EventScript_227E68:: @ 8227E68
call_if 1, SootopolisCity_MysteryEventsHouse_B1F_EventScript_227EE8
closemessage
special HealPlayerParty
- applymovement 255, SootopolisCity_MysteryEventsHouse_B1F_Movement_227EF9
+ applymovement EVENT_OBJ_ID_PLAYER, SootopolisCity_MysteryEventsHouse_B1F_Movement_227EF9
waitmovement 0
special LoadPlayerParty
setvar VAR_TEMP_1, 1
diff --git a/data/maps/SouthernIsland_Exterior/scripts.inc b/data/maps/SouthernIsland_Exterior/scripts.inc
index 12d27a61f..d041c3ea3 100644
--- a/data/maps/SouthernIsland_Exterior/scripts.inc
+++ b/data/maps/SouthernIsland_Exterior/scripts.inc
@@ -31,12 +31,12 @@ SouthernIsland_Exterior_EventScript_242A17:: @ 8242A17
end
BattleFrontier_OutsideWest_EventScript_242A21:: @ 8242A21
- applymovement 255, BattleFrontier_OutsideWest_Movement_242A37
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_OutsideWest_Movement_242A37
waitmovement 0
return
BattleFrontier_OutsideWest_EventScript_242A2C:: @ 8242A2C
- applymovement 255, BattleFrontier_OutsideWest_Movement_242A39
+ applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_OutsideWest_Movement_242A39
waitmovement 0
return
diff --git a/data/maps/SouthernIsland_Interior/scripts.inc b/data/maps/SouthernIsland_Interior/scripts.inc
index b21fdecab..ff1425196 100644
--- a/data/maps/SouthernIsland_Interior/scripts.inc
+++ b/data/maps/SouthernIsland_Interior/scripts.inc
@@ -66,8 +66,8 @@ SouthernIsland_Interior_EventScript_242AD0:: @ 8242AD0
goto_if 0, SouthernIsland_Interior_EventScript_242B9A
setflag FLAG_0x0CE
setflag FLAG_TEMP_2
- special SpawnScriptEventObject
- applymovement 127, SouthernIsland_Interior_Movement_242BCA
+ special SpawnCameraObject
+ applymovement EVENT_OBJ_ID_CAMERA, SouthernIsland_Interior_Movement_242BCA
waitmovement 0
delay 50
waitse
@@ -76,11 +76,11 @@ SouthernIsland_Interior_EventScript_242AD0:: @ 8242AD0
waitmoncry
addobject 2
delay 30
- applymovement 127, SouthernIsland_Interior_Movement_242BCE
+ applymovement EVENT_OBJ_ID_CAMERA, SouthernIsland_Interior_Movement_242BCE
applymovement 2, SouthernIsland_Interior_Movement_242BDA
waitmovement 0
delay 50
- special RemoveScriptEventObject
+ special RemoveCameraObject
setvar VAR_LAST_TALKED, 2
compare VAR_0x40D5, 0
call_if 1, SouthernIsland_Interior_EventScript_242BA4
diff --git a/data/maps/TerraCave_End/scripts.inc b/data/maps/TerraCave_End/scripts.inc
index b23cc23f1..4e5580719 100644
--- a/data/maps/TerraCave_End/scripts.inc
+++ b/data/maps/TerraCave_End/scripts.inc
@@ -27,7 +27,7 @@ TerraCave_End_EventScript_23B0E3:: @ 823B0E3
TerraCave_End_EventScript_23B0EC:: @ 823B0EC
lockall
- applymovement 255, TerraCave_End_Movement_2725B2
+ applymovement EVENT_OBJ_ID_PLAYER, TerraCave_End_Movement_2725B2
waitmovement 0
applymovement 1, TerraCave_End_Movement_23B16E
waitmovement 0
diff --git a/data/maps/TrainerHill_Elevator/scripts.inc b/data/maps/TrainerHill_Elevator/scripts.inc
index e9117efe2..c4e3afbdb 100644
--- a/data/maps/TrainerHill_Elevator/scripts.inc
+++ b/data/maps/TrainerHill_Elevator/scripts.inc
@@ -10,7 +10,7 @@ TrainerHill_Elevator_EventScript_26935F:: @ 826935F
end
TrainerHill_Elevator_EventScript_269360:: @ 8269360
- applymovement 255, TrainerHill_Elevator_Movement_2693EB
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Elevator_Movement_2693EB
waitmovement 0
releaseall
warp MAP_TRAINER_HILL_ROOF, 255, 15, 5
@@ -18,7 +18,7 @@ TrainerHill_Elevator_EventScript_269360:: @ 8269360
end
TrainerHill_Elevator_EventScript_269375:: @ 8269375
- applymovement 255, TrainerHill_Elevator_Movement_2693E4
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Elevator_Movement_2693E4
waitmovement 0
applymovement 1, TrainerHill_Elevator_Movement_2693EE
waitmovement 0
@@ -29,11 +29,11 @@ TrainerHill_Elevator_EventScript_269375:: @ 8269375
releaseall
applymovement 1, TrainerHill_Elevator_Movement_2693F0
waitmovement 0
- applymovement 255, TrainerHill_Elevator_Movement_2693DF
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Elevator_Movement_2693DF
waitmovement 0
call TrainerHill_Elevator_EventScript_2693D9
delay 25
- applymovement 255, TrainerHill_Elevator_Movement_2693E7
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Elevator_Movement_2693E7
waitmovement 0
warp MAP_TRAINER_HILL_ENTRANCE, 255, 17, 8
waitstate
diff --git a/data/maps/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc
index c75c22be2..d86caad9c 100644
--- a/data/maps/TrainerHill_Entrance/scripts.inc
+++ b/data/maps/TrainerHill_Entrance/scripts.inc
@@ -23,7 +23,7 @@ TrainerHill_Entrance_MapScript1_2680D0: @ 82680D0
compare VAR_RESULT, 0
goto_eq TrainerHill_Entrance_EventScript_2680FF
setobjectxy 255, 9, 6
- applymovement 255, TrainerHill_Entrance_Movement_26837F
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_26837F
end
TrainerHill_Entrance_EventScript_2680FF:: @ 82680FF
@@ -31,7 +31,7 @@ TrainerHill_Entrance_EventScript_2680FF:: @ 82680FF
special sp194_trainer_tower
compare VAR_RESULT, 1
goto_eq TrainerHill_Entrance_EventScript_26811A
- applymovement 255, TrainerHill_Entrance_Movement_26837F
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_26837F
end
TrainerHill_Entrance_EventScript_26811A:: @ 826811A
@@ -62,7 +62,7 @@ TrainerHill_Entrance_MapScript2_26813E: @ 826813E
TrainerHill_Entrance_EventScript_268160:: @ 8268160
lockall
- applymovement 255, TrainerHill_Entrance_Movement_268385
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_268385
waitmovement 0
setmetatile 17, 10, 820, 1
special DrawWholeMapView
@@ -83,18 +83,18 @@ TrainerHill_Entrance_EventScript_268182:: @ 8268182
TrainerHill_Entrance_EventScript_2681B5:: @ 82681B5
lockall
- applymovement 255, TrainerHill_Entrance_Movement_26837F
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_26837F
msgbox TrainerHill_Entrance_Text_268689, MSGBOX_DEFAULT
goto TrainerHill_Entrance_EventScript_2681DA
TrainerHill_Entrance_EventScript_2681CA:: @ 82681CA
lockall
- applymovement 255, TrainerHill_Entrance_Movement_26837F
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_26837F
msgbox TrainerHill_Entrance_Text_268712, MSGBOX_DEFAULT
TrainerHill_Entrance_EventScript_2681DA:: @ 82681DA
closemessage
- applymovement 255, TrainerHill_Entrance_Movement_268381
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_268381
waitmovement 0
setvar VAR_0x40D6, 0
special HealPlayerParty
@@ -130,7 +130,7 @@ TrainerHill_Entrance_EventScript_268227:: @ 8268227
TrainerHill_Entrance_EventScript_268229:: @ 8268229
lockall
- applymovement 255, TrainerHill_Entrance_Movement_26837F
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_26837F
checkflag FLAG_SYS_GAME_CLEAR
goto_if 0, TrainerHill_Entrance_EventScript_26836A
msgbox TrainerHill_Entrance_Text_2684C6, MSGBOX_DEFAULT
@@ -185,7 +185,7 @@ TrainerHill_Entrance_EventScript_268314:: @ 8268314
setvar VAR_TEMP_5, 0
msgbox TrainerHill_Entrance_Text_26866F, MSGBOX_DEFAULT
closemessage
- applymovement 255, TrainerHill_Entrance_Movement_268381
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_268381
waitmovement 0
releaseall
end
@@ -211,7 +211,7 @@ TrainerHill_Entrance_EventScript_26835C:: @ 826835C
TrainerHill_Entrance_EventScript_26836A:: @ 826836A
msgbox TrainerHill_Entrance_Text_268430, MSGBOX_DEFAULT
closemessage
- applymovement 255, TrainerHill_Entrance_Movement_268381
+ applymovement EVENT_OBJ_ID_PLAYER, TrainerHill_Entrance_Movement_268381
waitmovement 0
releaseall
end
diff --git a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc
index 93b7802be..5e07864e4 100644
--- a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc
+++ b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc
@@ -157,7 +157,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_20254B:: @ 820254B
hideobjectat 1, MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM
call VerdanturfTown_BattleTentBattleRoom_EventScript_202310
setvar VAR_TEMP_1, 1
- applymovement 255, VerdanturfTown_BattleTentBattleRoom_Movement_202573
+ applymovement EVENT_OBJ_ID_PLAYER, VerdanturfTown_BattleTentBattleRoom_Movement_202573
removeobject 2
end
diff --git a/data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc b/data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc
index ef577c7f1..e5d7e45e9 100644
--- a/data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc
+++ b/data/maps/VerdanturfTown_BattleTentCorridor/scripts.inc
@@ -10,12 +10,12 @@ VerdanturfTown_BattleTentCorridor_EventScript_20209A:: @ 820209A
lockall
setvar VAR_TEMP_0, 1
applymovement 1, VerdanturfTown_BattleTentCorridor_Movement_2020DE
- applymovement 255, VerdanturfTown_BattleTentCorridor_Movement_2020DE
+ applymovement EVENT_OBJ_ID_PLAYER, VerdanturfTown_BattleTentCorridor_Movement_2020DE
waitmovement 0
opendoor 2, 1
waitdooranim
applymovement 1, VerdanturfTown_BattleTentCorridor_Movement_2020E4
- applymovement 255, VerdanturfTown_BattleTentCorridor_Movement_2020E3
+ applymovement EVENT_OBJ_ID_PLAYER, VerdanturfTown_BattleTentCorridor_Movement_2020E3
waitmovement 0
closedoor 2, 1
waitdooranim
diff --git a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc
index ec7ecfb1a..81726eda9 100644
--- a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc
+++ b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc
@@ -246,12 +246,12 @@ VerdanturfTown_BattleTentLobby_EventScript_201A3F:: @ 8201A3F
VerdanturfTown_BattleTentLobby_EventScript_201A41:: @ 8201A41
applymovement 1, VerdanturfTown_BattleTentLobby_Movement_201A70
- applymovement 255, VerdanturfTown_BattleTentLobby_Movement_201A70
+ applymovement EVENT_OBJ_ID_PLAYER, VerdanturfTown_BattleTentLobby_Movement_201A70
waitmovement 0
opendoor 6, 1
waitdooranim
applymovement 1, VerdanturfTown_BattleTentLobby_Movement_201A74
- applymovement 255, VerdanturfTown_BattleTentLobby_Movement_201A77
+ applymovement EVENT_OBJ_ID_PLAYER, VerdanturfTown_BattleTentLobby_Movement_201A77
waitmovement 0
closedoor 6, 1
waitdooranim
diff --git a/data/maps/VictoryRoad_1F/scripts.inc b/data/maps/VictoryRoad_1F/scripts.inc
index 5b3dabbc9..45f6d9d78 100644
--- a/data/maps/VictoryRoad_1F/scripts.inc
+++ b/data/maps/VictoryRoad_1F/scripts.inc
@@ -38,7 +38,7 @@ VictoryRoad_1F_EventScript_235DC8:: @ 8235DC8
end
VictoryRoad_1F_EventScript_235DE1:: @ 8235DE1
- applymovement 255, VictoryRoad_1F_Movement_2725AA
+ applymovement EVENT_OBJ_ID_PLAYER, VictoryRoad_1F_Movement_2725AA
waitmovement 0
msgbox VictoryRoad_1F_Text_235EE6, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_WALLY_1, VictoryRoad_1F_Text_235FFC
diff --git a/data/party_menu.s b/data/party_menu.s
index eedcd4377..fd1bd7948 100644
--- a/data/party_menu.s
+++ b/data/party_menu.s
@@ -69,11 +69,11 @@ gUnknown_086156B8:: @ 86156B8
.align 2
gUnknown_086156C4:: @ 86156C4
- .4byte sub_81B2658, 0x0d280b18, 0x08201420, 0x08081440, 0x08182526, 0x08182535, 0x03302318, 0x1040220c
+ .4byte BlitBitmapToPartyWindow_Default1, 0x0d280b18, 0x08201420, 0x08081440, 0x08182526, 0x08182535, 0x03302318, 0x1040220c
.align 2
gUnknown_086156E4:: @ 86156E4
- .4byte sub_81B26BC, 0x0d280316, 0x08200c1e, 0x08080c3e, 0x08180c66, 0x08180c75, 0x03300a58, 0x1040044d
+ .4byte BlitBitmapToPartyWindow_Default2, 0x0d280316, 0x08200c1e, 0x08080c3e, 0x08180c66, 0x08180c75, 0x03300a58, 0x1040044d
.align 2
gUnknown_08615704:: @ 8615704
@@ -441,7 +441,7 @@ gUnknown_08615D9C:: @ 8615D9C
.4byte hm_prepare_waterfall, 0x0000000d
.4byte SetUpFieldMove_Teleport, 0x0000000d
.4byte SetUpFieldMove_Dig, 0x0000000d
- .4byte sub_80FA004, 0x0000000d
+ .4byte SetUpFieldMove_SecretPower, 0x0000000d
.4byte SetUpFieldMove_SoftBoiled, 0x00000010
.4byte SetUpFieldMove_SoftBoiled, 0x00000010
.4byte SetUpFieldMove_SweetScent, 0x0000000d
diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc
index f4208afd0..238541ee6 100644
--- a/data/scripts/berry_tree.inc
+++ b/data/scripts/berry_tree.inc
@@ -174,7 +174,7 @@ Route102_EventScript_2744C4:: @ 82744C4
message Route102_Text_274710
waitmessage
special EventObjectInteractionWaterBerryTree
- special sub_80FAFF8
+ special DoWateringBerryTreeAnim
waitstate
message Route102_Text_274723
waitmessage
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index f77017830..44116d088 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -237,7 +237,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276CB5:: @ 8276CB5
goto_eq OldaleTown_PokemonCenter_2F_EventScript_276DD5
applymovement VAR_0x8007, OldaleTown_PokemonCenter_2F_Movement_27734D
waitmovement 0
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27734F
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27734F
waitmovement 0
applymovement VAR_0x8007, OldaleTown_PokemonCenter_2F_Movement_277349
waitmovement 0
@@ -258,7 +258,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276CFF:: @ 8276CFF
setvar VAR_0x4087, 0
compare VAR_0x8007, 0
goto_eq OldaleTown_PokemonCenter_2F_EventScript_276DD5
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27735E
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27735E
waitmovement 0
applymovement VAR_0x8007, OldaleTown_PokemonCenter_2F_Movement_27734D
waitmovement 0
@@ -278,7 +278,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276D2C:: @ 8276D2C
OldaleTown_PokemonCenter_2F_EventScript_276D44:: @ 8276D44
special CloseLink
setvar VAR_0x4087, 0
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27734F
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27734F
waitmovement 0
compare VAR_0x8007, 0
goto_eq OldaleTown_PokemonCenter_2F_EventScript_276D6B
@@ -302,7 +302,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276D84:: @ 8276D84
setvar VAR_0x4087, 0
compare VAR_0x8007, 0
goto_eq OldaleTown_PokemonCenter_2F_EventScript_276DD5
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27735E
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27735E
waitmovement 0
applymovement VAR_0x8007, OldaleTown_PokemonCenter_2F_Movement_27734D
waitmovement 0
@@ -316,24 +316,24 @@ OldaleTown_PokemonCenter_2F_EventScript_276DAE:: @ 8276DAE
delay 60
message OldaleTown_PokemonCenter_2F_Text_27854C
waitmessage
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27734F
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27734F
waitmovement 0
applymovement VAR_0x8007, OldaleTown_PokemonCenter_2F_Movement_277349
waitmovement 0
return
OldaleTown_PokemonCenter_2F_EventScript_276DD5:: @ 8276DD5
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27734F
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27734F
waitmovement 0
return
OldaleTown_PokemonCenter_2F_EventScript_276DE0:: @ 8276DE0
lockall
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_2725A6
waitmovement 0
msgbox OldaleTown_PokemonCenter_2F_Text_27964A, MSGBOX_DEFAULT
closemessage
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_276E10
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_276E10
waitmovement 0
delay 30
msgbox OldaleTown_PokemonCenter_2F_Text_279718, MSGBOX_DEFAULT
@@ -462,11 +462,11 @@ OldaleTown_PokemonCenter_2F_EventScript_276FBD:: @ 8276FBD
applymovement VAR_LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_27734D
waitmovement 0
closemessage
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_277356
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_277356
waitmovement 0
opendoor 9, 1
waitdooranim
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27735A
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27735A
waitmovement 0
hideobjectat 255, MAP_PETALBURG_CITY
closedoor 9, 1
@@ -481,7 +481,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276FBD:: @ 8276FBD
end
OldaleTown_PokemonCenter_2F_EventScript_27702B:: @ 827702B
- applymovement 255, Movement_277352
+ applymovement EVENT_OBJ_ID_PLAYER, Movement_277352
waitmovement 0
return
@@ -566,11 +566,11 @@ OldaleTown_PokemonCenter_2F_EventScript_27713A:: @ 827713A
applymovement VAR_LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_27734D
waitmovement 0
closemessage
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_277356
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_277356
waitmovement 0
opendoor 9, 1
waitdooranim
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27735A
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27735A
waitmovement 0
hideobjectat 255, MAP_PETALBURG_CITY
closedoor 9, 1
@@ -641,11 +641,11 @@ OldaleTown_PokemonCenter_2F_EventScript_27724C:: @ 827724C
applymovement VAR_LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_27734D
waitmovement 0
closemessage
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_277356
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_277356
waitmovement 0
opendoor 9, 1
waitdooranim
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27735A
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27735A
waitmovement 0
hideobjectat 255, MAP_PETALBURG_CITY
closedoor 9, 1
@@ -1040,11 +1040,11 @@ OldaleTown_PokemonCenter_2F_EventScript_27759F:: @ 827759F
delay 60
applymovement VAR_LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_27734D
waitmovement 0
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_277356
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_277356
waitmovement 0
opendoor 5, 1
waitdooranim
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27735A
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27735A
waitmovement 0
hideobjectat 255, MAP_PETALBURG_CITY
closedoor 5, 1
@@ -1379,11 +1379,11 @@ OldaleTown_PokemonCenter_2F_EventScript_277B3A:: @ 8277B3A
applymovement VAR_LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_27734D
waitmovement 0
closemessage
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_277356
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_277356
waitmovement 0
opendoor 9, 1
waitdooranim
- applymovement 255, OldaleTown_PokemonCenter_2F_Movement_27735A
+ applymovement EVENT_OBJ_ID_PLAYER, OldaleTown_PokemonCenter_2F_Movement_27735A
waitmovement 0
hideobjectat 255, MAP_PETALBURG_CITY
closedoor 9, 1
@@ -1593,7 +1593,7 @@ MossdeepCity_GameCorner_1F_EventScript_277E0E:: @ 8277E0E
applymovement VAR_LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_27734D
waitmovement 0
closemessage
- applymovement 255, MossdeepCity_GameCorner_1F_Movement_277360
+ applymovement EVENT_OBJ_ID_PLAYER, MossdeepCity_GameCorner_1F_Movement_277360
waitmovement 0
hideobjectat 255, MAP_PETALBURG_CITY
release
diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc
index 81ea87871..f22468500 100644
--- a/data/scripts/players_house.inc
+++ b/data/scripts/players_house.inc
@@ -15,19 +15,19 @@ LittlerootTown_MaysHouse_1F_EventScript_292704:: @ 8292704
msgbox LittlerootTown_BrendansHouse_1F_Text_1F7A46, MSGBOX_DEFAULT
closemessage
setvar VAR_0x4092, 4
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292763
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292763
applymovement VAR_0x8004, LittlerootTown_BrendansHouse_1F_Movement_2725A6
waitmovement 0
releaseall
end
LittlerootTown_BrendansHouse_1F_EventScript_29274D:: @ 829274D
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725A8
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_292758:: @ 8292758
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725A4
waitmovement 0
return
@@ -40,7 +40,7 @@ LittlerootTown_MaysHouse_1F_EventScript_292765:: @ 8292765
msgbox LittlerootTown_BrendansHouse_1F_Text_1F7B24, MSGBOX_DEFAULT
closemessage
applymovement VAR_0x8004, LittlerootTown_BrendansHouse_1F_Movement_2725A6
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292AF0
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292AF0
waitmovement 0
releaseall
end
@@ -83,7 +83,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_2927DF:: @ 82927DF
addobject VAR_0x8008
applymovement VAR_0x8008, LittlerootTown_BrendansHouse_2F_Movement_292850
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_2725A8
waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_1F869A, MSGBOX_DEFAULT
closemessage
@@ -96,7 +96,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_29280F:: @ 829280F
addobject VAR_0x8008
applymovement VAR_0x8008, LittlerootTown_BrendansHouse_2F_Movement_29285B
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_2F_Movement_2725A4
waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_1F869A, MSGBOX_DEFAULT
closemessage
@@ -158,17 +158,17 @@ LittlerootTown_BrendansHouse_1F_EventScript_29286D:: @ 829286D
applymovement VAR_0x8005, LittlerootTown_BrendansHouse_1F_Movement_2725A8
waitmovement 0
call LittlerootTown_BrendansHouse_1F_EventScript_29294B
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292AE0
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292AE0
waitmovement 0
playbgm MUS_INTER_V, 0
msgbox LittlerootTown_BrendansHouse_1F_Text_1F7BBC, MSGBOX_DEFAULT
closemessage
applymovement VAR_0x8005, LittlerootTown_BrendansHouse_1F_Movement_2929B7
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292AE6
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292AE6
waitmovement 0
call LittlerootTown_BrendansHouse_1F_EventScript_29296C
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725A4
waitmovement 0
msgbox LittlerootTown_BrendansHouse_1F_Text_1F7BF1, MSGBOX_DEFAULT
msgbox LittlerootTown_BrendansHouse_1F_Text_1F7C35, MSGBOX_DEFAULT
@@ -183,17 +183,17 @@ LittlerootTown_MaysHouse_1F_EventScript_2928DC:: @ 82928DC
applymovement VAR_0x8005, LittlerootTown_MaysHouse_1F_Movement_2725A4
waitmovement 0
call LittlerootTown_MaysHouse_1F_EventScript_29294B
- applymovement 255, LittlerootTown_MaysHouse_1F_Movement_292AE8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_292AE8
waitmovement 0
playbgm MUS_INTER_V, 0
msgbox LittlerootTown_MaysHouse_1F_Text_1F7BBC, MSGBOX_DEFAULT
closemessage
applymovement VAR_0x8005, LittlerootTown_MaysHouse_1F_Movement_2929BA
waitmovement 0
- applymovement 255, LittlerootTown_MaysHouse_1F_Movement_292AEE
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_292AEE
waitmovement 0
call LittlerootTown_MaysHouse_1F_EventScript_29296C
- applymovement 255, LittlerootTown_MaysHouse_1F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_MaysHouse_1F_Movement_2725A8
waitmovement 0
msgbox LittlerootTown_MaysHouse_1F_Text_1F7BF1, MSGBOX_DEFAULT
msgbox LittlerootTown_MaysHouse_1F_Text_1F7C35, MSGBOX_DEFAULT
@@ -217,7 +217,7 @@ LittlerootTown_MaysHouse_1F_EventScript_29294B:: @ 829294B
LittlerootTown_BrendansHouse_1F_EventScript_29296C:: @ 829296C
LittlerootTown_MaysHouse_1F_EventScript_29296C:: @ 829296C
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725A6
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725A6
waitmovement 0
msgbox LittlerootTown_BrendansHouse_1F_Text_1F7EC6, MSGBOX_DEFAULT
fadedefaultbgm
@@ -565,38 +565,38 @@ LittlerootTown_BrendansHouse_1F_EventScript_292CC1:: @ 8292CC1
return
LittlerootTown_BrendansHouse_1F_EventScript_292CD6:: @ 8292CD6
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292DCC
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292DCC
applymovement VAR_0x800A, LittlerootTown_BrendansHouse_1F_Movement_292DCC
applymovement VAR_0x8009, LittlerootTown_BrendansHouse_1F_Movement_292DBC
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_292CEF:: @ 8292CEF
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292DCC
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292DCC
applymovement VAR_0x800A, LittlerootTown_BrendansHouse_1F_Movement_292DCC
applymovement VAR_0x8009, LittlerootTown_BrendansHouse_1F_Movement_292DC1
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_292D08:: @ 8292D08
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292DC6
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292DC6
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_292D13:: @ 8292D13
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292DD1
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292DD1
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_292D1E:: @ 8292D1E
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292DD7
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292DD7
waitmovement 0
applymovement VAR_0x800A, LittlerootTown_BrendansHouse_1F_Movement_2725A4
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_292D33:: @ 8292D33
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_292DDE
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_292DDE
waitmovement 0
applymovement VAR_0x800A, LittlerootTown_BrendansHouse_1F_Movement_2725A8
waitmovement 0
@@ -605,14 +605,14 @@ LittlerootTown_BrendansHouse_1F_EventScript_292D33:: @ 8292D33
LittlerootTown_BrendansHouse_1F_EventScript_292D48:: @ 8292D48
applymovement VAR_0x800A, LittlerootTown_BrendansHouse_1F_Movement_292999
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725A4
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_292D5D:: @ 8292D5D
applymovement VAR_0x800A, LittlerootTown_BrendansHouse_1F_Movement_29299B
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725A8
waitmovement 0
return
@@ -629,14 +629,14 @@ LittlerootTown_BrendansHouse_1F_EventScript_292D7D:: @ 8292D7D
LittlerootTown_BrendansHouse_1F_EventScript_292D88:: @ 8292D88
applymovement VAR_0x800A, LittlerootTown_BrendansHouse_1F_Movement_2929AF
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725A8
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725A8
waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_292D9D:: @ 8292D9D
applymovement VAR_0x800A, LittlerootTown_BrendansHouse_1F_Movement_2929B3
waitmovement 0
- applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_2725A4
+ applymovement EVENT_OBJ_ID_PLAYER, LittlerootTown_BrendansHouse_1F_Movement_2725A4
waitmovement 0
return
diff --git a/data/scripts/secret_base.inc b/data/scripts/secret_base.inc
index 35a2731a7..b3f567d0a 100644
--- a/data/scripts/secret_base.inc
+++ b/data/scripts/secret_base.inc
@@ -442,7 +442,7 @@ EventScript_275B5B:: @ 8275B5B
end
SecretBase_RedCave1_EventScript_275B81:: @ 8275B81
- applymovement 255, SecretBase_RedCave1_Movement_275BB4
+ applymovement EVENT_OBJ_ID_PLAYER, SecretBase_RedCave1_Movement_275BB4
waitmovement 0
setvar VAR_0x4097, 1
msgbox SecretBase_RedCave1_Text_23B759, MSGBOX_YESNO
diff --git a/data/specials.inc b/data/specials.inc
index ab8bb59ab..318d272d5 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -34,7 +34,7 @@ gSpecials:: @ 81DBA64
def_special sub_8129708
def_special sub_80E91F8
def_special sub_80EA30C
- def_special sub_80FA57C
+ def_special DoSecretBasePCTurnOffEffect
def_special sub_80E6BE8
def_special sub_80B2DA4
def_special sub_80B2E4C
@@ -105,7 +105,7 @@ gSpecials:: @ 81DBA64
def_special GiveMonArtistRibbon
def_special sub_80B3000
def_special SaveGame
- def_special sub_80FAFF8
+ def_special DoWateringBerryTreeAnim
def_special easy_chat_input_maybe
def_special sub_811EECC
def_special ScrSpecial_GetCurrentMauvilleMan
@@ -163,7 +163,7 @@ gSpecials:: @ 81DBA64
def_special GetRivalSonDaughterString
def_special SetFlagInVar
def_special CableCarWarp
- def_special sub_814FC9C
+ def_special CableCar
def_special Overworld_PlaySpecialMapMusic
def_special StartWallClock
def_special Special_ViewWallClock
@@ -286,8 +286,8 @@ gSpecials:: @ 81DBA64
def_special GameClear
def_special ShakeScreenInElevator
def_special nullsub_55
- def_special SpawnScriptEventObject
- def_special RemoveScriptEventObject
+ def_special SpawnCameraObject
+ def_special RemoveCameraObject
def_special GetPokeblockNameByMonNature
def_special GetSecretBaseNearbyMapName
def_special CheckRelicanthWailord
@@ -317,7 +317,7 @@ gSpecials:: @ 81DBA64
def_special ScriptCheckFreePokemonStorageSpace
def_special DoSealedChamberShakingEffect1
def_special sub_8139B60
- def_special sub_80FAC78
+ def_special GetShieldToyTVDecorationInfo
def_special IsPokerusInParty
def_special SetSootopolisGymCrackedIceMetatiles
def_special sub_8139560
diff --git a/graphics/unknown/unknown_85CE55C.pal b/graphics/unknown/unknown_85CE55C.pal
new file mode 100755
index 000000000..1d83a2018
--- /dev/null
+++ b/graphics/unknown/unknown_85CE55C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 0 49
+131 131 41
+156 197 32
+172 0 32
+189 0 24
+180 197 8
+156 0 8
+131 65 0
+90 0 0
+49 65 0
+32 0 8
+8 197 8
+0 0 24
+16 65 32
+32 197 32
+65 131 41
diff --git a/include/battle.h b/include/battle.h
index 9e67e8ec5..52c4ee8ae 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -599,8 +599,7 @@ struct BattleAnimationInfo
u8 field_9_x80:1;
u8 field_A;
u8 field_B;
- u8 field_C;
- u8 field_D;
+ s16 field_C;
u8 field_E;
u8 field_F;
};
@@ -624,7 +623,7 @@ struct BattleHealthboxInfo
u8 battlerBounceSpriteId;
u8 animationState;
u8 field_5;
- u8 field_6;
+ u8 matrixNum;
u8 shadowSpriteId;
u8 field_8;
u8 field_9;
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 8d73ea9b3..1c2093da9 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -9,11 +9,11 @@ enum
{
BG_ANIM_SCREEN_SIZE,
BG_ANIM_AREA_OVERFLOW_MODE,
- BG_ANIM2,
+ BG_ANIM_MOSAIC,
BG_ANIM_CHAR_BASE_BLOCK,
BG_ANIM_PRIORITY,
- BG_ANIM_5,
- BG_ANIM_6
+ BG_ANIM_PALETTES_MODE,
+ BG_ANIM_SCREEN_BASE_BLOCK,
};
struct UnknownAnimStruct2
@@ -67,77 +67,96 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
void sub_80A4720(u16 a, u16 *b, u32 c, u8 d);
void sub_80A477C(bool8);
-// battle_anim_80FE840.s
+// battle_intro.s
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
-void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, void *arg5, u16 *arg6, u16 arg7);
+void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 arg7);
void HandleIntroSlide(u8 terrainId);
-u32 GetAnimBgAttribute(u8 bgId, u8 attributeId);
+int GetAnimBgAttribute(u8 bgId, u8 attributeId);
// battle_anim_80A5C6C.s
void sub_80A6450(struct Sprite *sprite);
-void SetAverageBattlerPositions(u8 battlerId, bool8 a2, s16 *x, s16 *y);
-void move_anim_8074EE0(struct Sprite *sprite);
-void sub_80A656C(struct Sprite *sprite);
-void InitAnimSpritePos(struct Sprite *sprite, u8 a2);
-void sub_80A6980(struct Sprite *sprite, bool8 a2);
+void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y);
+void DestroySpriteAndMatrix(struct Sprite *sprite);
+void AnimTranslateLinearSimple(struct Sprite *sprite);
+void InitSpritePosToAnimAttacker(struct Sprite *sprite, u8 a2);
+void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 a2);
void StartAnimLinearTranslation(struct Sprite *sprite);
void InitAnimArcTranslation(struct Sprite *sprite);
-bool8 TranslateAnimLinear(struct Sprite *sprite);
+bool8 AnimTranslateLinear(struct Sprite *sprite);
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
void sub_80A8EE4(struct Sprite *sprite);
u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId);
void sub_80A6FD4(struct Sprite *sprite);
u16 ArcTan2Neg(s16 a, s16 b);
-void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation);
-void sub_80A67BC(struct Sprite *sprite);
+void TrySetSpriteRotScale(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation);
+void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite);
void sub_80A66DC(struct Sprite *sprite);
-void sub_80A6838(struct Sprite *sprite);
-void sub_80A67D8(struct Sprite *sprite);
-void sub_80A6864(struct Sprite *sprite, s16 a2);
+void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite);
+void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite);
+void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 a2);
s16 sub_80A861C(u8 battlerId, u8 a2);
u8 GetBattlerYCoordWithElevation(u8 battlerId);
void WaitAnimForDuration(struct Sprite *sprite);
void sub_80A7938(struct Sprite *sprite);
void InitAnimLinearTranslation(struct Sprite *sprite);
void sub_80A6F98(struct Sprite *sprite);
-u8 sub_80A8328(u8 battlerId);
-void *sub_80A8050(s16 bottom, s16 top);
-void sub_80A8048(s16 *bottom, s16 *top, const void *ptr);
+u8 GetBattlerSpriteBGPriority(u8 battlerId);
+void *LoadPointerFromVars(s16 bottom, s16 top);
+void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr);
void sub_80A8278(void);
void sub_80A6B30(struct UnknownAnimStruct2*);
void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1);
-u8 sub_80A82E4(u8 battlerId);
+u8 GetBattlerSpriteSubpriority(u8 battlerId);
bool8 TranslateAnimArc(struct Sprite *sprite);
void sub_80A6630(struct Sprite *sprite);
void sub_80A6680(struct Sprite *sprite);
-void sub_80A7344(u8 spriteId);
-void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
+void ResetSpriteRotScale(u8 spriteId);
+void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
void InitSpriteDataForLinearTranslation(struct Sprite *sprite);
-void sub_80A7270(u8 spriteId, u8 objMode);
-void sub_80A73A0(u8 spriteId);
+void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode);
+void SetBattlerSpriteYOffsetFromRotation(u8 spriteId);
u32 sub_80A75AC(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7);
u32 sub_80A76C4(u8 a1, u8 a2, u8 a3, u8 a4);
u8 sub_80A77AC(u8 a1);
-s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8);
+s16 CloneBattlerSpriteWithBlend(u8);
void obj_delete_but_dont_free_vram(struct Sprite*);
u8 sub_80A89C8(int, u8, int);
void sub_80A6D60(struct UnknownAnimStruct2*, const void*, u32);
void sub_80A6CC0(u32, const void*, u32);
void sub_80A6DAC(bool8);
-void sub_80A634C(struct Sprite *);
+void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *);
void sub_80A653C(struct Sprite *);
-void sub_80A7E6C(u8 spriteId);
+void SetBattlerSpriteYOffsetFromYScale(u8 spriteId);
void sub_80A805C(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7);
u8 sub_80A80C8(struct Task *task);
void sub_80A8EE4(struct Sprite *);
+void sub_80A67F4(struct Sprite *);
+void sub_80A6D48(u32 bgId, const void *src);
+void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite);
+bool8 AnimFastTranslateLinear(struct Sprite *sprite);
+void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite);
+void TranslateMonBGUntil(struct Sprite *sprite);
+void TranslateSpriteOverDuration(struct Sprite *sprite);
+void sub_80A77C8(struct Sprite *sprite);
+void sub_80A7000(struct Sprite *sprite);
+void TranslateSpriteInCircleOverDuration(struct Sprite *sprite);
+void SetGreyscaleOrOriginalPalette(u16 a1, bool8 a2);
+void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds);
+bool8 RunAffineAnimFromTaskData(struct Task *task);
+void sub_80A78AC(struct Sprite *sprite);
+void sub_80A6BFC(struct UnknownAnimStruct2 *unk, u8 unused);
+u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10);
+void sub_80A749C(struct Sprite *sprite);
+void sub_80A6814(u8 taskId);
+void sub_80A8610(struct Sprite *sprite);
enum
{
BATTLER_COORD_X,
BATTLER_COORD_Y,
BATTLER_COORD_X_2,
- BATTLER_COORD_3,
- BATTLER_COORD_4,
+ BATTLER_COORD_Y_PIC_OFFSET,
+ BATTLER_COORD_Y_PIC_OFFSET_DEFAULT,
};
u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId);
@@ -147,11 +166,10 @@ void sub_80A6C68(u32 arg0);
u8 GetAnimBattlerSpriteId(u8 wantedBattler);
bool8 IsDoubleBattle(void);
u8 sub_80A6D94(void);
-u8 sub_80A8364(u8 battlerId);
+u8 GetBattlerSpriteBGPriorityRank(u8 battlerId);
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
u8 GetBattlerSpriteDefault_Y(u8 battlerId);
-u8 sub_80A82E4(u8 battlerId);
u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
// battle_anim_80A9C70.s
@@ -165,13 +183,17 @@ u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
#define STAT_ANIM_MULTIPLE_MINUS2 58
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
+// ground.c
+void sub_81152DC(u8 taskId);
+
// battle_anim_8170478.s
u8 ItemIdToBallId(u16 itemId);
-u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
-u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
+u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
+u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId);
// battle_anim_utility_funcs.s
void sub_8116EB4(u8);
+void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette);
u32 UnpackSelectedBattleAnimPalettes(s16);
@@ -222,4 +244,7 @@ extern const struct OamData gUnknown_0852493C;
extern const struct OamData gUnknown_08524A5C;
extern const struct OamData gUnknown_08524A74;
+extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
+extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
+
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_interface.h b/include/battle_interface.h
index 66a7f9828..3145939d0 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -1,6 +1,8 @@
#ifndef GUARD_BATTLE_INTERFACE_H
#define GUARD_BATTLE_INTERFACE_H
+#include "battle_controllers.h"
+
enum
{
HP_CURRENT,
diff --git a/include/battle_main.h b/include/battle_main.h
index 5a61b5ef0..18bdde2f1 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -7,6 +7,20 @@ struct TrainerMoney
u8 value;
};
+struct UnknownPokemonStruct4
+{
+ /*0x00*/ u16 species;
+ /*0x02*/ u16 heldItem;
+ /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ /*0x0F*/ u8 level;
+ /*0x10*/ u16 hp;
+ /*0x12*/ u16 maxhp;
+ /*0x14*/ u32 status;
+ /*0x18*/ u32 personality;
+ /*0x1C*/ u8 gender;
+ /*0x1D*/ u8 language;
+};
+
#define TYPE_NAME_LENGTH 6
#define ABILITY_NAME_LENGTH 12
@@ -70,6 +84,8 @@ void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battlerId);
+extern struct UnknownPokemonStruct4 gUnknown_02022FF8[3];
+
extern const u8 gTypeEffectiveness[336];
extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1];
extern const struct TrainerMoney gTrainerMoneyTable[];
diff --git a/include/battle_tower.h b/include/battle_tower.h
index b6adcec0c..bd8e80fc1 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -9,7 +9,7 @@ struct RSBattleTowerRecord
/*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1];
/*0x0C*/ u8 trainerId[4];
/*0x10*/ u16 greeting[6];
- /*0x1C*/ struct UnknownPokemonStruct party[3];
+ /*0x1C*/ struct BattleTowerPokemon party[3];
/*0xA0*/ u32 checksum;
};
@@ -37,6 +37,11 @@ extern const u8 gTowerMaleFacilityClasses[30];
extern const u8 gTowerMaleTrainerGfxIds[30];
extern const u8 gTowerFemaleFacilityClasses[20];
extern const u8 gTowerFemaleTrainerGfxIds[20];
+extern const u16 gBattleFrontierHeldItems[];
+extern const struct FacilityMon gBattleFrontierMons[];
+extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
+extern const struct FacilityMon gSlateportBattleTentMons[];
+extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
extern u16 gUnknown_03006298[];
diff --git a/include/blit.h b/include/blit.h
index b6c80b497..78f67766e 100644
--- a/include/blit.h
+++ b/include/blit.h
@@ -3,15 +3,15 @@
struct Bitmap
{
- const u8 *pixels;
+ u8 *pixels;
u32 width:16;
u32 height:16;
};
-void BlitBitmapRect4BitWithoutColorKey(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height);
-void BlitBitmapRect4Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey);
+void BlitBitmapRect4BitWithoutColorKey(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height);
+void BlitBitmapRect4Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey);
void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
-void BlitBitmapRect4BitTo8Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset);
+void BlitBitmapRect4BitTo8Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset);
void FillBitmapRect8Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
#endif // GUARD_BLIT_H
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index b5ad4f072..55b14b642 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -41,4 +41,75 @@
// For 'ShowFacilityResultsWindow' function which is a part of the 'CallFrontierUtilFunc' special.
#define RESULTS_LINK_CONTEST 7
+#define F_EV_SPREAD_HP (1 << 0)
+#define F_EV_SPREAD_ATTACK (1 << 1)
+#define F_EV_SPREAD_DEFENSE (1 << 2)
+#define F_EV_SPREAD_SPEED (1 << 3)
+#define F_EV_SPREAD_SP_ATTACK (1 << 4)
+#define F_EV_SPREAD_SP_DEFENSE (1 << 5)
+
+#define BATTLE_FRONTIER_ITEM_NONE 0
+#define BATTLE_FRONTIER_ITEM_KINGS_ROCK 1
+#define BATTLE_FRONTIER_ITEM_SITRUS_BERRY 2
+#define BATTLE_FRONTIER_ITEM_ORAN_BERRY 3
+#define BATTLE_FRONTIER_ITEM_CHESTO_BERRY 4
+#define BATTLE_FRONTIER_ITEM_HARD_STONE 5
+#define BATTLE_FRONTIER_ITEM_FOCUS_BAND 6
+#define BATTLE_FRONTIER_ITEM_PERSIM_BERRY 7
+#define BATTLE_FRONTIER_ITEM_MIRACLE_SEED 8
+#define BATTLE_FRONTIER_ITEM_BERRY_JUICE 9
+#define BATTLE_FRONTIER_ITEM_MACHO_BRACE 10
+#define BATTLE_FRONTIER_ITEM_SILVER_POWDER 11
+#define BATTLE_FRONTIER_ITEM_CHERI_BERRY 12
+#define BATTLE_FRONTIER_ITEM_BLACK_GLASSES 13
+#define BATTLE_FRONTIER_ITEM_BLACK_BELT 14
+#define BATTLE_FRONTIER_ITEM_SOUL_DEW 15
+#define BATTLE_FRONTIER_ITEM_CHOICE_BAND 16
+#define BATTLE_FRONTIER_ITEM_MAGNET 17
+#define BATTLE_FRONTIER_ITEM_SILK_SCARF 18
+#define BATTLE_FRONTIER_ITEM_WHITE_HERB 19
+#define BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE 20
+#define BATTLE_FRONTIER_ITEM_DEEP_SEA_TOOTH 21
+#define BATTLE_FRONTIER_ITEM_MYSTIC_WATER 22
+#define BATTLE_FRONTIER_ITEM_SHARP_BEAK 23
+#define BATTLE_FRONTIER_ITEM_QUICK_CLAW 24
+#define BATTLE_FRONTIER_ITEM_LEFTOVERS 25
+#define BATTLE_FRONTIER_ITEM_RAWST_BERRY 26
+#define BATTLE_FRONTIER_ITEM_LIGHT_BALL 27
+#define BATTLE_FRONTIER_ITEM_POISON_BARB 28
+#define BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE 29
+#define BATTLE_FRONTIER_ITEM_ASPEAR_BERRY 30
+#define BATTLE_FRONTIER_ITEM_SPELL_TAG 31
+#define BATTLE_FRONTIER_ITEM_BRIGHT_POWDER 32
+#define BATTLE_FRONTIER_ITEM_LEPPA_BERRY 33
+#define BATTLE_FRONTIER_ITEM_SCOPE_LENS 34
+#define BATTLE_FRONTIER_ITEM_TWISTED_SPOON 35
+#define BATTLE_FRONTIER_ITEM_METAL_COAT 36
+#define BATTLE_FRONTIER_ITEM_MENTAL_HERB 37
+#define BATTLE_FRONTIER_ITEM_CHARCOAL 38
+#define BATTLE_FRONTIER_ITEM_PECHA_BERRY 39
+#define BATTLE_FRONTIER_ITEM_SOFT_SAND 40
+#define BATTLE_FRONTIER_ITEM_LUM_BERRY 41
+#define BATTLE_FRONTIER_ITEM_DRAGON_SCALE 42
+#define BATTLE_FRONTIER_ITEM_DRAGON_FANG 43
+#define BATTLE_FRONTIER_ITEM_IAPAPA_BERRY 44
+#define BATTLE_FRONTIER_ITEM_WIKI_BERRY 45
+#define BATTLE_FRONTIER_ITEM_SEA_INCENSE 46
+#define BATTLE_FRONTIER_ITEM_SHELL_BELL 47
+#define BATTLE_FRONTIER_ITEM_SALAC_BERRY 48
+#define BATTLE_FRONTIER_ITEM_LANSAT_BERRY 49
+#define BATTLE_FRONTIER_ITEM_APICOT_BERRY 50
+#define BATTLE_FRONTIER_ITEM_STARF_BERRY 51
+#define BATTLE_FRONTIER_ITEM_LIECHI_BERRY 52
+#define BATTLE_FRONTIER_ITEM_STICK 53
+#define BATTLE_FRONTIER_ITEM_LAX_INCENSE 54
+#define BATTLE_FRONTIER_ITEM_AGUAV_BERRY 55
+#define BATTLE_FRONTIER_ITEM_FIGY_BERRY 56
+#define BATTLE_FRONTIER_ITEM_THICK_CLUB 57
+#define BATTLE_FRONTIER_ITEM_MAGO_BERRY 58
+#define BATTLE_FRONTIER_ITEM_METAL_POWDER 59
+#define BATTLE_FRONTIER_ITEM_PETAYA_BERRY 60
+#define BATTLE_FRONTIER_ITEM_LUCKY_PUNCH 61
+#define BATTLE_FRONTIER_ITEM_GANLON_BERRY 62
+
#endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
index 4967c814d..7a97c4caf 100644
--- a/include/constants/event_objects.h
+++ b/include/constants/event_objects.h
@@ -260,4 +260,7 @@
#define TRACKS_FOOT 1
#define TRACKS_BIKE_TIRE 2
+#define EVENT_OBJ_ID_PLAYER 0xFF
+#define EVENT_OBJ_ID_CAMERA 0x7F
+
#endif // GUARD_CONSTANTS_EVENT_OBJECTS_H
diff --git a/include/constants/trainers.h b/include/constants/trainers.h
index cf6eaf929..2a6c306b4 100644
--- a/include/constants/trainers.h
+++ b/include/constants/trainers.h
@@ -117,88 +117,90 @@
#define TRAINER_BACK_PIC_WALLY 6
#define TRAINER_BACK_PIC_STEVEN 7
-#define FACILITY_CLASS_HIKER 0x0
-#define FACILITY_CLASS_AQUA_GRUNT_M 0x1
-#define FACILITY_CLASS_POKEMON_BREEDER_F 0x2
-#define FACILITY_CLASS_COOLTRAINER_M 0x3
-#define FACILITY_CLASS_BIRD_KEEPER 0x4
-#define FACILITY_CLASS_COLLECTOR 0x5
-#define FACILITY_CLASS_AQUA_GRUNT_F 0x6
-#define FACILITY_CLASS_SWIMMER_M 0x7
-#define FACILITY_CLASS_MAGMA_GRUNT_M 0x8
-#define FACILITY_CLASS_EXPERT_M 0x9
-#define FACILITY_CLASS_BLACK_BELT 0xa
-#define FACILITY_CLASS_AQUA_LEADER_ARCHIE 0xb
-#define FACILITY_CLASS_HEX_MANIAC 0xc
-#define FACILITY_CLASS_AROMA_LADY 0xd
-#define FACILITY_CLASS_RUIN_MANIAC 0xe
-#define FACILITY_CLASS_INTERVIEWER 0xf
-#define FACILITY_CLASS_TUBER_F 0x10
-#define FACILITY_CLASS_TUBER_M 0x11
-#define FACILITY_CLASS_COOLTRAINER_F 0x12
-#define FACILITY_CLASS_LADY 0x13
-#define FACILITY_CLASS_BEAUTY 0x14
-#define FACILITY_CLASS_RICH_BOY 0x15
-#define FACILITY_CLASS_EXPERT_F 0x16
-#define FACILITY_CLASS_POKEMANIAC 0x17
-#define FACILITY_CLASS_MAGMA_GRUNT_F 0x18
-#define FACILITY_CLASS_GUITARIST 0x19
-#define FACILITY_CLASS_KINDLER 0x1a
-#define FACILITY_CLASS_CAMPER 0x1b
-#define FACILITY_CLASS_PICNICKER 0x1c
-#define FACILITY_CLASS_BUG_MANIAC 0x1d
-#define FACILITY_CLASS_PSYCHIC_M 0x1e
-#define FACILITY_CLASS_PSYCHIC_F 0x1f
-#define FACILITY_CLASS_GENTLEMAN 0x20
-#define FACILITY_CLASS_ELITE_FOUR_SIDNEY 0x21
-#define FACILITY_CLASS_ELITE_FOUR_PHOEBE 0x22
-#define FACILITY_CLASS_LEADER_ROXANNE 0x23
-#define FACILITY_CLASS_LEADER_BRAWLY 0x24
-#define FACILITY_CLASS_LEADER_TATE_AND_LIZA 0x25
-#define FACILITY_CLASS_SCHOOL_KID_M 0x26
-#define FACILITY_CLASS_SCHOOL_KID_F 0x27
-#define FACILITY_CLASS_SR_AND_JR 0x28
-#define FACILITY_CLASS_POKEFAN_M 0x29
-#define FACILITY_CLASS_POKEFAN_F 0x2a
-#define FACILITY_CLASS_YOUNGSTER 0x2b
-#define FACILITY_CLASS_CHAMPION_WALLACE 0x2c
-#define FACILITY_CLASS_FISHERMAN 0x2d
-#define FACILITY_CLASS_CYCLING_TRIATHLETE_M 0x2e
-#define FACILITY_CLASS_CYCLING_TRIATHLETE_F 0x2f
-#define FACILITY_CLASS_RUNNING_TRIATHLETE_M 0x30
-#define FACILITY_CLASS_RUNNING_TRIATHLETE_F 0x31
+#define FACILITY_CLASS_HIKER 0x0
+#define FACILITY_CLASS_AQUA_GRUNT_M 0x1
+#define FACILITY_CLASS_POKEMON_BREEDER_F 0x2
+#define FACILITY_CLASS_COOLTRAINER_M 0x3
+#define FACILITY_CLASS_BIRD_KEEPER 0x4
+#define FACILITY_CLASS_COLLECTOR 0x5
+#define FACILITY_CLASS_AQUA_GRUNT_F 0x6
+#define FACILITY_CLASS_SWIMMER_M 0x7
+#define FACILITY_CLASS_MAGMA_GRUNT_M 0x8
+#define FACILITY_CLASS_EXPERT_M 0x9
+#define FACILITY_CLASS_BLACK_BELT 0xa
+#define FACILITY_CLASS_AQUA_LEADER_ARCHIE 0xb
+#define FACILITY_CLASS_HEX_MANIAC 0xc
+#define FACILITY_CLASS_AROMA_LADY 0xd
+#define FACILITY_CLASS_RUIN_MANIAC 0xe
+#define FACILITY_CLASS_INTERVIEWER 0xf
+#define FACILITY_CLASS_TUBER_F 0x10
+#define FACILITY_CLASS_TUBER_M 0x11
+#define FACILITY_CLASS_COOLTRAINER_F 0x12
+#define FACILITY_CLASS_LADY 0x13
+#define FACILITY_CLASS_BEAUTY 0x14
+#define FACILITY_CLASS_RICH_BOY 0x15
+#define FACILITY_CLASS_EXPERT_F 0x16
+#define FACILITY_CLASS_POKEMANIAC 0x17
+#define FACILITY_CLASS_MAGMA_GRUNT_F 0x18
+#define FACILITY_CLASS_GUITARIST 0x19
+#define FACILITY_CLASS_KINDLER 0x1a
+#define FACILITY_CLASS_CAMPER 0x1b
+#define FACILITY_CLASS_PICNICKER 0x1c
+#define FACILITY_CLASS_BUG_MANIAC 0x1d
+#define FACILITY_CLASS_PSYCHIC_M 0x1e
+#define FACILITY_CLASS_PSYCHIC_F 0x1f
+#define FACILITY_CLASS_GENTLEMAN 0x20
+#define FACILITY_CLASS_ELITE_FOUR_SIDNEY 0x21
+#define FACILITY_CLASS_ELITE_FOUR_PHOEBE 0x22
+#define FACILITY_CLASS_LEADER_ROXANNE 0x23
+#define FACILITY_CLASS_LEADER_BRAWLY 0x24
+#define FACILITY_CLASS_LEADER_TATE_AND_LIZA 0x25
+#define FACILITY_CLASS_SCHOOL_KID_M 0x26
+#define FACILITY_CLASS_SCHOOL_KID_F 0x27
+#define FACILITY_CLASS_SR_AND_JR 0x28
+#define FACILITY_CLASS_POKEFAN_M 0x29
+#define FACILITY_CLASS_POKEFAN_F 0x2a
+#define FACILITY_CLASS_YOUNGSTER 0x2b
+#define FACILITY_CLASS_CHAMPION_WALLACE 0x2c
+#define FACILITY_CLASS_FISHERMAN 0x2d
+#define FACILITY_CLASS_CYCLING_TRIATHLETE_M 0x2e
+#define FACILITY_CLASS_CYCLING_TRIATHLETE_F 0x2f
+#define FACILITY_CLASS_RUNNING_TRIATHLETE_M 0x30
+#define FACILITY_CLASS_RUNNING_TRIATHLETE_F 0x31
#define FACILITY_CLASS_SWIMMING_TRIATHLETE_M 0x32
#define FACILITY_CLASS_SWIMMING_TRIATHLETE_F 0x33
-#define FACILITY_CLASS_DRAGON_TAMER 0x34
-#define FACILITY_CLASS_NINJA_BOY 0x35
-#define FACILITY_CLASS_BATTLE_GIRL 0x36
-#define FACILITY_CLASS_PARASOL_LADY 0x37
-#define FACILITY_CLASS_SWIMMER_F 0x38
-#define FACILITY_CLASS_TWINS 0x39
-#define FACILITY_CLASS_SAILOR 0x3a
-#define FACILITY_CLASS_WALLY 0x3b
-#define FACILITY_CLASS_BRENDAN 0x3c
-#define FACILITY_CLASS_BRENDAN_2 0x3d
-#define FACILITY_CLASS_BRENDAN_3 0x3e
-#define FACILITY_CLASS_MAY 0x3f
-#define FACILITY_CLASS_MAY_2 0x40
-#define FACILITY_CLASS_MAY_3 0x41
-#define FACILITY_CLASS_PKMN_BREEDER_M 0x42
-#define FACILITY_CLASS_BUG_CATCHER 0x43
-#define FACILITY_CLASS_PKMN_RANGER_M 0x44
-#define FACILITY_CLASS_PKMN_RANGER_F 0x45
-#define FACILITY_CLASS_MAGMA_LEADER_MAXIE 0x46
-#define FACILITY_CLASS_LASS 0x47
-#define FACILITY_CLASS_YOUNG_COUPLE 0x48
-#define FACILITY_CLASS_OLD_COUPLE 0x49
-#define FACILITY_CLASS_SIS_AND_BRO 0x4a
-#define FACILITY_CLASS_STEVEN 0x4b
-#define FACILITY_CLASS_SALON_MAIDEN_ANABEL 0x4c
-#define FACILITY_CLASS_DOME_ACE_TUCKER 0x4d
-#define FACILITY_CLASS_RED 0x4e
-#define FACILITY_CLASS_LEAF 0x4f
-#define FACILITY_CLASS_RS_BRENDAN 0x50
-#define FACILITY_CLASS_RS_MAY 0x51
+#define FACILITY_CLASS_DRAGON_TAMER 0x34
+#define FACILITY_CLASS_NINJA_BOY 0x35
+#define FACILITY_CLASS_BATTLE_GIRL 0x36
+#define FACILITY_CLASS_PARASOL_LADY 0x37
+#define FACILITY_CLASS_SWIMMER_F 0x38
+#define FACILITY_CLASS_TWINS 0x39
+#define FACILITY_CLASS_SAILOR 0x3a
+#define FACILITY_CLASS_WALLY 0x3b
+#define FACILITY_CLASS_BRENDAN 0x3c
+#define FACILITY_CLASS_BRENDAN_2 0x3d
+#define FACILITY_CLASS_BRENDAN_3 0x3e
+#define FACILITY_CLASS_MAY 0x3f
+#define FACILITY_CLASS_MAY_2 0x40
+#define FACILITY_CLASS_MAY_3 0x41
+#define FACILITY_CLASS_PKMN_BREEDER_M 0x42
+#define FACILITY_CLASS_BUG_CATCHER 0x43
+#define FACILITY_CLASS_PKMN_RANGER_M 0x44
+#define FACILITY_CLASS_PKMN_RANGER_F 0x45
+#define FACILITY_CLASS_MAGMA_LEADER_MAXIE 0x46
+#define FACILITY_CLASS_LASS 0x47
+#define FACILITY_CLASS_YOUNG_COUPLE 0x48
+#define FACILITY_CLASS_OLD_COUPLE 0x49
+#define FACILITY_CLASS_SIS_AND_BRO 0x4a
+#define FACILITY_CLASS_STEVEN 0x4b
+#define FACILITY_CLASS_SALON_MAIDEN_ANABEL 0x4c
+#define FACILITY_CLASS_DOME_ACE_TUCKER 0x4d
+#define FACILITY_CLASS_RED 0x4e
+#define FACILITY_CLASS_LEAF 0x4f
+#define FACILITY_CLASS_RS_BRENDAN 0x50
+#define FACILITY_CLASS_RS_MAY 0x51
+
+#define FACILITY_CLASSES_COUNT 0x52
#define TRAINER_CLASS_PKMN_TRAINER_1 0x0
#define TRAINER_CLASS_PKMN_TRAINER_2 0x1
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 9854ec5a2..faffe7c70 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -100,7 +100,7 @@
#define VAR_0x4051 0x4051
#define VAR_0x4052 0x4052
#define VAR_0x4053 0x4053
-#define VAR_0x4054 0x4054
+#define VAR_CURRENT_SECRET_BASE 0x4054
#define VAR_0x4055 0x4055
#define VAR_0x4056 0x4056
#define VAR_0x4057 0x4057
diff --git a/include/constants/weather.h b/include/constants/weather.h
index 953cc2753..d0a81c34c 100644
--- a/include/constants/weather.h
+++ b/include/constants/weather.h
@@ -16,6 +16,7 @@
#define WEATHER_DROUGHT 12
#define WEATHER_RAIN_HEAVY 13
#define WEATHER_BUBBLES 14
+#define WEATHER_15 15
#define WEATHER_ROUTE119_CYCLE 20
#define WEATHER_ROUTE123_CYCLE 21
diff --git a/include/contest.h b/include/contest.h
index 8790d7371..54c431b94 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -231,6 +231,7 @@ extern u8 gContestPlayerMonIndex;
extern s16 gUnknown_02039F08[4];
extern s16 gContestMonConditions[4];
extern u8 gIsLinkContest;
+extern struct ContestWinner gUnknown_02039F3C;
struct Shared18000
{
@@ -415,7 +416,6 @@ extern struct ContestResources *gContestResources;
#define eContestAI (gContestResources->field_C)
#define shared19328 (*gContestResources->field_10)
#define shared19338 (*gContestResources->field_14)
-#define shared19348 (*gContestResources->field_18)
#define shared15800 (gHeap + 0x18000)
#define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000))
@@ -432,6 +432,7 @@ bool8 Contest_IsMonsTurnDisabled(u8 a);
bool8 sub_80DE1E8(u8 a);
void SetStartledString(u8 a, u8 b);
s8 Contest_GetMoveExcitement(u16);
+u8 sub_80DAE0C(struct Pokemon *);
void sub_80DEDA8(u8);
#endif //GUARD_CONTEST_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
index 67a845d62..c633c50cc 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -1,7 +1,16 @@
#ifndef GUARD_CONTESTPAINTING_H
#define GUARD_CONTESTPAINTING_H
-void sub_812FDA8(u32);
-void sub_812FDEC(void);
+enum
+{
+ CONTESTRESULT_COOL = 9,
+ CONTESTRESULT_BEAUTY = 13,
+ CONTESTRESULT_CUTE = 2,
+ CONTESTRESULT_SMART = 36,
+ CONTESTRESULT_TOUGH = 6,
+};
+
+void sub_812FDA8(int);
+void CB2_ContestPainting(void);
#endif
diff --git a/include/contest_painting_effects.h b/include/contest_painting_effects.h
new file mode 100755
index 000000000..3b6964666
--- /dev/null
+++ b/include/contest_painting_effects.h
@@ -0,0 +1,28 @@
+#ifndef GUARD_CONTEST_PAINTING_EFFECTS_H
+#define GUARD_CONTEST_PAINTING_EFFECTS_H
+
+struct Unk030061A0
+{
+ u8 var_0;
+ u8 pad1[3];
+ u16 (*var_4)[][32];
+ u16 *var_8;
+ u8 pad0C[4];
+ u32 var_10;
+ u16 var_14;
+ u16 var_16;
+ u8 var_18;
+ u8 var_19;
+ u8 var_1A;
+ u8 var_1B;
+ u8 var_1C;
+ u8 var_1D;
+ u8 var_1E;
+ u8 var_1F;
+};
+
+void sub_8124F2C(struct Unk030061A0 *);
+void sub_81261A4(struct Unk030061A0 *);
+void sub_8126058(struct Unk030061A0 *);
+
+#endif
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 541fa6c1b..23fd9ed83 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -1,6 +1,8 @@
#ifndef GUARD_EASYCHAT_H
#define GUARD_EASYCHAT_H
+#include "main.h"
+
void InitEasyChatPhrases(void);
void easy_chat_input_maybe(void);
u8 * CopyEasyChatWord(u8 *dest, u16 word);
@@ -12,5 +14,6 @@ u16 sub_811EE38(u16 group);
u16 sub_811F01C(void);
bool16 EasyChat_GetNumWordsInGroup(u8);
u16 sub_811EE90(u16);
+void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam);
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 7f69ef3ae..2661494d3 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -405,14 +405,14 @@ extern const u8 gText_SoDesirable[];
extern const u8 gText_SoExciting[];
extern const u8 gText_SoAmusing[];
extern const u8 gText_SoMagical[];
-extern const u8 gUnknown_08294313[];
-extern const u8 gUnknown_08294359[];
-extern const u8 gUnknown_08294398[];
-extern const u8 gUnknown_082943DA[];
-extern const u8 gUnknown_0829441C[];
-extern const u8 gUnknown_08294460[];
-extern const u8 gUnknown_082944A0[];
-extern const u8 gUnknown_082944D5[];
+extern const u8 gMauvilleManText_ISoWantToGoOnAVacation[];
+extern const u8 gMauvilleManText_IBoughtCrayonsWith120Colors[];
+extern const u8 gMauvilleManText_WouldntItBeNiceIfWeCouldFloat[];
+extern const u8 gMauvilleManText_WhenYouWriteOnASandyBeach[];
+extern const u8 gMauvilleManText_WhatsTheBottomOfTheSeaLike[];
+extern const u8 gMauvilleManText_WhenYouSeeTheSettingSunDoesIt[];
+extern const u8 gMauvilleManText_LyingBackInTheGreenGrass[];
+extern const u8 gMauvilleManText_SecretBasesAreSoWonderful[];
extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E930[];
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
deleted file mode 100644
index 7c2d16a24..000000000
--- a/include/field_fadetransition.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef GUARD_FIELD_FADETRANSITION_H
-#define GUARD_FIELD_FADETRANSITION_H
-
-void sub_80AF734(void);
-void sp13E_warp_to_last_warp(void);
-void sub_80AF7D0(void);
-void sp13F_fall_to_last_warp(void);
-
-void sub_80AF848(void);
-void sub_80AF87C(void);
-
-#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index adb51f889..3aedec5de 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -58,5 +58,7 @@ u8 GetJumpSpecialMovementAction(u32);
bool8 PartyHasMonWithSurf(void);
bool8 IsPlayerFacingSurfableFishableWater(void);
bool8 IsPlayerSurfingNorth(void);
+void sub_808C228(u8 direction);
+u8 sub_808BCD0(void);
#endif // GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_screen.h b/include/field_screen.h
deleted file mode 100644
index 021d2b9e9..000000000
--- a/include/field_screen.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef GUARD_FIELD_SCREEN_H
-#define GUARD_FIELD_SCREEN_H
-
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-void pal_fill_black(void);
-bool8 IsWeatherNotFadingIn(void);
-void sub_80AF168(void);
-void sub_80AF2B4(u8 taskId);
-void UpdateWeatherPerDay(u16 days);
-void sub_80AC3D0(void);
-void sub_80AC3E4(void);
-void PreservePaletteInWeather(u8);
-void sub_80AF128(void);
-void sub_80AB104(u8);
-void sub_80AF80C(u8);
-void sub_80AF828(void);
-void sub_80AF838(void);
-void sub_80B0268(void);
-
-#endif //GUARD_FIELD_SCREEN_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index ef81c2f9e..f3ac2e866 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -1,8 +1,44 @@
#ifndef GUARD_FIELD_SCREEN_EFFECT_H
#define GUARD_FIELD_SCREEN_EFFECT_H
+void pal_fill_for_maplights(void);
+void pal_fill_black(void);
+void WarpFadeScreen(void);
+void sub_80AF128(void);
+void sub_80AF168(void);
+void sub_80AF188(void);
+void sub_80AF214(void);
+void sub_80AF2B4(u8 taskId);
+void sub_80AF314(void);
+void mapldr_default(void);
+void sub_80AF3B0(void);
+void sub_80AF3C8(void);
+void sub_80AF3E8(void);
+void sub_80AF40C(void);
+void sub_80AF688(void);
+bool8 sub_80AF6A4(void);
+void sub_80AF6D4(void);
+void sub_80AF6F0(void);
+void sub_80AF734(void);
+void sp13E_warp_to_last_warp(void);
void sub_80AF79C(void);
-void sub_80B009C(u8);
+void sub_80AF7D0(void);
+void sp13F_fall_to_last_warp(void);
+void sub_80AF80C(u8 metatileBehavior);
+void sub_80AF828(void);
+void sub_80AF838(void);
+void sub_80AF848(void);
+void sub_80AF87C(void);
+void sub_80AF8B8(void);
+void sub_80AF948(void);
+void sub_80AF9F8(void);
+void sub_80AFC60(void);
+void sub_80B009C(u8 flashLevel);
+void door_upload_tiles(void);
void sub_80B0244(void);
+void sub_80B0268(void);
+void sub_80B0534(void);
+void sub_80B058C(void);
+void sub_80B05B4(void);
#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/field_weather.h b/include/field_weather.h
index a48361b8a..c032183e1 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -4,13 +4,23 @@
#include "sprite.h"
// Controls how the weather should be changing the screen palettes.
-enum {
+enum
+{
WEATHER_PAL_STATE_CHANGING_WEATHER,
WEATHER_PAL_STATE_SCREEN_FADING_IN,
WEATHER_PAL_STATE_SCREEN_FADING_OUT,
WEATHER_PAL_STATE_IDLE,
};
+// For the FadeScreen function.
+enum
+{
+ FADE_FROM_BLACK,
+ FADE_TO_BLACK,
+ FADE_FROM_WHITE,
+ FADE_TO_WHITE,
+};
+
struct Weather
{
union
@@ -38,11 +48,11 @@ struct Weather
u8 gammaStepDelay;
u8 gammaStepFrameCounter;
u16 fadeDestColor;
- u8 palProcessingState;
- u8 fadeScreenCounter;
- bool8 readyForInit;
- u8 taskId;
- u8 unknown_6CA;
+ /*0x6C6*/ u8 palProcessingState;
+ /*0x6C7*/ u8 fadeScreenCounter;
+ /*0x6C8*/ bool8 readyForInit;
+ /*0x6C9*/ u8 taskId;
+ /*0x6CA*/ u8 unknown_6CA;
u8 unknown_6CB;
u16 initStep;
u16 finishStep;
@@ -121,57 +131,103 @@ struct Weather
u8 loadDroughtPalsOffset;
};
+// field_weather.c
+extern struct Weather gWeather;
+extern struct Weather *const gWeatherPtr;
+
void StartWeather(void);
void ChangeWeather(u8 weather);
-void sub_807C988(u8 effect);
-void sub_807C9B4(u8 effect);
-void Task_WeatherInit(u8);
-void Task_WeatherMain(u8);
-void sub_807CAE8(void);
-void nullsub_38(void);
-void SetWeatherScreenFadeOut(void);
-
-enum
-{
- FADE_FROM_BLACK,
- FADE_TO_BLACK,
- FADE_FROM_WHITE,
- FADE_TO_WHITE,
-};
-
-void FadeScreen(u8, s8);
-// ...
-void UpdateSpritePaletteWithWeather(u8 tag);
-void ApplyWeatherGammaShiftToPal(u8);
-// ...
-void Weather_SetBlendCoeffs(u8, u8);
-// ...
-void PlayRainSoundEffect(void);
-// ...
-void SetSav1Weather(u32);
-u8 GetSav1Weather(void);
-void sub_80AEDBC(void);
-
-void SetSav1WeatherFromCurrMapHeader(void);
-// ...
-void DoCurrentWeather(void);
-void sub_8080750(void);
-
+void sub_80AB104(u8 weather);
+void sub_80AB130(u8 weather);
+void sub_80ABC48(s8 gammaIndex);
+void sub_80ABC7C(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
+void FadeScreen(u8 mode, s8 delay);
bool8 IsWeatherNotFadingIn(void);
-bool8 IsWeatherChangeComplete(void);
-void SetWeather(u32);
-void UpdateWeatherPerDay(u16);
-void PreservePaletteInWeather(u8 index);
-void ResetPreservedPalettesInWeather(void);
-extern void ResetDroughtWeatherPaletteLoading(void);
+void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex);
+void ApplyWeatherGammaShiftToPal(u8 paletteIndex);
+u8 sub_80ABF20(void);
+void LoadCustomWeatherSpritePalette(const u16 *palette);
void ResetDroughtWeatherPaletteLoading(void);
bool8 LoadDroughtWeatherPalettes(void);
+void sub_80ABFE0(s8 gammaIndex);
+void sub_80ABFF0(void);
+void sub_80AC01C(void);
+void Weather_SetBlendCoeffs(u8 eva, u8 evb);
+void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay);
+bool8 Weather_UpdateBlend(void);
+void sub_80AC274(u8 a);
u8 GetCurrentWeather(void);
-void LoadCustomWeatherSpritePalette(const u16 *palette);
-
+void SetRainStrengthFromSoundEffect(u16 soundEffect);
+void PlayRainSoundEffect(void);
+u8 IsWeatherChangeComplete(void);
+void SetWeatherScreenFadeOut(void);
+void sub_80AC3E4(void);
+void PreservePaletteInWeather(u8 preservedPalIndex);
+void ResetPreservedPalettesInWeather(void);
-extern struct Weather gWeather;
+// field_weather_effect.c
+void Clouds_InitVars(void);
+void Clouds_Main(void);
+void Clouds_InitAll(void);
+bool8 Clouds_Finish(void);
+void Weather2_InitVars(void);
+void Weather2_Main(void);
+void Weather2_InitAll(void);
+bool8 Weather2_Finish(void);
+void LightRain_InitVars(void);
+void LightRain_Main(void);
+void LightRain_InitAll(void);
+bool8 LightRain_Finish(void);
+void Snow_InitVars(void);
+void Snow_Main(void);
+void Snow_InitAll(void);
+bool8 Snow_Finish(void);
+void MedRain_InitVars(void);
+void Rain_Main(void);
+void MedRain_InitAll(void);
+bool8 Rain_Finish(void);
+void Fog1_InitVars(void);
+void Fog1_Main(void);
+void Fog1_InitAll(void);
+bool8 Fog1_Finish(void);
+void Ash_InitVars(void);
+void Ash_Main(void);
+void Ash_InitAll(void);
+bool8 Ash_Finish(void);
+void Sandstorm_InitVars(void);
+void Sandstorm_Main(void);
+void Sandstorm_InitAll(void);
+bool8 Sandstorm_Finish(void);
+void Fog2_InitVars(void);
+void Fog2_Main(void);
+void Fog2_InitAll(void);
+bool8 Fog2_Finish(void);
+void Fog1_InitVars(void);
+void Fog1_Main(void);
+void Fog1_InitAll(void);
+bool8 Fog1_Finish(void);
+void Shade_InitVars(void);
+void Shade_Main(void);
+void Shade_InitAll(void);
+bool8 Shade_Finish(void);
+void Drought_InitVars(void);
+void Drought_Main(void);
+void Drought_InitAll(void);
+bool8 Drought_Finish(void);
+void HeavyRain_InitVars(void);
+void Rain_Main(void);
+void HeavyRain_InitAll(void);
+bool8 Rain_Finish(void);
+void Bubbles_InitVars(void);
+void Bubbles_Main(void);
+void Bubbles_InitAll(void);
+bool8 Bubbles_Finish(void);
-extern struct Weather *const gWeatherPtr;
+u8 GetSav1Weather(void);
+void SetSav1Weather(u32 weather);
+void SetSav1WeatherFromCurrMapHeader(void);
+void SetWeather(u32 weather);
+void DoCurrentWeather(void);
+void UpdateWeatherPerDay(u16 increment);
#endif // GUARD_WEATHER_H
diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h
deleted file mode 100644
index 027bb4273..000000000
--- a/include/fldeff_80F9BCC.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef GUARD_FLDEFF_80F9BCC_H
-#define GUARD_FLDEFF_80F9BCC_H
-
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-void sub_80FA5E4(s16 id, s16 x, s16 y);
-void sub_80FA794(s16 x, s16 y);
-void CreateRecordMixingSprite(void);
-void DestroyRecordMixingSprite(void);
-void FldeffPoison_Start(void);
-void sub_80FA970(s16);
-void sub_80FA9D0(void);
-bool8 sub_80FADE4(u16, u8);
-
-#endif //GUARD_FLDEFF_80F9BCC_H
diff --git a/include/fldeff_misc.h b/include/fldeff_misc.h
new file mode 100644
index 000000000..954ecbb5c
--- /dev/null
+++ b/include/fldeff_misc.h
@@ -0,0 +1,24 @@
+#ifndef GUARD_FLDEFF_MISC_H
+#define GUARD_FLDEFF_MISC_H
+
+void PopSecretBaseBalloon(s16 id, s16 x, s16 y);
+void ShatterSecretBaseBreakableDoor(s16 x, s16 y);
+u8 CreateRecordMixingSprite(void);
+void DestroyRecordMixingSprite(void);
+void FldEffPoison_Start(void);
+void PlaySecretBaseMusicNoteMatSound(s16 metatileId);
+void DoSecretBaseGlitterMatSparkle(void);
+bool8 sub_80FADE4(u16, u8);
+
+extern struct MapPosition gPlayerFacingPosition;
+extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
+
+extern u8 EventScript_275A86[];
+extern u8 EventScript_275ADF[];
+extern u8 EventScript_275B38[];
+
+extern const struct OamData gEventObjectBaseOam_32x8;
+
+extern const u16 gTilesetPalettes_SecretBase[][16];
+
+#endif //GUARD_FLDEFF_MISC_H
diff --git a/include/fldeff_softboiled.h b/include/fldeff_softboiled.h
new file mode 100755
index 000000000..abb3c7913
--- /dev/null
+++ b/include/fldeff_softboiled.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_FLDEFF_SOFTBOILED_H
+#define GUARD_FLDEFF_SOFTBOILED_H
+
+void sub_81615A8(u8 taskId);
+void sub_8161560(u8 taskId);
+
+#endif // GUARD_FLDEFF_SOFTBOILED_H
diff --git a/include/gba/types.h b/include/gba/types.h
index a7dbf3e03..fff48d437 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -32,7 +32,9 @@ struct BgCnt
{
u16 priority:2;
u16 charBaseBlock:2;
- u16 dummy:4;
+ u16 dummy:2;
+ u16 mosaic:1;
+ u16 palettes:1;
u16 screenBaseBlock:5;
u16 areaOverflowMode:1;
u16 screenSize:2;
diff --git a/include/global.h b/include/global.h
index c976abd2d..090ba7ce4 100644
--- a/include/global.h
+++ b/include/global.h
@@ -61,6 +61,12 @@
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
+// Extracts the upper 16 bits of a 32-bit number
+#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
+
+// Extracts the lower 16 bits of a 32-bit number
+#define LOHALF(n) ((n) & 0xFFFF)
+
// There are many quirks in the source code which have overarching behavioral differences from
// a number of other files. For example, diploma.c seems to declare rodata before each use while
// other files declare out of order and must be at the beginning. There are also a number of
@@ -79,6 +85,14 @@
#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
+#define S16TOPOSFLOAT(val) \
+({ \
+ s16 v = (val); \
+ float f = (float)v; \
+ if(v < 0) f += 65536.0f; \
+ f; \
+})
+
// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen.
// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen.
// In Gen 4 only, migrated Pokemon with Diamond, Pearl, or Platinum's ID show as "----------".
@@ -222,7 +236,7 @@ struct Time
struct Pokedex
{
/*0x00*/ u8 order;
- /*0x01*/ u8 unknown1;
+ /*0x01*/ u8 mode;
/*0x02*/ u8 nationalMagic; // must equal 0xDA in order to have National mode
/*0x03*/ u8 unknown2;
/*0x04*/ u32 unownPersonality; // set when you first see Unown
@@ -293,7 +307,7 @@ struct Apprentice
u32 checksum;
};
-struct UnknownPokemonStruct
+struct BattleTowerPokemon
{
u16 species;
u16 heldItem;
@@ -330,7 +344,7 @@ struct EmeraldBattleTowerRecord
/*0x10*/ u16 greeting[6];
/*0x1C*/ u16 speechWon[6];
/*0x28*/ u16 speechLost[6];
- /*0x34*/ struct UnknownPokemonStruct party[4];
+ /*0x34*/ struct BattleTowerPokemon party[4];
/*0xE4*/ u8 language;
/*0xE8*/ u32 checksum;
};
@@ -345,7 +359,7 @@ struct BattleTowerEReaderTrainer
/*0x10*/ u16 greeting[6];
/*0x1C*/ u16 farewellPlayerLost[6];
/*0x28*/ u16 farewellPlayerWon[6];
- /*0x34*/ struct UnknownPokemonStruct party[3];
+ /*0x34*/ struct BattleTowerPokemon party[3];
/*0xB8*/ u32 checksum;
};
@@ -881,7 +895,7 @@ struct SaveBlock1
/*0x24*/ struct WarpData warp4;
/*0x2C*/ u16 savedMusic;
/*0x2E*/ u8 weather;
- /*0x2F*/ u8 filler_2F;
+ /*0x2F*/ u8 weatherCycleStage;
/*0x30*/ u8 flashLevel;
/*0x32*/ u16 mapLayoutId;
/*0x34*/ u16 mapView[0x100];
diff --git a/include/graphics.h b/include/graphics.h
index bfb57ccb9..79e231cf7 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -3911,6 +3911,11 @@ extern const u16 gIntro2BrendanNoTurnPal[];
extern const u16 gIntro2FlygonPal[];
extern const u32 gIntro2FlygonGfx[];
+// party menu graphics
+extern const u32 gPartyMenuMisc_Gfx[];
+extern const u32 gPartyMenuMisc_Tilemap[];
+extern const u8 gPartyMenuMisc_Pal[];
+
// berry pics
extern const u32 gBerryPic_Cheri[];
extern const u32 gBerryPalette_Cheri[];
@@ -4154,6 +4159,8 @@ extern const u32 gBattleAnimSpriteSheet_050[];
extern const u32 gBattleAnimSpriteSheet_051[];
extern const u32 gBattleAnimSpriteSheet_052[];
extern const u32 gBattleAnimSpriteSheet_053[];
+extern const u32 gUnknown_08C2EA50[];
+extern const u32 gUnknown_08C2EA9C[];
extern const u32 gBattleAnimSpriteSheet_054[];
extern const u32 gBattleAnimSpriteSheet_055[];
extern const u32 gBattleAnimSpriteSheet_056[];
@@ -4233,6 +4240,7 @@ extern const u32 gBattleAnimSpriteSheet_132[];
extern const u32 gBattleAnimSpriteSheet_133[];
extern const u32 gBattleAnimSpriteSheet_134[];
extern const u32 gBattleAnimSpriteSheet_135[];
+extern const u32 gBattleAnimSpriteSheet_Particles[];
extern const u32 gBattleAnimSpriteSheet_136[];
extern const u32 gBattleAnimSpriteSheet_137[];
extern const u32 gBattleAnimSpriteSheet_138[];
@@ -4371,6 +4379,9 @@ extern const u32 gBattleAnimSpriteSheet_280[];
extern const u32 gBattleAnimSpriteSheet_281[];
extern const u32 gBattleAnimSpriteSheet_282[];
extern const u32 gBattleAnimSpriteSheet_283[];
+extern const u32 gBattleAnimBackgroundTilemap_ScaryFacePlayer[];
+extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[];
+extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceContest[];
extern const u32 gBattleAnimSpriteSheet_284[];
extern const u32 gBattleAnimSpriteSheet_285[];
@@ -4583,10 +4594,15 @@ extern const u32 gBattleAnimSpritePalette_209[];
extern const u32 gBattleAnimSpritePalette_210[];
extern const u32 gBattleAnimSpritePalette_211[];
extern const u32 gBattleAnimSpritePalette_215[];
+extern const u32 gUnknown_08C249D0[];
+extern const u32 gUnknown_08C249F8[];
extern const u32 gBattleAnimSpritePalette_216[];
extern const u32 gBattleAnimSpritePalette_217[];
extern const u32 gBattleAnimSpritePalette_218[];
extern const u32 gBattleAnimSpritePalette_219[];
+extern const u32 gUnknown_08C232E0;
+extern const u32 gUnknown_08C23D50;
+extern const u32 gUnknown_08C23D78;
extern const u32 gBattleAnimSpritePalette_220[];
extern const u32 gBattleAnimSpritePalette_221[];
extern const u32 gBattleAnimSpritePalette_222[];
@@ -4610,6 +4626,9 @@ extern const u32 gBattleAnimSpritePalette_241[];
extern const u32 gBattleAnimSpritePalette_242[];
extern const u32 gBattleAnimSpritePalette_243[];
extern const u32 gBattleAnimSpritePalette_244[];
+extern const u8 gUnknown_08C2DC68[];
+extern const u16 gUnknown_08C2DDA4[];
+extern const u8 gUnknown_08C2DDC4[];
extern const u32 gBattleAnimSpritePalette_245[];
extern const u32 gBattleAnimSpritePalette_248[];
extern const u32 gBattleAnimSpritePalette_249[];
@@ -4688,6 +4707,9 @@ extern const u32 gBattleAnimBackgroundTilemap_07[];
extern const u32 gBattleAnimBackgroundTilemap_08[];
extern const u32 gBattleAnimBackgroundTilemap_09[];
extern const u32 gBattleAnimBackgroundTilemap_10[];
+extern const u32 gUnknown_08C2A634[];
+extern const u32 gUnknown_08C2A6D4[];
+extern const u32 gUnknown_08C2A6EC[];
extern const u32 gBattleAnimBackgroundTilemap_11[];
extern const u32 gBattleAnimBackgroundTilemap_12[];
extern const u32 gBattleAnimBackgroundTilemap_13[];
@@ -4719,6 +4741,13 @@ extern const u32 gUnknown_08C16FA8[];
extern const u32 gUnknown_08C16E90[];
extern const u32 gUnknown_08C17170[];
+extern const u32 gUnknown_08D95E00[];
+extern const u32 gUnknown_08D960D0[];
+extern const u32 gUnknown_08D963A4[];
+extern const u32 gBattleAnimBackgroundImage_Surf[];
+extern const u32 gBattleAnimBackgroundPalette_Surf[];
+extern const u32 gBattleAnimBackgroundImageMuddyWater_Pal[];
+
// Berry blender
extern const u32 gBerryBlenderArrowTiles[];
extern const u32 gBerryBlenderStartTiles[];
@@ -4754,4 +4783,12 @@ extern const u32 gWallpaperTiles_Horizontal[];
extern const u32 gWallpaperTilemap_Horizontal[];
extern const u16 gWallpaperPalettes_Horizontal[][16];
+// Cable Car
+extern const u32 gUnknown_08DBA5B8[];
+extern const u16 gUnknown_08DBA518[];
+extern const u32 gCableCar_Gfx[];
+extern const u32 gCableCarDoor_Gfx[];
+extern const u32 gCableCarCord_Gfx[];
+extern const u16 gCableCar_Pal[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 6214c69fc..a904208d9 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -1,6 +1,22 @@
#ifndef GUARD_item_menu_H
#define GUARD_item_menu_H
+#include "item.h"
+
+#define RETURN_LOCATION_FIELD 0
+#define RETURN_LOCATION_BATTLE 1
+#define RETURN_LOCATION_POKEMON_LIST 2
+#define RETURN_LOCATION_SHOP 3
+#define RETURN_LOCATION_FIELD_2 4
+#define RETURN_LOCATION_FIELD_3 5
+#define RETURN_LOCATION_PC 6
+#define RETURN_LOCATION_FIELD_4 7
+#define RETURN_LOCATION_FIELD_5 8
+#define RETURN_LOCATION_FIELD_6 9
+#define RETURN_LOCATION_BATTLE_2 10
+#define RETURN_LOCATION_PC_2 11
+#define RETURN_LOCATION_UNCHANGED 12
+
// Exported type declarations
struct BagStruct
{
@@ -8,18 +24,18 @@ struct BagStruct
u8 location;
u8 pocket;
u16 unk6;
- u16 cursorPosition[5];
- u16 scrollPosition[5];
+ u16 cursorPosition[POCKETS_COUNT];
+ u16 scrollPosition[POCKETS_COUNT];
};
extern struct BagStruct gUnknown_0203CE58;
struct UnkBagStruct
{
- void (*unk0)(void);
- u8 unk4[0x800];
- u8 unk804[12];
- u8 unk810[7];
+ void (*mainCallback2)(void);
+ u8 tilemapBuffer[0x800];
+ u8 spriteId[12];
+ u8 windowPointers[7];
u8 unk817;
u8 unk818;
u8 unk819;
@@ -27,7 +43,7 @@ struct UnkBagStruct
u8 unk81B:4;
u8 unk81B_1:2;
u8 unk81B_3:1;
- u8 unk81B_2:1;
+ u8 hideCloseBagText:1;
u8 filler3[2];
u8 unk81E;
u8 unk81F;
@@ -36,11 +52,11 @@ struct UnkBagStruct
u8 unk825;
u8 filler[2];
u8 unk828;
- u8 unk829[5];
- u8 unk82E[6];
+ u8 numItemStacks[POCKETS_COUNT];
+ u8 numShownItems[6];
s16 unk834;
u8 filler4[0xE];
- u8 unk844[32][32];
+ u8 pocketNameBuffer[32][32];
u8 filler2[4];
};
@@ -55,9 +71,10 @@ void sub_81AAC14(void);
void sub_81AAC50(void);
void sub_81AAC70(void);
void sub_81AAC28(void);
+void SetInitialScrollAndCursorPositions(u8 pocketId);
void bag_menu_mail_related(void);
void CB2_BagMenuFromStartMenu(void);
-u8 sub_81ABB2C(u8 pocketId);
+u8 GetItemListPosition(u8 pocketId);
bool8 UseRegisteredKeyItemOnField(void);
void CB2_GoToSellMenu(void);
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 426565e56..e394e2611 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -2,6 +2,7 @@
#define GUARD_LINK_RFU_H
#include "librfu.h"
+#include "link.h"
// Exported type declarations
diff --git a/include/math_util.h b/include/math_util.h
new file mode 100755
index 000000000..6b0d42460
--- /dev/null
+++ b/include/math_util.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_MATH_UTIL_H
+#define GUARD_MATH_UTIL_H
+
+s16 sub_8151534(s16 x, s16 y);
+s16 sub_8151550(u8 s, s16 x, s16 y);
+s32 sub_8151574(s32 x, s32 y);
+s16 sub_81515B0(s16 x, s16 y);
+s16 sub_81515D4(u8 s, s16 x, s16 y);
+s32 sub_81515FC(s32 x, s32 y);
+s16 sub_8151624(s16 y);
+s16 sub_815163C(u8 s, s16 y);
+s32 sub_815165C(s32 y);
+
+#endif // GUARD_MATH_UTIL_H
diff --git a/include/menu.h b/include/menu.h
index 198e7bd4a..04677ae40 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -36,6 +36,7 @@ u32 GetPlayerTextSpeed(void);
u8 GetPlayerTextSpeedDelay(void);
void sub_81978B0(u16 arg0);
void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16));
+void sub_8199DF0(u32 bg, u8 a1, int a2, int a3);
void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);
void sub_8198070(u8 windowId, bool8 copyToVram);
void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
@@ -91,5 +92,8 @@ void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyTo
void sub_8197AE8(bool8 copyToVram);
void sub_81997AC(u8 windowId, u8 a4, u8 a6, u8 a7, const struct MenuAction *strs);
s8 Menu_ProcessInputGridLayout(void);
+u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted);
+s8 Menu_ProcessInputNoWrapAround_other(void);
+void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
#endif // GUARD_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index 60d9d5133..1f53662b3 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -91,7 +91,7 @@ void Overworld_ClearSavedMusic(void);
void Overworld_ChangeMusicToDefault(void);
void Overworld_ChangeMusicTo(u16 newMusic);
u8 GetMapMusicFadeoutSpeed(void);
-void music_something(void);
+void TryFadeOutOldMapMusic(void);
bool8 BGMusicStopped(void);
void Overworld_FadeOutMapMusic(void);
void UpdateAmbientCry(s16 *state, u16 *delayCounter);
diff --git a/include/party_menu.h b/include/party_menu.h
index cb82eb82c..27a043cb6 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -1,6 +1,7 @@
#ifndef GUARD_PARTY_MENU_H
#define GUARD_PARTY_MENU_H
+#include "main.h"
#include "task.h"
enum
@@ -10,7 +11,9 @@ enum
AILMENT_PRZ,
AILMENT_SLP,
AILMENT_FRZ,
- AILMENT_BRN
+ AILMENT_BRN,
+ AILMENT_PKRS,
+ AILMENT_FNT
};
enum
@@ -23,18 +26,23 @@ enum
PARTY_GIVE_ITEM,
};
-struct Struct203CEC8
-{
- u8 filler[0x9];
+struct Struct203CEC8 {
+ MainCallback exitCallback;
+ TaskFunc unk4;
+ u8 unk8_0:4;
+ u8 mode:2;
+ u8 unk8_2:2;
s8 unk9;
s8 unkA;
u8 unkB;
- u8 filler2[0x2];
+ u16 unkC;
+ s16 unkE;
+ s16 unk10;
};
extern struct Struct203CEC8 gUnknown_0203CEC8;
-extern const u16 gUnknown_0861500C[];
+extern const u16 gUnknown_0861500C[]; // tutor table
bool8 pokemon_has_move(struct Pokemon *, u16);
void sub_81B58A8(void);
@@ -47,9 +55,9 @@ void sub_81B7F60(void);
void sub_81B0FCC(u8 partyIdx, u8 a);
void sub_81B1370(u8 taskId);
-void display_pokemon_menu_message(u8 windowId);
+void display_pokemon_menu_message(u32 windowId);
void sub_81B1F18(u8 taskId, u8 pokemonIdx, s8 a, s16 hp, TaskFunc func);
-void sub_81B1B5C(void *a, u8 b);
+u8 sub_81B1B5C(const u8 *a, u8 b);
u8 sub_81B1BD4(void);
void sub_81B8448(void);
void sub_81B8518(u8 unused);
@@ -62,13 +70,13 @@ void sub_81B617C(void);
u8 sub_81B6D14(u16 a);
bool8 hm_add_c3_without_phase_2(void);
-extern void dp05_ether(u8, u16, TaskFunc);
-extern void dp05_pp_up(u8, u16, TaskFunc);
-extern void dp05_rare_candy(u8, u16, TaskFunc);
+extern void dp05_ether(u8, TaskFunc);
+extern void dp05_pp_up(u8, TaskFunc);
+extern void dp05_rare_candy(u8, TaskFunc);
-extern void sub_81B67C8(u8, u16, TaskFunc);
-extern void sub_81B79E8(u8, u16, TaskFunc);
-extern void sub_81B6DC4(u8, u16, TaskFunc);
-extern void sub_81B7C74(u8, u16, TaskFunc);
+extern void sub_81B67C8(u8, TaskFunc);
+extern void sub_81B79E8(u8, TaskFunc);
+extern void sub_81B6DC4(u8, TaskFunc);
+extern void sub_81B7C74(u8, TaskFunc);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/player_pc.h b/include/player_pc.h
index bd060faa8..5a0b83683 100644
--- a/include/player_pc.h
+++ b/include/player_pc.h
@@ -84,5 +84,6 @@ extern const struct MenuAction gMailboxMailOptions[];
void ReshowPlayerPC(u8 taskId);
void sub_816B31C(void);
+void Mailbox_ReturnToMailListAfterDeposit(void);
#endif //GUARD_PLAYER_PC_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 3f90e9508..b6d323fd3 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -4,6 +4,15 @@
extern u8 gUnknown_030060B0;
extern void (*gUnknown_030060B4)(void);
+#define HOENN_DEX_COUNT 202
+#define NATIONAL_DEX_COUNT 386
+
+enum
+{
+ DEX_MODE_HOENN,
+ DEX_MODE_NATIONAL
+};
+
enum
{
FLAG_GET_SEEN,
@@ -31,6 +40,6 @@ u16 GetNationalPokedexCount(u8);
u16 GetHoennPokedexCount(u8);
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
-u16 sub_80C0E9C(u16, s16, s16, u16);
+u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
#endif // GUARD_POKEDEX_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 4f30e92ab..cfa5cc350 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -451,11 +451,11 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId);
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
-void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src);
-void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50);
+void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src);
+void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50);
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
-void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest);
+void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest);
void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId);
bool8 sub_80688F8(u8 caseId, u8 battlerId);
void SetDeoxysStats(void);
@@ -557,7 +557,7 @@ u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
u8 GetNumberOfRelearnableMoves(struct Pokemon *mon);
u16 SpeciesToPokedexNum(u16 species);
-bool32 sub_806E3F8(u16 species);
+bool32 IsSpeciesInHoennDex(u16 species);
void ClearBattleMonForms(void);
u16 GetBattleBGM(void);
void PlayBattleBGM(void);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 9d6e88685..4f27ef281 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -21,5 +21,7 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
u8 UpdateMonIconFrame(struct Sprite *sprite);
void LoadMonIconPalette(u16 species);
void sub_80D328C(struct Sprite *sprite);
+void sub_80D3014(struct Sprite *sprite);
+void sub_80D32C8(struct Sprite *sprite, u8 animNum);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index afc0516b6..4b84856bb 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -52,7 +52,7 @@ struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 boxPosition);
u8 *GetBoxNamePtr(u8 boxId);
u8 GetBoxWallpaper(u8 boxId);
void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
-s16 sub_80D214C(struct BoxPokemon *boxMons, s8 currIndex, u8 maxIndex, u8 arg3);
+s16 sub_80D214C(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3);
bool8 CheckFreePokemonStorageSpace(void);
bool32 CheckBoxedMonSanity(u32 boxId, u32 boxPosition);
u32 CountStorageNonEggMons(void);
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index c08c581c3..34f7934e1 100755
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -7,6 +7,7 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
void sub_81C4F98(u8, void(*)(void));
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
+u8 sub_81C1B94(void);
// The Pokemon Summary Screen can operate in different modes. Certain features,
// such as move re-ordering, are available in the different modes.
diff --git a/include/pokenav.h b/include/pokenav.h
index 1fde8aa44..d8f0c9f97 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -36,5 +36,7 @@ u8 GetCurrentTrainerHillMapId(void);
u8 sub_81D6490(void);
const struct WarpEvent *sub_81D6120(void);
const struct WarpEvent *sub_81D6134(u8);
+void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
+void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
#endif //GUARD_POKENAV_H
diff --git a/include/region_map.h b/include/region_map.h
index 0c82232cf..ed1c1a201 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -107,6 +107,7 @@ u8 *sub_8124610(u8 *dest, u16 mapSecId);
u16 CorrectSpecialMapSecId(u16 mapSecId);
void sub_8122D88(struct RegionMap *regionMap);
void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y);
+void MCB2_FlyMap(void);
extern const struct RegionMapLocation gRegionMapEntries[];
diff --git a/include/rom_8011DC0.h b/include/rom_8011DC0.h
index b6ca0e248..c1bdbdf34 100644
--- a/include/rom_8011DC0.h
+++ b/include/rom_8011DC0.h
@@ -5,11 +5,16 @@
// Exported RAM declarations
+extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38;
+extern u16 gUnknown_02022C3C;
+extern u8 gUnknown_02022C3E;
+
// Exported ROM declarations
void sub_8018438(void);
u16 mevent_081445C0(u8);
void sub_801B990(u32, u32);
u8 sub_8013F78(void);
+bool32 sub_802C908(u16);
#endif //GUARD_rom_8011DC0_H
diff --git a/include/scanline_effect.h b/include/scanline_effect.h
index eb837e7e2..5bd8b5546 100644
--- a/include/scanline_effect.h
+++ b/include/scanline_effect.h
@@ -3,6 +3,7 @@
// DMA control value to transfer a single 16-bit value at HBlank
#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1)
+#define SCANLINE_EFFECT_DMACNT_32BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_32BIT | DMA_DEST_RELOAD) << 16) | 1)
#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS)
#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS)
diff --git a/include/secret_base.h b/include/secret_base.h
index 4fa0d0c4a..ac15357e3 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -23,4 +23,12 @@ void sub_80EB9E0(void);
void sub_80EBB28(void);
void sub_80E9668(const struct MapPosition *position, const struct MapEvents *events);
+// SetCurrentSecretBaseFromPosition
+void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events);
+// SetCurrentSecretBaseVar
+void sub_80E8B6C(void);
+void sub_80E8BC8(void);
+void sub_80E8D4C(void);
+void EnableBothScriptContexts(void);
+
#endif //GUARD_SECRET_BASE_H
diff --git a/include/strings.h b/include/strings.h
index 71392eb6a..eff40d8f2 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -140,6 +140,8 @@ extern const u8 gText_Cancel4[];
extern const u8 gText_IsThisTheCorrectTime[];
extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
+extern const u8 gText_Silver[];
+extern const u8 gText_Gold[];
extern const u8 gText_Var1AteTheVar2[];
extern const u8 gText_Var1HappilyAteVar2[];
@@ -399,6 +401,69 @@ extern const u8 gText_ThreeDashes[];
// party menu text
extern const u8 gText_PkmnHPRestoredByVar2[];
extern const u8 gText_CantBeUsedOnPkmn[];
+extern const u8 gText_CancelParticipation[];
+extern const u8 gText_PkmnWasGivenItem[];
+extern const u8 gText_RecievedItemFromPkmn[];
+extern const u8 gText_SwitchPkmnItem[];
+extern const u8 gText_SwitchedPkmnItem[];
+extern const u8 gText_BagFullCouldNotRemoveItem[];
+extern const u8 gText_PkmnCantParticipate[];
+extern const u8 gText_PkmnNotHolding[];
+extern const u8 gText_ThrowAwayItem[];
+extern const u8 gText_ItemThrownAway[];
+extern const u8 gText_SendMailToPC[];
+extern const u8 gText_MailSentToPC[];
+extern const u8 gText_PCMailboxFull[];
+extern const u8 gText_MailMessageWillBeLost[];
+extern const u8 gText_MailTakenFromPkmn[];
+extern const u8 gText_NoMoreThanVar1Pkmn[];
+extern const u8 gText_PkmnCantBeTradedNow[];
+extern const u8 gText_EggCantBeTradedNow[];
+extern const u8 gText_OnlyPkmnForBattle[];
+extern const u8 gJPText_PutVar1IntoSpinner[];
+extern const u8 gText_PauseUntilPress[];
+extern const u8 gText_CantUseUntilNewBadge[];
+extern const u8 gText_ReturnToHealingSpot[];
+extern const u8 gText_EscapeFromHere[];
+extern const u8 gText_PkmnCuredOfPoison[];
+extern const u8 gText_PkmnWokeUp2[];
+extern const u8 gText_PkmnBurnHealed[];
+extern const u8 gText_PkmnThawedOut[];
+extern const u8 gText_PkmnCuredOfParalysis[];
+extern const u8 gText_PkmnGotOverInfatuation[];
+extern const u8 gText_PkmnBecameHealthy[];
+extern const u8 gText_HP3[];
+extern const u8 gText_SpAtk3[];
+extern const u8 gText_SpDef3[];
+extern const u8 gText_PkmnBaseVar2StatIncreased[];
+extern const u8 gText_MovesPPIncreased[];
+extern const u8 gText_PPWasRestored[];
+extern const u8 gText_WontHaveEffect[];
+extern const u8 gText_PkmnSnappedOutOfConfusion[];
+extern const u8 gText_PkmnFriendlyBaseVar2Fell[];
+extern const u8 gText_PkmnFriendlyBaseVar2CantFall[];
+extern const u8 gText_PkmnAdoresBaseVar2Fell[];
+extern const u8 gText_PkmnAlreadyKnows[];
+extern const u8 gText_PkmnCantLearnMove[];
+extern const u8 gText_PkmnNeedsToReplaceMove[];
+extern const u8 gText_PkmnLearnedMove3[];
+extern const u8 gText_WhichMoveToForget[];
+extern const u8 gText_12PoofForgotMove[];
+extern const u8 gText_StopLearningMove2[];
+extern const u8 gText_MoveNotLearned[];
+extern const u8 gText_PkmnElevatedToLvVar2[];
+extern const u8 gText_RemoveMailBeforeItem[];
+extern const u8 gText_PkmnHoldingItemCantHoldMail[];
+extern const u8 gText_MailTransferredFromMailbox[];
+extern const u8 gText_CancelBattle[];
+extern const u8 gText_ReturnToWaitingRoom[];
+extern const u8 gText_CancelChallenge[];
+extern const u8 gText_CantSwitchWithAlly[];
+extern const u8 gText_PkmnHasNoEnergy[];
+extern const u8 gText_EggCantBattle[];
+extern const u8 gText_PkmnAlreadySelected[];
+extern const u8 gText_PkmnAlreadyInBattle[];
+extern const u8 gText_PkmnCantSwitchOut[];
//pokedex text
extern const u8 gText_CryOf[];
@@ -1226,6 +1291,7 @@ extern const u8 gText_SpaceAndSpace[];
extern const u8 gText_CommaSpace[];
extern const u8 gText_NewLine[];
extern const u8 gText_ScrollTextUp[];
+extern const u8 gText_Space[];
extern const u8 gText_Space2[];
extern const u8 gText_Are[];
extern const u8 gText_Are2[];
@@ -1275,6 +1341,338 @@ extern const u8 gText_082C8589[];
extern const u8 gText_082C85AE[];
extern const u8 gText_082C877B[];
+// Battle Tower.
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248297[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2444D6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24459B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448CD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24529A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245CAC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E20[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245FC6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247749[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2453B4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2476ED[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246864[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247F3F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2484AC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248661[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2486FF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2469B4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D9E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244A23[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246662[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248321[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244F4F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B16[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2465B5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2481E1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247E7E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244549[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246244[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2468A7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2468FE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245A5F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24626E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244383[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246BE9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2462E4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F7B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247268[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244643[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EE9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D3F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247AA1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D6A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D4B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247348[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24522F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24617D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244989[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2470FD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C4E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24754A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C8C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248467[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2474AF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245BBD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24503D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248AC0[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24614A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244E5B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F2B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248553[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246741[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245656[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2480AB[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248725[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244939[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2471FB[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247291[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24589C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B3E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248614[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448F5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2445C5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B62[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24777A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2455EC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248031[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244AA9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245464[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2484E7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247313[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247470[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D82[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246529[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247238[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A18[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24597F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247DFE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FB7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E64[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247655[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244E7E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245535[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246FCC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2482DC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24808D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246AF7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24864E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247991[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246605[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B4C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448A7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C05[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2456F5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246020[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24670A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24694B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2471C7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C5B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246449[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2452EF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B91[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F87[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246831[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247854[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D07[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246051[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2486C6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248401[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2450E6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248671[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2454D6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24662A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246EB6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244FD3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247484[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2460D5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24622A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244DC6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2485E5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248BB4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246DD3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244B52[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24896F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247629[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2454A3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2459BE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244413[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C90[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2446B4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244C18[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24610D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24838D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24633C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24758B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2458CE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E1A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EA1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248369[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245DC7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D97[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2483C1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248892[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2488D8[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247889[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24895F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2449E6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248781[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F21[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24707D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24818E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24568A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A10[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246791[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246571[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A4E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248431[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2462AA[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B3F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2473C6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2473FB[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245CE6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2445E8[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2487C9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D60[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24795F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B79[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B9B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B2B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24451E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247807[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24636B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247DC7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246002[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247838[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248151[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24718D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2481A9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247942[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D36[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D2D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248751[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D07[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B6B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244F98[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246BB2[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24705B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248BEE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24716C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2489BD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D07[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247724[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248908[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244618[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24468F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244C6E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E39[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24856A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24894B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24824F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C66[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C22[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467C4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245406[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24737A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2474EC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FE9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C23[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2480DC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24857D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B39[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E41[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E78[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D4E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24615D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248517[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245087[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2463C5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247AE3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245EEC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24885B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2470B2[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B22[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467E6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24833D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C2E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248221[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245196[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245740[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24480C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A22[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24555F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24712A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A76[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247CB2[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2457D9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248128[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24631F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246CE9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2482B1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244DFE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247013[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24790D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24581F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A51[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24479E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2461C7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244ECA[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2466E6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2477CE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C2D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2487F7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2489E7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2478DD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248477[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244CD6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2466B4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24805E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247E3E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245923[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248829[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2461F5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24751D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2475BC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245013[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2475D5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C35[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246686[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247438[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D8D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EB5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F4C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2450C0[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245DF0[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24755C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24474D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2444EF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246082[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2464EE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467FF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244EF4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247BE7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245EBD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24697C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A85[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F58[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245851[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A72[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2459F7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2443E7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B3E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248CCF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24444B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C7F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C6C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2472C7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245AB4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24769B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A40[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244BD2[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246760[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246CB3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FA3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247F6D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248D04[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2463FF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246EEE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244B93[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2446E5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2469F1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2451BD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244AD6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24738F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248AEB[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246478[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24760D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24658C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24692B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D[];
+
// Battle Pyramid.
extern const u8 BattleFrontier_BattlePyramidEmptySquare_Text_252D2D[];
extern const u8 BattleFrontier_BattlePyramidEmptySquare_Text_252D57[];
diff --git a/include/trade.h b/include/trade.h
index af4da0015..e3c18bffd 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -1,6 +1,8 @@
#ifndef GUARD_TRADE_H
#define GUARD_TRADE_H
+#include "link_rfu.h"
+
// Exported type declarations
// Exported RAM declarations
@@ -10,5 +12,8 @@
s32 sub_807A728(void);
void sub_80773AC(void);
void sub_807AE50(void);
+int sub_807A8D0(u32 /* probably wrong */, u16, u16, u8);
+int sub_807A7E0(u32 /* probably wrong */, u32 /* probably wrong */, u16, u16, u16, u16, u8);
+int sub_807A918(struct Pokemon*, u16);
#endif //GUARD_TRADE_H
diff --git a/ld_script.txt b/ld_script.txt
index 5e7fe714b..7c2253a4a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -113,7 +113,9 @@ SECTIONS {
src/reshow_battle_screen.o(.text);
src/battle_anim_80A9C70.o(.text);
src/title_screen.o(.text);
- asm/field_screen.o(.text);
+ src/field_weather.o(.text);
+ src/field_weather_effect.o(.text);
+ src/field_screen_effect.o(.text);
src/battle_setup.o(.text);
src/cable_club.o(.text);
src/trainer_see.o(.text);
@@ -148,17 +150,17 @@ SECTIONS {
src/script_pokemon_util_80F87D8.o(.text);
src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
- asm/fldeff_80F9BCC.o(.text);
+ src/fldeff_misc.o(.text);
src/field_special_scene.o(.text);
src/rotating_gate.o(.text);
src/safari_zone.o(.text);
asm/contest_link_80FC4F4.o(.text);
src/item_use.o(.text);
- asm/battle_anim_effects_1.o(.text);
- asm/battle_anim_effects_2.o(.text);
- asm/water.o(.text);
+ src/battle_anim_effects_1.o(.text);
+ src/battle_anim_effects_2.o(.text);
+ src/water.o(.text);
src/fire.o(.text);
- asm/electric.o(.text);
+ src/electric.o(.text);
asm/ice.o(.text);
src/fight.o(.text);
src/poison.o(.text);
@@ -166,13 +168,13 @@ SECTIONS {
asm/psychic.o(.text);
src/bug.o(.text);
src/rock.o(.text);
- asm/ghost.o(.text);
+ src/ghost.o(.text);
src/dragon.o(.text);
asm/dark.o(.text);
src/ground.o(.text);
src/normal.o(.text);
src/battle_anim_utility_funcs.o(.text);
- asm/battle_intro.o(.text);
+ src/battle_intro.o(.text);
src/bike.o(.text);
src/easy_chat.o(.text);
asm/easy_chat.o(.text);
@@ -183,11 +185,10 @@ SECTIONS {
src/dewford_trend.o(.text);
src/heal_location.o(.text);
src/region_map.o(.text);
- asm/cute_sketch.o(.text);
+ asm/contest_painting_effects.o(.text);
src/decoration.o(.text);
src/slot_machine.o(.text);
src/contest_painting.o(.text);
- asm/contest_painting.o(.text);
src/battle_ai_script_commands.o(.text);
src/trader.o(.text);
src/starter_choose.o(.text);
@@ -211,7 +212,7 @@ SECTIONS {
src/battle_transition.o(.text);
src/battle_controller_link_partner.o(.text);
src/battle_message.o(.text);
- asm/cable_car.o(.text);
+ src/cable_car.o(.text);
src/math_util.o(.text);
src/roulette_util.o(.text);
src/rom_81520A8.o(.text);
@@ -222,7 +223,8 @@ SECTIONS {
src/battle_anim_sound_tasks.o(.text);
src/battle_controller_safari.o(.text);
src/fldeff_sweetscent.o(.text);
- asm/battle_anim_815A0D4.o(.text);
+ src/battle_anim_effects_3.o(.text);
+ asm/battle_anim_effects_3.o(.text);
src/learn_move.o(.text);
src/fldeff_softboiled.o(.text);
src/decoration_inventory.o(.text);
@@ -235,7 +237,7 @@ SECTIONS {
src/intro.o(.text);
src/reset_save_heap.o(.text);
src/field_region_map.o(.text);
- asm/battle_anim_8170478.o(.text);
+ src/battle_anim_8170478.o(.text);
src/hall_of_fame.o(.text);
src/credits.o(.text);
src/lottery_corner.o(.text);
@@ -274,7 +276,7 @@ SECTIONS {
src/dynamic_placeholder_text_util.o(.text);
src/save_location.o(.text);
src/item_icon.o(.text);
- asm/party_menu.o(.text);
+ src/party_menu.o(.text);
src/battle_tent.o(.text);
src/unk_text_util_2.o(.text);
src/multiboot.o(.text);
@@ -443,7 +445,10 @@ SECTIONS {
data/battle_anim_80A9C70.o(.rodata);
src/battle_anim_80A9C70.o(.rodata);
src/title_screen.o(.rodata);
- data/field_screen.o(.rodata);
+ data/field_weather.o(.rodata);
+ src/field_weather.o(.rodata);
+ src/field_weather_effect.o(.rodata);
+ src/field_screen_effect.o(.rodata);
src/battle_setup.o(.rodata);
src/cable_club.o(.rodata);
src/trainer_see.o(.rodata);
@@ -473,12 +478,12 @@ SECTIONS {
data/contest_link_80F57C4.o(.rodata);
src/script_pokemon_util_80F87D8.o(.rodata);
src/pokemon_size_record.o(.rodata)
- data/field_effect_misc.o(.rodata);
+ src/fldeff_misc.o(.rodata);
src/field_special_scene.o(.rodata);
src/rotating_gate.o(.rodata);
src/item_use.o(.rodata);
- src/effects_1.o(.rodata);
- src/effects_2.o(.rodata);
+ src/battle_anim_effects_1.o(.rodata);
+ src/battle_anim_effects_2.o(.rodata);
src/water.o(.rodata);
src/fire.o(.rodata);
src/electric.o(.rodata);
@@ -504,11 +509,11 @@ SECTIONS {
src/menu_helpers.o(.rodata);
src/heal_location.o(.rodata);
src/region_map.o(.rodata);
- data/cute_sketch.o(.rodata);
+ data/contest_painting_effects.o(.rodata);
src/decoration.o(.rodata);
src/slot_machine.o(.rodata);
data/slot_machine.o(.rodata);
- data/contest_painting.o(.rodata);
+ src/contest_painting.o(.rodata);
src/battle_ai_script_commands.o(.rodata);
src/trader.o(.rodata);
src/starter_choose.o(.rodata);
@@ -526,16 +531,15 @@ SECTIONS {
src/battle_transition.o(.rodata);
src/battle_controller_link_partner.o(.rodata);
src/battle_message.o(.rodata);
- data/cable_car.o(.rodata);
+ src/cable_car.o(.rodata);
src/save.o(.rodata);
src/field_effect_helpers.o(.rodata);
data/field_effect_helpers.o(.rodata);
src/contest_ai.o(.rodata);
src/battle_controller_safari.o(.rodata);
- data/battle_anim_815A0D4.o(.rodata);
+ src/battle_anim_effects_3.o(.rodata);
src/learn_move.o(.rodata);
src/roamer.o(.rodata);
- data/battle_tower.o(.rodata);
src/battle_tower.o(.rodata);
src/use_pokeblock.o(.rodata);
data/use_pokeblock.o(.rodata);
@@ -543,7 +547,7 @@ SECTIONS {
src/player_pc.o(.rodata);
src/intro.o(.rodata);
src/field_region_map.o(.rodata);
- data/battle_anim_8170478.o(.rodata);
+ src/battle_anim_8170478.o(.rodata);
src/hall_of_fame.o(.rodata);
src/credits.o(.rodata);
src/lottery_corner.o(.rodata);
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 18099091c..2d211c411 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -26,8 +26,6 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern const u16 gMovesWithQuietBGM[];
extern const u8 *const gBattleAnims_Moves[];
-extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
-extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
// this file's functions
@@ -1658,7 +1656,7 @@ static void ScriptCmd_createsprite(void)
else
argVar *= -1;
- subpriority = sub_80A82E4(gBattleAnimTarget) + (s8)(argVar);
+ subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (s8)(argVar);
}
else
{
@@ -1667,13 +1665,17 @@ static void ScriptCmd_createsprite(void)
else
argVar *= -1;
- subpriority = sub_80A82E4(gBattleAnimAttacker) + (s8)(argVar);
+ subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) + (s8)(argVar);
}
if (subpriority < 3)
subpriority = 3;
- CreateSpriteAndAnimate(template, GetBattlerSpriteCoord(gBattleAnimTarget, 2), GetBattlerSpriteCoord(gBattleAnimTarget, 3), subpriority);
+ CreateSpriteAndAnimate(
+ template,
+ GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2),
+ GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET),
+ subpriority);
gAnimVisualTaskCount++;
}
@@ -3031,12 +3033,12 @@ static void ScriptCmd_doublebattle_2D(void)
{
if (wantedBattler == ANIM_ATTACKER)
{
- r4 = sub_80A8364(gBattleAnimAttacker);
+ r4 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
}
else
{
- r4 = sub_80A8364(gBattleAnimTarget);
+ r4 = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
}
if (spriteId != 0xFF)
@@ -3066,12 +3068,12 @@ static void ScriptCmd_doublebattle_2E(void)
{
if (wantedBattler == ANIM_ATTACKER)
{
- r4 = sub_80A8364(gBattleAnimAttacker);
+ r4 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
}
else
{
- r4 = sub_80A8364(gBattleAnimTarget);
+ r4 = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
}
diff --git a/src/battle_anim_80A5C6C.c b/src/battle_anim_80A5C6C.c
index 8ba1a8222..e17dde078 100644
--- a/src/battle_anim_80A5C6C.c
+++ b/src/battle_anim_80A5C6C.c
@@ -35,24 +35,22 @@ extern const union AffineAnimCmd *gUnknown_082FF6C0[];
// This file's functions.
void sub_80A64EC(struct Sprite *sprite);
-void sub_80A653C(struct Sprite *sprite);
void sub_80A6FB4(struct Sprite *sprite);
void sub_80A7144(struct Sprite *sprite);
void sub_80A791C(struct Sprite *sprite);
void sub_80A8DFC(struct Sprite *sprite);
void sub_80A8E88(struct Sprite *sprite);
-void sub_80A7E6C(u8 spriteId);
-u16 sub_80A7F18(u8 spriteId);
+void SetBattlerSpriteYOffsetFromYScale(u8 spriteId);
+u16 GetBattlerYDeltaFromSpriteId(u8 spriteId);
void AnimTask_BlendMonInAndOutSetup(struct Task *task);
void sub_80A7AFC(u8 taskId);
void sub_80A8CAC(u8 taskId);
void AnimTask_BlendMonInAndOutStep(u8 taskId);
bool8 sub_80A7238(void);
-u8 sub_80A82E4(u8 battlerId);
void sub_80A8D78(struct Task *task, u8 taskId);
// EWRAM vars
-EWRAM_DATA static union AffineAnimCmd *gUnknown_02038444 = NULL;
+EWRAM_DATA static union AffineAnimCmd *gAnimTaskAffineAnim = NULL;
// Const rom data
static const struct UCoords8 sBattlerCoords[][4] =
@@ -125,8 +123,7 @@ static const struct SpriteSheet sUnknown_08525FC0[] =
{ gMiscBlank_Gfx, 0x800, 55126, },
};
-// code
-u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId)
+u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
{
u8 retVal;
u16 species;
@@ -134,11 +131,11 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId)
if (IsContest())
{
- if (attributeId == BATTLER_COORD_3 && battlerId == 3)
- attributeId = BATTLER_COORD_Y;
+ if (coordType == BATTLER_COORD_Y_PIC_OFFSET && battlerId == 3)
+ coordType = BATTLER_COORD_Y;
}
- switch (attributeId)
+ switch (coordType)
{
case BATTLER_COORD_X:
case BATTLER_COORD_X_2:
@@ -147,15 +144,15 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId)
case BATTLER_COORD_Y:
retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y;
break;
- case BATTLER_COORD_3:
- case BATTLER_COORD_4:
+ case BATTLER_COORD_Y_PIC_OFFSET:
+ case BATTLER_COORD_Y_PIC_OFFSET_DEFAULT:
default:
if (IsContest())
{
- if (shared19348.unk4_0)
- species = shared19348.unk2;
+ if (gContestResources->field_18->unk4_0)
+ species = gContestResources->field_18->unk2;
else
- species = shared19348.species;
+ species = gContestResources->field_18->species;
}
else
{
@@ -176,7 +173,7 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId)
species = spriteInfo[battlerId].transformSpecies;
}
}
- if (attributeId == BATTLER_COORD_3)
+ if (coordType == BATTLER_COORD_Y_PIC_OFFSET)
retVal = GetBattlerSpriteFinal_Y(battlerId, species, TRUE);
else
retVal = GetBattlerSpriteFinal_Y(battlerId, species, FALSE);
@@ -200,10 +197,10 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species)
{
if (IsContest())
{
- if (shared19348.unk4_0)
- personality = shared19348.unk10;
+ if (gContestResources->field_18->unk4_0)
+ personality = gContestResources->field_18->unk10;
else
- personality = shared19348.unk8;
+ personality = gContestResources->field_18->unk8;
}
else
{
@@ -308,19 +305,19 @@ u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3)
return y;
}
-u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId)
+u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType)
{
u16 species;
struct BattleSpriteInfo *spriteInfo;
- if (attributeId == BATTLER_COORD_3 || attributeId == BATTLER_COORD_4)
+ if (coordType == BATTLER_COORD_Y_PIC_OFFSET || coordType == BATTLER_COORD_Y_PIC_OFFSET_DEFAULT)
{
if (IsContest())
{
- if (shared19348.unk4_0)
- species = shared19348.unk2;
+ if (gContestResources->field_18->unk4_0)
+ species = gContestResources->field_18->unk2;
else
- species = shared19348.species;
+ species = gContestResources->field_18->species;
}
else
{
@@ -330,20 +327,20 @@ u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId)
else
species = spriteInfo[battlerId].transformSpecies;
}
- if (attributeId == BATTLER_COORD_3)
+ if (coordType == BATTLER_COORD_Y_PIC_OFFSET)
return GetBattlerSpriteFinal_Y(battlerId, species, TRUE);
else
return GetBattlerSpriteFinal_Y(battlerId, species, FALSE);
}
else
{
- return GetBattlerSpriteCoord(battlerId, attributeId);
+ return GetBattlerSpriteCoord(battlerId, coordType);
}
}
u8 GetBattlerSpriteDefault_Y(u8 battlerId)
{
- return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_4);
+ return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT);
}
u8 GetSubstituteSpriteDefault_Y(u8 battlerId)
@@ -387,11 +384,11 @@ u8 GetBattlerYCoordWithElevation(u8 battlerId)
return y;
}
-u8 GetAnimBattlerSpriteId(u8 which)
+u8 GetAnimBattlerSpriteId(u8 animBattler)
{
u8 *sprites;
- if (which == ANIM_ATTACKER)
+ if (animBattler == ANIM_ATTACKER)
{
if (IsBattlerSpritePresent(gBattleAnimAttacker))
{
@@ -403,7 +400,7 @@ u8 GetAnimBattlerSpriteId(u8 which)
return 0xff;
}
}
- else if (which == ANIM_TARGET)
+ else if (animBattler == ANIM_TARGET)
{
if (IsBattlerSpritePresent(gBattleAnimTarget))
{
@@ -415,7 +412,7 @@ u8 GetAnimBattlerSpriteId(u8 which)
return 0xff;
}
}
- else if (which == ANIM_ATK_PARTNER)
+ else if (animBattler == ANIM_ATK_PARTNER)
{
if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
return 0xff;
@@ -443,7 +440,7 @@ void SetCallbackToStoredInData6(struct Sprite *sprite)
sprite->callback = (void (*)(struct Sprite *))callback;
}
-void sub_80A62EC(struct Sprite *sprite)
+void TranslateSpriteInCircleOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
{
@@ -462,7 +459,7 @@ void sub_80A62EC(struct Sprite *sprite)
}
}
-void sub_80A634C(struct Sprite *sprite)
+void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
{
@@ -539,7 +536,7 @@ void WaitAnimForDuration(struct Sprite *sprite)
void sub_80A64D0(struct Sprite *sprite)
{
sub_80A64EC(sprite);
- sprite->callback = sub_80A653C;
+ sprite->callback = TranslateSpriteOverDuration;
sprite->callback(sprite);
}
@@ -557,7 +554,7 @@ void sub_80A64EC(struct Sprite *sprite)
sprite->data[1] = old;
}
-void sub_80A653C(struct Sprite *sprite)
+void TranslateSpriteOverDuration(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -571,7 +568,7 @@ void sub_80A653C(struct Sprite *sprite)
}
}
-void sub_80A656C(struct Sprite *sprite)
+void AnimTranslateLinearSimple(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -613,7 +610,7 @@ void sub_80A65EC(struct Sprite *sprite)
sprite->callback = sub_80A64D0;
}
-void sub_80A6630(struct Sprite *sprite)
+void TranslateMonBGUntil(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -627,7 +624,7 @@ void sub_80A6630(struct Sprite *sprite)
}
}
-// Same as sub_80A6630, but it operates on sub-pixel values
+// Same as TranslateMonBGUntil, but it operates on sub-pixel values
// to handle slower translations.
void sub_80A6680(struct Sprite *sprite)
{
@@ -666,7 +663,7 @@ void sub_80A66DC(struct Sprite *sprite)
}
}
-void move_anim_8074EE0(struct Sprite *sprite)
+void DestroySpriteAndMatrix(struct Sprite *sprite)
{
FreeSpriteOamMatrix(sprite);
DestroyAnimSprite(sprite);
@@ -684,16 +681,16 @@ void sub_80A6760(struct Sprite *sprite)
void sub_80A67A4(struct Sprite *sprite)
{
ResetPaletteStructByUid(sprite->data[5]);
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
-void sub_80A67BC(struct Sprite *sprite)
+void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
SetCallbackToStoredInData6(sprite);
}
-void sub_80A67D8(struct Sprite *sprite)
+void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite)
{
if (sprite->animEnded)
SetCallbackToStoredInData6(sprite);
@@ -713,31 +710,33 @@ void sub_80A6814(u8 taskId)
DestroyAnimVisualTask(taskId);
}
-void sub_80A6838(struct Sprite *sprite)
+void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
}
-void sub_80A6864(struct Sprite *sprite, s16 a2)
+// Sets the initial x offset of the anim sprite depending on the horizontal orientation
+// of the two involved mons.
+void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset)
{
- u16 v1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- u16 v2 = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ u16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
+ u16 targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
- if (v1 > v2)
+ if (attackerX > targetX)
{
- sprite->pos1.x -= a2;
+ sprite->pos1.x -= xOffset;
}
- else if (v1 < v2)
+ else if (attackerX < targetX)
{
- sprite->pos1.x += a2;
+ sprite->pos1.x += xOffset;
}
else
{
- if (GetBattlerSide(gBattleAnimAttacker) != 0)
- sprite->pos1.x -= a2;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= xOffset;
else
- sprite->pos1.x += a2;
+ sprite->pos1.x += xOffset;
}
}
@@ -752,7 +751,7 @@ void InitAnimArcTranslation(struct Sprite *sprite)
bool8 TranslateAnimArc(struct Sprite *sprite)
{
- if (TranslateAnimLinear(sprite))
+ if (AnimTranslateLinear(sprite))
return TRUE;
sprite->data[7] += sprite->data[6];
sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
@@ -761,7 +760,7 @@ bool8 TranslateAnimArc(struct Sprite *sprite)
bool8 sub_80A6934(struct Sprite *sprite)
{
- if (TranslateAnimLinear(sprite))
+ if (AnimTranslateLinear(sprite))
return TRUE;
sprite->data[7] += sprite->data[6];
sprite->pos2.x += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
@@ -776,30 +775,32 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite)
sprite->pos2.y = 0;
}
-void sub_80A6980(struct Sprite *sprite, bool8 a2)
+void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets)
{
- if (!a2)
+ // Battle anim sprites are automatically created at the anim target's center, which
+ // is why there is no else clause for the "respectMonPicOffsets" check.
+ if (!respectMonPicOffsets)
{
- sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X);
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y);
}
- sub_80A6864(sprite, gBattleAnimArgs[0]);
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
sprite->pos1.y += gBattleAnimArgs[1];
}
-void InitAnimSpritePos(struct Sprite *sprite, u8 a2)
+void InitSpritePosToAnimAttacker(struct Sprite *sprite, u8 respectMonPicOffsets)
{
- if (!a2)
+ if (!respectMonPicOffsets)
{
- sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X);
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
}
- sub_80A6864(sprite, gBattleAnimArgs[0]);
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
sprite->pos1.y += gBattleAnimArgs[1];
}
@@ -909,7 +910,7 @@ void sub_80A6B90(struct UnknownAnimStruct2 *unk, u32 arg1)
}
}
-void sub_80A6BFC(struct UnknownAnimStruct2 *unk)
+void sub_80A6BFC(struct UnknownAnimStruct2 *unk, u8 unused)
{
unk->bgTiles = gUnknown_0202305C;
unk->unk4 = (u16 *)gUnknown_02023060;
@@ -920,7 +921,7 @@ void sub_80A6BFC(struct UnknownAnimStruct2 *unk)
unk->tilesOffset = 0;
unk->unkC = 0;
}
- else if (sub_80A8364(gBattleAnimAttacker) == 1)
+ else if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
{
unk->unk8 = 8;
unk->bgId = 1;
@@ -1061,7 +1062,7 @@ void sub_80A6F14(struct Sprite *sprite)
sprite->callback(sprite);
}
-bool8 TranslateAnimLinear(struct Sprite *sprite)
+bool8 AnimTranslateLinear(struct Sprite *sprite)
{
u16 v1, v2, x, y;
@@ -1093,14 +1094,14 @@ bool8 TranslateAnimLinear(struct Sprite *sprite)
void sub_80A6F98(struct Sprite *sprite)
{
- if (TranslateAnimLinear(sprite))
+ if (AnimTranslateLinear(sprite))
SetCallbackToStoredInData6(sprite);
}
void sub_80A6FB4(struct Sprite *sprite)
{
sub_8039E9C(sprite);
- if (TranslateAnimLinear(sprite))
+ if (AnimTranslateLinear(sprite))
SetCallbackToStoredInData6(sprite);
}
@@ -1120,14 +1121,14 @@ void sub_80A7000(struct Sprite *sprite)
sprite->callback(sprite);
}
-void sub_80A7028(struct Sprite *sprite)
+static void InitAnimFastLinearTranslation(struct Sprite *sprite)
{
- int x = sprite->data[2] - sprite->data[1];
- int y = sprite->data[4] - sprite->data[3];
- bool8 x_sign = x < 0;
- bool8 y_sign = y < 0;
- u16 x2 = abs(x) << 4;
- u16 y2 = abs(y) << 4;
+ int xDiff = sprite->data[2] - sprite->data[1];
+ int yDiff = sprite->data[4] - sprite->data[3];
+ bool8 x_sign = xDiff < 0;
+ bool8 y_sign = yDiff < 0;
+ u16 x2 = abs(xDiff) << 4;
+ u16 y2 = abs(yDiff) << 4;
x2 /= sprite->data[0];
y2 /= sprite->data[0];
@@ -1148,16 +1149,16 @@ void sub_80A7028(struct Sprite *sprite)
sprite->data[3] = 0;
}
-void sub_80A70C0(struct Sprite *sprite)
+void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- sub_80A7028(sprite);
+ InitAnimFastLinearTranslation(sprite);
sprite->callback = sub_80A7144;
sprite->callback(sprite);
}
-bool8 sub_80A70E8(struct Sprite *sprite)
+bool8 AnimFastTranslateLinear(struct Sprite *sprite)
{
u16 v1, v2, x, y;
@@ -1189,27 +1190,27 @@ bool8 sub_80A70E8(struct Sprite *sprite)
void sub_80A7144(struct Sprite *sprite)
{
- if (sub_80A70E8(sprite))
+ if (AnimFastTranslateLinear(sprite))
SetCallbackToStoredInData6(sprite);
}
-void sub_80A7160(struct Sprite *sprite)
+void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite)
{
- int v1 = abs(sprite->data[2] - sprite->data[1]) << 4;
- sprite->data[0] = v1 / sprite->data[0];
- sub_80A7028(sprite);
+ int xDiff = abs(sprite->data[2] - sprite->data[1]) << 4;
+ sprite->data[0] = xDiff / sprite->data[0];
+ InitAnimFastLinearTranslation(sprite);
}
void sub_80A718C(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- sub_80A7160(sprite);
+ InitAnimFastLinearTranslationWithSpeed(sprite);
sprite->callback = sub_80A7144;
sprite->callback(sprite);
}
-void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation)
+void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation)
{
int i;
struct ObjAffineSrcData src;
@@ -1243,7 +1244,7 @@ bool8 sub_80A7238(void)
}
}
-void sub_80A7270(u8 spriteId, u8 objMode)
+void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode)
{
u8 battlerId = gSprites[spriteId].data[0];
@@ -1252,32 +1253,34 @@ void sub_80A7270(u8 spriteId, u8 objMode)
gSprites[spriteId].oam.objMode = objMode;
gSprites[spriteId].affineAnimPaused = TRUE;
if (!IsContest() && !gSprites[spriteId].oam.affineMode)
- gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battlerId].field_6;
- gSprites[spriteId].oam.affineMode = 3;
+ gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battlerId].matrixNum;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
}
-void sub_80A7344(u8 spriteId)
+void ResetSpriteRotScale(u8 spriteId)
{
- obj_id_set_rotscale(spriteId, 0x100, 0x100, 0);
- gSprites[spriteId].oam.affineMode = 1;
+ SetSpriteRotScale(spriteId, 0x100, 0x100, 0);
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.objMode = 0;
gSprites[spriteId].affineAnimPaused = FALSE;
CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
}
-void sub_80A73A0(u8 spriteId)
+// Sets the sprite's y offset equal to the y displacement caused by the
+// matrix's rotation.
+void SetBattlerSpriteYOffsetFromRotation(u8 spriteId)
{
- u16 matrix = gSprites[spriteId].oam.matrixNum;
- s16 c = gOamMatrices[matrix].c;
-
+ u16 matrixNum = gSprites[spriteId].oam.matrixNum;
+ // The "c" component of the battler sprite matrix contains the sine of the rotation angle divided by some scale amount.
+ s16 c = gOamMatrices[matrixNum].c;
if (c < 0)
c = -c;
+
gSprites[spriteId].pos2.y = c >> 3;
}
-// related to obj_id_set_rotscale
-void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation)
+void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation)
{
int i;
struct ObjAffineSrcData src;
@@ -1286,7 +1289,7 @@ void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 ro
if (sprite->oam.affineMode & 1)
{
sprite->affineAnimPaused = TRUE;
- if (a2)
+ if (recalcCenterVector)
CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
src.xScale = xScale;
src.yScale = yScale;
@@ -1304,7 +1307,7 @@ void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 ro
void sub_80A749C(struct Sprite *sprite)
{
- sub_80A73E0(sprite, TRUE, 0x100, 0x100, 0);
+ TrySetSpriteRotScale(sprite, TRUE, 0x100, 0x100, 0);
sprite->affineAnimPaused = FALSE;
CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
}
@@ -1320,32 +1323,32 @@ u16 ArcTan2Neg(s16 a, s16 b)
return -var;
}
-void sub_80A750C(u16 a1, bool8 a2)
+void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor)
{
int i;
- struct PlttData *c;
- struct PlttData *c2;
+ struct PlttData *originalColor;
+ struct PlttData *destColor;
u16 average;
- a1 *= 0x10;
+ paletteNum *= 16;
- if (!a2)
+ if (!restoreOriginalColor)
{
- for (i = 0; i < 0x10; i++)
+ for (i = 0; i < 16; i++)
{
- c = (struct PlttData *)&gPlttBufferUnfaded[a1 + i];
- average = c->r + c->g + c->b;
+ originalColor = (struct PlttData *)&gPlttBufferUnfaded[paletteNum + i];
+ average = originalColor->r + originalColor->g + originalColor->b;
average /= 3;
- c2 = (struct PlttData *)&gPlttBufferFaded[a1 + i];
- c2->r = average;
- c2->g = average;
- c2->b = average;
+ destColor = (struct PlttData *)&gPlttBufferFaded[paletteNum + i];
+ destColor->r = average;
+ destColor->g = average;
+ destColor->b = average;
}
}
else
{
- CpuCopy32(&gPlttBufferUnfaded[a1], &gPlttBufferFaded[a1], 0x20);
+ CpuCopy32(&gPlttBufferUnfaded[paletteNum], &gPlttBufferFaded[paletteNum], 32);
}
}
@@ -1472,15 +1475,15 @@ void sub_80A77C8(struct Sprite *sprite)
else
var = FALSE;
if (!gBattleAnimArgs[2])
- InitAnimSpritePos(sprite, var);
+ InitSpritePosToAnimAttacker(sprite, var);
else
- sub_80A6980(sprite, var);
+ InitSpritePosToAnimTarget(sprite, var);
sprite->data[0]++;
}
else if (sprite->animEnded || sprite->affineAnimEnded)
{
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
}
@@ -1495,7 +1498,7 @@ void sub_80A77C8(struct Sprite *sprite)
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
{
bool8 v1;
- u8 attributeId;
+ u8 coordType;
if (!(gBattleAnimArgs[5] & 0xff00))
v1 = TRUE;
@@ -1503,24 +1506,24 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
v1 = FALSE;
if (!(gBattleAnimArgs[5] & 0xff))
- attributeId = BATTLER_COORD_3;
+ coordType = BATTLER_COORD_Y_PIC_OFFSET;
else
- attributeId = BATTLER_COORD_Y;
+ coordType = BATTLER_COORD_Y;
- InitAnimSpritePos(sprite, v1);
+ InitSpritePosToAnimAttacker(sprite, v1);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, attributeId) + gBattleAnimArgs[3];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
void sub_80A78AC(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
if (GetBattlerSide(gBattleAnimAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
@@ -1545,7 +1548,7 @@ void sub_80A7938(struct Sprite *sprite)
if (!gBattleAnimArgs[6])
{
r4 = TRUE;
- attributeId = BATTLER_COORD_3;
+ attributeId = BATTLER_COORD_Y_PIC_OFFSET;
}
else
{
@@ -1554,17 +1557,17 @@ void sub_80A7938(struct Sprite *sprite)
}
if (!gBattleAnimArgs[5])
{
- InitAnimSpritePos(sprite, r4);
+ InitSpritePosToAnimAttacker(sprite, r4);
battlerId = gBattleAnimAttacker;
}
else
{
- sub_80A6980(sprite, r4);
+ InitSpritePosToAnimTarget(sprite, r4);
battlerId = gBattleAnimTarget;
}
if (GetBattlerSide(gBattleAnimAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
- sub_80A6980(sprite, r4);
+ InitSpritePosToAnimTarget(sprite, r4);
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(battlerId, attributeId) + gBattleAnimArgs[3];
@@ -1572,19 +1575,19 @@ void sub_80A7938(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
-s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 whichBattler)
+s16 CloneBattlerSpriteWithBlend(u8 animBattler)
{
u16 i;
- u8 spriteId = GetAnimBattlerSpriteId(whichBattler);
+ u8 spriteId = GetAnimBattlerSpriteId(animBattler);
- if (spriteId != 0xff)
+ if (spriteId != 0xFF)
{
for (i = 0; i < MAX_SPRITES; i++)
{
if (!gSprites[i].inUse)
{
gSprites[i] = gSprites[spriteId];
- gSprites[i].oam.objMode = 1;
+ gSprites[i].oam.objMode = ST_OAM_OBJ_BLEND;
gSprites[i].invisible = FALSE;
return i;
}
@@ -1731,49 +1734,49 @@ void sub_80A7CB4(u8 task)
AnimTask_BlendMonInAndOutSetup(&gTasks[task]);
}
-void sub_80A7CFC(struct Task *task, u8 a2, const void *a3)
+void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds)
{
task->data[7] = 0;
task->data[8] = 0;
task->data[9] = 0;
- task->data[15] = a2;
+ task->data[15] = spriteId;
task->data[10] = 0x100;
task->data[11] = 0x100;
task->data[12] = 0;
- sub_80A8048(&task->data[13], &task->data[14], a3);
- sub_80A7270(a2, 0);
+ StorePointerInVars(&task->data[13], &task->data[14], affineAnimCmds);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
}
-bool8 sub_80A7D34(struct Task *task)
+bool8 RunAffineAnimFromTaskData(struct Task *task)
{
- gUnknown_02038444 = sub_80A8050(task->data[13], task->data[14]) + (task->data[7] << 3);
- switch (gUnknown_02038444->type)
+ gAnimTaskAffineAnim = LoadPointerFromVars(task->data[13], task->data[14]) + (task->data[7] << 3);
+ switch (gAnimTaskAffineAnim->type)
{
default:
- if (!gUnknown_02038444->frame.duration)
+ if (!gAnimTaskAffineAnim->frame.duration)
{
- task->data[10] = gUnknown_02038444->frame.xScale;
- task->data[11] = gUnknown_02038444->frame.yScale;
- task->data[12] = gUnknown_02038444->frame.rotation;
+ task->data[10] = gAnimTaskAffineAnim->frame.xScale;
+ task->data[11] = gAnimTaskAffineAnim->frame.yScale;
+ task->data[12] = gAnimTaskAffineAnim->frame.rotation;
task->data[7]++;
- gUnknown_02038444++;
+ gAnimTaskAffineAnim++;
}
- task->data[10] += gUnknown_02038444->frame.xScale;
- task->data[11] += gUnknown_02038444->frame.yScale;
- task->data[12] += gUnknown_02038444->frame.rotation;
- obj_id_set_rotscale(task->data[15], task->data[10], task->data[11], task->data[12]);
- sub_80A7E6C(task->data[15]);
- if (++task->data[8] >= gUnknown_02038444->frame.duration)
+ task->data[10] += gAnimTaskAffineAnim->frame.xScale;
+ task->data[11] += gAnimTaskAffineAnim->frame.yScale;
+ task->data[12] += gAnimTaskAffineAnim->frame.rotation;
+ SetSpriteRotScale(task->data[15], task->data[10], task->data[11], task->data[12]);
+ SetBattlerSpriteYOffsetFromYScale(task->data[15]);
+ if (++task->data[8] >= gAnimTaskAffineAnim->frame.duration)
{
task->data[8] = 0;
task->data[7]++;
}
break;
case AFFINEANIMCMDTYPE_JUMP:
- task->data[7] = gUnknown_02038444->jump.target;
+ task->data[7] = gAnimTaskAffineAnim->jump.target;
break;
case AFFINEANIMCMDTYPE_LOOP:
- if (gUnknown_02038444->loop.count)
+ if (gAnimTaskAffineAnim->loop.count)
{
if (task->data[9])
{
@@ -1785,7 +1788,7 @@ bool8 sub_80A7D34(struct Task *task)
}
else
{
- task->data[9] = gUnknown_02038444->loop.count;
+ task->data[9] = gAnimTaskAffineAnim->loop.count;
}
if (!task->data[7])
{
@@ -1794,8 +1797,8 @@ bool8 sub_80A7D34(struct Task *task)
for (;;)
{
task->data[7]--;
- gUnknown_02038444--;
- if (gUnknown_02038444->type == AFFINEANIMCMDTYPE_LOOP)
+ gAnimTaskAffineAnim--;
+ if (gAnimTaskAffineAnim->type == AFFINEANIMCMDTYPE_LOOP)
{
task->data[7]++;
return TRUE;
@@ -1808,36 +1811,40 @@ bool8 sub_80A7D34(struct Task *task)
break;
case AFFINEANIMCMDTYPE_END:
gSprites[task->data[15]].pos2.y = 0;
- sub_80A7344(task->data[15]);
+ ResetSpriteRotScale(task->data[15]);
return FALSE;
}
return TRUE;
}
-void sub_80A7E6C(u8 spriteId)
+// Sets the sprite's y offset equal to the y displacement caused by the
+// matrix's scale in the y dimension.
+void SetBattlerSpriteYOffsetFromYScale(u8 spriteId)
{
- int var = 0x40 - sub_80A7F18(spriteId) * 2;
+ int var = 64 - GetBattlerYDeltaFromSpriteId(spriteId) * 2;
u16 matrix = gSprites[spriteId].oam.matrixNum;
int var2 = (var << 8) / gOamMatrices[matrix].d;
- if (var2 > 0x80)
- var2 = 0x80;
+ if (var2 > 128)
+ var2 = 128;
gSprites[spriteId].pos2.y = (var - var2) / 2;
}
-void sub_80A7EC0(u8 spriteId, u8 spriteId2)
+// Sets the sprite's y offset equal to the y displacement caused by another sprite
+// matrix's scale in the y dimension.
+void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId)
{
- int var = 0x40 - sub_80A7F18(spriteId2) * 2;
+ int var = 64 - GetBattlerYDeltaFromSpriteId(otherSpriteId) * 2;
u16 matrix = gSprites[spriteId].oam.matrixNum;
int var2 = (var << 8) / gOamMatrices[matrix].d;
- if (var2 > 0x80)
- var2 = 0x80;
+ if (var2 > 128)
+ var2 = 128;
gSprites[spriteId].pos2.y = (var - var2) / 2;
}
-u16 sub_80A7F18(u8 spriteId)
+u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
{
struct BattleSpriteInfo *spriteInfo;
u8 battlerId = gSprites[spriteId].data[0];
@@ -1850,7 +1857,7 @@ u16 sub_80A7F18(u8 spriteId)
{
if (IsContest())
{
- species = shared19348.species;
+ species = gContestResources->field_18->species;
return gMonBackPicCoords[species].y_offset;
}
else
@@ -1884,18 +1891,18 @@ u16 sub_80A7F18(u8 spriteId)
}
}
}
- return 0x40;
+ return 64;
}
-void sub_80A8048(s16 *bottom, s16 *top, const void *ptr)
+void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr)
{
- *bottom = ((intptr_t) ptr) & 0xffff;
- *top = (((intptr_t) ptr) >> 16) & 0xffff;
+ *lo = ((intptr_t) ptr) & 0xffff;
+ *hi = (((intptr_t) ptr) >> 16) & 0xffff;
}
-void *sub_80A8050(s16 bottom, s16 top)
+void *LoadPointerFromVars(s16 lo, s16 hi)
{
- return (void *)((u16)bottom | ((u16)top << 16));
+ return (void *)((u16)lo | ((u16)hi << 16));
}
void sub_80A805C(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7)
@@ -1925,9 +1932,9 @@ u8 sub_80A80C8(struct Task *task)
task->data[9] = task->data[13];
task->data[10] = task->data[14];
}
- obj_id_set_rotscale(task->data[15], task->data[9], task->data[10], 0);
+ SetSpriteRotScale(task->data[15], task->data[9], task->data[10], 0);
if (task->data[8])
- sub_80A7E6C(task->data[15]);
+ SetBattlerSpriteYOffsetFromYScale(task->data[15]);
else
gSprites[task->data[15]].pos2.y = 0;
return task->data[8];
@@ -1969,16 +1976,16 @@ void sub_80A8278(void)
{
if (IsBattlerSpriteVisible(i))
{
- gSprites[gBattlerSpriteIds[i]].subpriority = sub_80A82E4(i);
+ gSprites[gBattlerSpriteIds[i]].subpriority = GetBattlerSpriteSubpriority(i);
gSprites[gBattlerSpriteIds[i]].oam.priority = 2;
}
}
}
-u8 sub_80A82E4(u8 battlerId)
+u8 GetBattlerSpriteSubpriority(u8 battlerId)
{
u8 position;
- u8 ret;
+ u8 subpriority;
if (IsContest())
{
@@ -1991,18 +1998,19 @@ u8 sub_80A82E4(u8 battlerId)
{
position = GetBattlerPosition(battlerId);
if (position == B_POSITION_PLAYER_LEFT)
- ret = 30;
+ subpriority = 30;
else if (position == B_POSITION_PLAYER_RIGHT)
- ret = 20;
+ subpriority = 20;
else if (position == B_POSITION_OPPONENT_LEFT)
- ret = 40;
+ subpriority = 40;
else
- ret = 50;
+ subpriority = 50;
}
- return ret;
+
+ return subpriority;
}
-u8 sub_80A8328(u8 battlerId)
+u8 GetBattlerSpriteBGPriority(u8 battlerId)
{
u8 position = GetBattlerPosition(battlerId);
@@ -2014,7 +2022,7 @@ u8 sub_80A8328(u8 battlerId)
return GetAnimBgAttribute(1, BG_ANIM_PRIORITY);
}
-u8 sub_80A8364(u8 battlerId)
+u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
{
if (!IsContest())
{
@@ -2101,15 +2109,15 @@ s16 sub_80A861C(u8 battlerId, u8 a2)
if (IsContest())
{
- if (shared19348.unk4_0)
+ if (gContestResources->field_18->unk4_0)
{
- species = shared19348.unk2;
- personality = shared19348.unk10;
+ species = gContestResources->field_18->unk2;
+ personality = gContestResources->field_18->unk10;
}
else
{
- species = shared19348.species;
- personality = shared19348.unk8;
+ species = gContestResources->field_18->species;
+ personality = gContestResources->field_18->unk8;
}
if (species == SPECIES_UNOWN)
{
@@ -2225,36 +2233,38 @@ s16 sub_80A861C(u8 battlerId, u8 a2)
}
}
-void SetAverageBattlerPositions(u8 battlerId, bool8 a2, s16 *x, s16 *y)
+void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y)
{
- u8 v1, v2;
- s16 v3, v4;
- s16 v5, v6;
+ u8 xCoordType, yCoordType;
+ s16 battlerX, battlerY;
+ s16 partnerX, partnerY;
- if (!a2)
+ if (!respectMonPicOffsets)
{
- v1 = 0;
- v2 = 1;
+ xCoordType = BATTLER_COORD_X;
+ yCoordType = BATTLER_COORD_Y;
}
else
{
- v1 = 2;
- v2 = 3;
+ xCoordType = BATTLER_COORD_X_2;
+ yCoordType = BATTLER_COORD_Y_PIC_OFFSET;
}
- v3 = GetBattlerSpriteCoord(battlerId, v1);
- v4 = GetBattlerSpriteCoord(battlerId, v2);
+
+ battlerX = GetBattlerSpriteCoord(battlerId, xCoordType);
+ battlerY = GetBattlerSpriteCoord(battlerId, yCoordType);
if (IsDoubleBattle() && !IsContest())
{
- v5 = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), v1);
- v6 = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), v2);
+ partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), xCoordType);
+ partnerY = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), yCoordType);
}
else
{
- v5 = v3;
- v6 = v4;
+ partnerX = battlerX;
+ partnerY = battlerY;
}
- *x = (v3 + v5) / 2;
- *y = (v4 + v6) / 2;
+
+ *x = (battlerX + partnerX) / 2;
+ *y = (battlerY + partnerY) / 2;
}
u8 sub_80A89C8(int battlerId, u8 spriteId, int species)
@@ -2271,7 +2281,7 @@ u8 sub_80A89C8(int battlerId, u8 spriteId, int species)
void sub_80A8A6C(struct Sprite *sprite)
{
- sub_80A6838(sprite);
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker))
{
sprite->pos1.x -= gBattleAnimArgs[0];
@@ -2287,7 +2297,7 @@ void sub_80A8A6C(struct Sprite *sprite)
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
sprite->data[5] = gBattleAnimArgs[5];
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80A66DC;
}
@@ -2308,19 +2318,19 @@ void sub_80A8AEC(struct Sprite *sprite)
sprite->data[3] = gBattleAnimArgs[4];
sprite->data[5] = gBattleAnimArgs[5];
StartSpriteAnim(sprite, gBattleAnimArgs[6]);
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80A66DC;
}
void sub_80A8B64(struct Sprite *sprite)
{
- sub_80A6838(sprite);
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker))
sprite->pos1.x -= gBattleAnimArgs[0];
else
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
- sprite->callback = sub_80A67D8;
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -2340,7 +2350,7 @@ void sub_80A8BC4(u8 taskId)
dest = (task->data[4] + 0x10) * 0x10;
src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10;
- task->data[6] = sub_80A82E4(gBattleAnimAttacker);
+ task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
if (task->data[6] == 20 || task->data[6] == 40)
task->data[6] = 2;
else
@@ -2385,7 +2395,7 @@ void sub_80A8CAC(u8 taskId)
void sub_80A8D78(struct Task *task, u8 taskId)
{
- s16 spriteId = duplicate_obj_of_side_rel2move_in_transparent_mode(0);
+ s16 spriteId = CloneBattlerSpriteWithBlend(0);
if (spriteId >= 0)
{
gSprites[spriteId].oam.priority = task->data[6];
@@ -2411,7 +2421,7 @@ void sub_80A8DFC(struct Sprite *sprite)
void sub_80A8E30(struct Sprite *sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_3);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
if (!GetBattlerSide(gBattleAnimAttacker))
sprite->data[0] = 5;
else
diff --git a/src/battle_anim_80A9C70.c b/src/battle_anim_80A9C70.c
index 44c3ef79b..001f99d7f 100644
--- a/src/battle_anim_80A9C70.c
+++ b/src/battle_anim_80A9C70.c
@@ -175,7 +175,7 @@ static void sub_80A9E78(struct Sprite *sprite)
void sub_80A9EF4(u8 taskId)
{
s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - 32;
- s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_3) - 36;
+ s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) - 36;
u8 spriteId;
if (IsContest())
diff --git a/src/battle_anim_80D51AC.c b/src/battle_anim_80D51AC.c
index bfd0635f6..34eee7376 100644
--- a/src/battle_anim_80D51AC.c
+++ b/src/battle_anim_80D51AC.c
@@ -441,14 +441,14 @@ static void DoHorizontalLunge(struct Sprite *sprite)
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
sprite->data[4] = gBattleAnimArgs[0];
StoreSpriteCallbackInData6(sprite, ReverseHorizontalLungeDirection);
- sprite->callback = sub_80A6630;
+ sprite->callback = TranslateMonBGUntil;
}
static void ReverseHorizontalLungeDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[1] = -sprite->data[1];
- sprite->callback = sub_80A6630;
+ sprite->callback = TranslateMonBGUntil;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -468,14 +468,14 @@ static void DoVerticalDip(struct Sprite *sprite)
sprite->data[3] = spriteId;
sprite->data[4] = gBattleAnimArgs[0];
StoreSpriteCallbackInData6(sprite, ReverseVerticalDipDirection);
- sprite->callback = sub_80A6630;
+ sprite->callback = TranslateMonBGUntil;
}
static void ReverseVerticalDipDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[2] = -sprite->data[2];
- sprite->callback = sub_80A6630;
+ sprite->callback = TranslateMonBGUntil;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -834,7 +834,7 @@ void AnimTask_ScaleMonAndRestore(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
- sub_80A7270(spriteId, gBattleAnimArgs[4]);
+ PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]);
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1];
gTasks[taskId].data[2] = gBattleAnimArgs[2];
@@ -851,7 +851,7 @@ void AnimTask_ScaleMonAndRestoreStep(u8 taskId)
gTasks[taskId].data[10] += gTasks[taskId].data[0];
gTasks[taskId].data[11] += gTasks[taskId].data[1];
spriteId = gTasks[taskId].data[4];
- obj_id_set_rotscale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[11], 0);
+ SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[11], 0);
if (--gTasks[taskId].data[2] == 0)
{
if (gTasks[taskId].data[3] > 0)
@@ -863,7 +863,7 @@ void AnimTask_ScaleMonAndRestoreStep(u8 taskId)
}
else
{
- sub_80A7344(spriteId);
+ ResetSpriteRotScale(spriteId);
DestroyAnimVisualTask(taskId);
return;
}
@@ -874,7 +874,7 @@ void sub_80D6134(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
- sub_80A7270(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = gBattleAnimArgs[0];
if (gBattleAnimArgs[3] != 1)
@@ -918,7 +918,7 @@ void sub_80D622C(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
- sub_80A7270(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = gBattleAnimArgs[0];
if (gBattleAnimArgs[2] == 0)
@@ -955,17 +955,17 @@ void sub_80D622C(u8 taskId)
void sub_80D6308(u8 taskId)
{
gTasks[taskId].data[3] += gTasks[taskId].data[4];
- obj_id_set_rotscale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]);
+ SetSpriteRotScale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]);
if (gTasks[taskId].data[7])
{
- sub_80A73A0(gTasks[taskId].data[5]);
+ SetBattlerSpriteYOffsetFromRotation(gTasks[taskId].data[5]);
}
if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2])
{
switch (gTasks[taskId].data[6])
{
case 1:
- sub_80A7344(gTasks[taskId].data[5]);
+ ResetSpriteRotScale(gTasks[taskId].data[5]);
case 0:
default:
DestroyAnimVisualTask(taskId);
diff --git a/src/battle_anim_8170478.c b/src/battle_anim_8170478.c
new file mode 100755
index 000000000..502c4cdbb
--- /dev/null
+++ b/src/battle_anim_8170478.c
@@ -0,0 +1,2267 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "battle_controllers.h"
+#include "battle_interface.h"
+#include "decompress.h"
+#include "dma3.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "m4a.h"
+#include "main.h"
+#include "palette.h"
+#include "pokeball.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "util.h"
+#include "constants/rgb.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+
+// iwram
+int gUnknown_030062DC;
+u16 gUnknown_030062E0;
+u16 gUnknown_030062E4;
+
+static void sub_8170660(u8);
+static void sub_8170A38(u8);
+static void sub_8170EF0(u8);
+static void sub_8171104(struct Sprite *);
+static void sub_8171030(u8);
+static void sub_81710A8(u8);
+static void sub_8171134(struct Sprite *);
+static void sub_8171CAC(struct Sprite *);
+static void sub_81711E8(struct Sprite *);
+static void sub_8171240(struct Sprite *);
+static void sub_817138C(struct Sprite *);
+static void sub_81713D0(struct Sprite *);
+static void sub_81717B4(struct Sprite *);
+static void sub_81714D4(struct Sprite *);
+static void sub_8171520(struct Sprite *);
+static void sub_81717D8(struct Sprite *);
+static void sub_8171AE4(struct Sprite *);
+static void sub_81717F8(struct Sprite *);
+static void sub_81719EC(struct Sprite *);
+static void sub_81718D8(struct Sprite *);
+static void sub_81719C0(struct Sprite *);
+static void sub_8171D60(u8);
+static void sub_8171AAC(struct Sprite *);
+static void sub_8171BAC(struct Sprite *);
+static void sub_8171CE8(struct Sprite *);
+static void PokeBallOpenParticleAnimation_Step1(struct Sprite *);
+static void PokeBallOpenParticleAnimation_Step2(struct Sprite *);
+static void DestroyBallOpenAnimationParticle(struct Sprite *);
+static void FanOutBallOpenParticles_Step1(struct Sprite *);
+static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *);
+static void PremierBallOpenParticleAnimation_Step1(struct Sprite *);
+static void sub_8172AB0(u8);
+static void sub_8172B40(u8);
+static void sub_8172B90(u8);
+static void sub_8172FEC(u8);
+static void sub_81731FC(struct Sprite *);
+static void sub_8173250(struct Sprite *);
+static void sub_81731B0(u8);
+static void sub_817339C(struct Sprite *);
+static void sub_81733D4(struct Sprite *);
+static void sub_8173400(struct Sprite *);
+static void PokeBallOpenParticleAnimation(u8);
+static void GreatBallOpenParticleAnimation(u8);
+static void SafariBallOpenParticleAnimation(u8);
+static void UltraBallOpenParticleAnimation(u8);
+static void MasterBallOpenParticleAnimation(u8);
+static void DiveBallOpenParticleAnimation(u8);
+static void RepeatBallOpenParticleAnimation(u8);
+static void TimerBallOpenParticleAnimation(u8);
+static void PremierBallOpenParticleAnimation(u8);
+static void sub_817330C(struct Sprite *);
+
+struct BallCaptureSuccessStarData
+{
+ s8 xOffset;
+ s8 yOffset;
+ s8 unk2;
+};
+
+static const struct BallCaptureSuccessStarData sBallCaptureSuccessStarData[] =
+{
+ {
+ .xOffset = 10,
+ .yOffset = 2,
+ .unk2 = -3,
+ },
+ {
+ .xOffset = 15,
+ .yOffset = 0,
+ .unk2 = -4,
+ },
+ {
+ .xOffset = -10,
+ .yOffset = 2,
+ .unk2 = -4,
+ },
+};
+
+const struct CompressedSpriteSheet gBallOpenParticleSpritesheets[] =
+{
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EC},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6ED},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EE},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EF},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F0},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F1},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F2},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F3},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F4},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F5},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F6},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F7},
+};
+
+const struct CompressedSpritePalette gBallOpenParticlePalettes[] =
+{
+ {gBattleAnimSpritePalette_136, 0xD6EC},
+ {gBattleAnimSpritePalette_136, 0xD6ED},
+ {gBattleAnimSpritePalette_136, 0xD6EE},
+ {gBattleAnimSpritePalette_136, 0xD6EF},
+ {gBattleAnimSpritePalette_136, 0xD6F0},
+ {gBattleAnimSpritePalette_136, 0xD6F1},
+ {gBattleAnimSpritePalette_136, 0xD6F2},
+ {gBattleAnimSpritePalette_136, 0xD6F3},
+ {gBattleAnimSpritePalette_136, 0xD6F4},
+ {gBattleAnimSpritePalette_136, 0xD6F5},
+ {gBattleAnimSpritePalette_136, 0xD6F6},
+ {gBattleAnimSpritePalette_136, 0xD6F7},
+};
+
+const union AnimCmd gUnknown_085E5154[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_085E5170[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085E5178[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085E5180[] =
+{
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085E5188[] =
+{
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_085E5194[] =
+{
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085E519C[] =
+{
+ gUnknown_085E5154,
+ gUnknown_085E5170,
+ gUnknown_085E5178,
+ gUnknown_085E5180,
+ gUnknown_085E5188,
+ gUnknown_085E5194,
+};
+
+const u8 gBallOpenParticleAnimNums[] =
+{
+ 0,
+ 0,
+ 0,
+ 5,
+ 1,
+ 2,
+ 2,
+ 3,
+ 5,
+ 5,
+ 4,
+ 4,
+};
+
+const TaskFunc gBallOpenParticleAnimationFuncs[] =
+{
+ PokeBallOpenParticleAnimation,
+ GreatBallOpenParticleAnimation,
+ SafariBallOpenParticleAnimation,
+ UltraBallOpenParticleAnimation,
+ MasterBallOpenParticleAnimation,
+ SafariBallOpenParticleAnimation,
+ DiveBallOpenParticleAnimation,
+ UltraBallOpenParticleAnimation,
+ RepeatBallOpenParticleAnimation,
+ TimerBallOpenParticleAnimation,
+ GreatBallOpenParticleAnimation,
+ PremierBallOpenParticleAnimation,
+};
+
+const struct SpriteTemplate gUnknown_085E51F0[] =
+{
+ {
+ .tileTag = 55020,
+ .paletteTag = 55020,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55021,
+ .paletteTag = 55021,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55022,
+ .paletteTag = 55022,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55023,
+ .paletteTag = 55023,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55024,
+ .paletteTag = 55024,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55025,
+ .paletteTag = 55025,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55026,
+ .paletteTag = 55026,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55027,
+ .paletteTag = 55027,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55028,
+ .paletteTag = 55028,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55029,
+ .paletteTag = 55029,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55030,
+ .paletteTag = 55030,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55031,
+ .paletteTag = 55031,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+};
+
+const u16 gUnknown_085E5310[] =
+{
+ RGB(31, 22, 30),
+ RGB(16, 23, 30),
+ RGB(23, 30, 20),
+ RGB(31, 31, 15),
+ RGB(23, 20, 28),
+ RGB(21, 31, 25),
+ RGB(12, 25, 30),
+ RGB(30, 27, 10),
+ RGB(31, 24, 16),
+ RGB(29, 30, 30),
+ RGB(31, 17, 10),
+ RGB(31, 9, 10),
+ RGB(0, 0, 0),
+ RGB(1, 16, 0),
+ RGB(3, 0, 1),
+ RGB(1, 8, 0),
+ RGB(0, 8, 0),
+ RGB(3, 8, 1),
+ RGB(6, 8, 1),
+ RGB(4, 0, 0),
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85E5338 =
+{
+ .tileTag = ANIM_TAG_UNUSED_RED_BRICK,
+ .paletteTag = ANIM_TAG_UNUSED_RED_BRICK,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_817330C,
+};
+
+const union AnimCmd gUnknown_085E5350[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085E5358[] = {
+ gUnknown_085E5350,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_085E535C =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085E5358,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_817330C,
+};
+
+extern const struct SpriteTemplate gUnknown_085CE388;
+extern const struct SpriteTemplate gUnknown_085CE3A0;
+
+void unref_sub_8170478(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+ u8 healthBoxSpriteId;
+ u8 battler;
+ u8 spriteId1, spriteId2, spriteId3, spriteId4;
+
+ battler = gBattleAnimAttacker;
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 1);
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+
+ healthBoxSpriteId = gHealthboxSpriteIds[battler];
+ spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
+ spriteId2 = gSprites[healthBoxSpriteId].data[5];
+ spriteId3 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ spriteId4 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ gSprites[healthBoxSpriteId].oam.priority = 1;
+ gSprites[spriteId1].oam.priority = 1;
+ gSprites[spriteId2].oam.priority = 1;
+ gSprites[spriteId3] = gSprites[healthBoxSpriteId];
+ gSprites[spriteId4] = gSprites[spriteId1];
+ gSprites[spriteId3].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[spriteId4].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[spriteId3].callback = SpriteCallbackDummy;
+ gSprites[spriteId4].callback = SpriteCallbackDummy;
+
+ sub_80A6B30(&unknownStruct);
+ sub_80A6D48(unknownStruct.bgId, gUnknown_08C2EA9C);
+ sub_80A6CC0(unknownStruct.bgId, gUnknown_08C2EA50, unknownStruct.tilesOffset);
+ LoadCompressedPalette(gUnknown_08C2DDA4, unknownStruct.unk8 << 4, 32);
+
+ gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32;
+ gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32;
+ gTasks[taskId].data[1] = 640;
+ gTasks[taskId].data[0] = spriteId3;
+ gTasks[taskId].data[2] = spriteId4;
+ gTasks[taskId].func = sub_8170660;
+}
+
+static void sub_8170660(u8 taskId)
+{
+ u8 spriteId1, spriteId2;
+ u8 battler;
+
+ battler = gBattleAnimAttacker;
+ gTasks[taskId].data[13] += gTasks[taskId].data[1];
+ gBattle_BG1_Y += (u16)gTasks[taskId].data[13] >> 8;
+ gTasks[taskId].data[13] &= 0xFF;
+
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (gTasks[taskId].data[11]++ > 1)
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
+ if (gTasks[taskId].data[12] == 8)
+ gTasks[taskId].data[15]++;
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[10] == 30)
+ gTasks[taskId].data[15]++;
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ > 1)
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
+ if (gTasks[taskId].data[12] == 0)
+ {
+ sub_80A477C(0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0));
+ DestroySprite(&gSprites[gTasks[taskId].data[0]]);
+ DestroySprite(&gSprites[gTasks[taskId].data[2]]);
+ SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0);
+ spriteId1 = gSprites[gHealthboxSpriteIds[battler]].oam.affineParam;
+ spriteId2 = gSprites[gHealthboxSpriteIds[battler]].data[5];
+ gSprites[gHealthboxSpriteIds[battler]].oam.priority = 1;
+ gSprites[spriteId1].oam.priority = 1;
+ gSprites[spriteId2].oam.priority = 1;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+static void sub_8170834(u8 *paletteId1, u8 *paletteId2, u8 battler)
+{
+ u8 healthBoxSpriteId;
+ u8 spriteId1, spriteId2;
+ u16 offset1, offset2;
+
+ healthBoxSpriteId = gHealthboxSpriteIds[battler];
+ spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
+ spriteId2 = gSprites[healthBoxSpriteId].data[5];
+ *paletteId1 = AllocSpritePalette(0xD709);
+ *paletteId2 = AllocSpritePalette(0xD70A);
+
+ offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100;
+ offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100;
+ LoadPalette(&gPlttBufferUnfaded[offset1], *paletteId1 * 16 + 0x100, 0x20);
+ LoadPalette(&gPlttBufferUnfaded[offset2], *paletteId2 * 16 + 0x100, 0x20);
+
+ gSprites[healthBoxSpriteId].oam.paletteNum = *paletteId1;
+ gSprites[spriteId1].oam.paletteNum = *paletteId1;
+ gSprites[spriteId2].oam.paletteNum = *paletteId2;
+}
+
+void sub_8170920(u8 taskId)
+{
+ u8 paletteId1, paletteId2;
+ sub_8170834(&paletteId1, &paletteId2, gBattleAnimAttacker);
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_817094C(u8 battler)
+{
+ u8 healthBoxSpriteId;
+ u8 spriteId1, spriteId2;
+ u8 paletteId1, paletteId2;
+
+ healthBoxSpriteId = gHealthboxSpriteIds[battler];
+ spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
+ spriteId2 = gSprites[healthBoxSpriteId].data[5];
+
+ FreeSpritePaletteByTag(0xD709);
+ FreeSpritePaletteByTag(0xD70A);
+ paletteId1 = IndexOfSpritePaletteTag(0xD6FF);
+ paletteId2 = IndexOfSpritePaletteTag(0xD704);
+ gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1;
+ gSprites[spriteId1].oam.paletteNum = paletteId1;
+ gSprites[spriteId2].oam.paletteNum = paletteId2;
+}
+
+void sub_81709EC(u8 taskId)
+{
+ sub_817094C(gBattleAnimAttacker);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8170A0C(u8 taskId)
+{
+ gTasks[taskId].data[10] = gBattleAnimArgs[0];
+ gTasks[taskId].data[11] = gBattleAnimArgs[1];
+ gTasks[taskId].func = sub_8170A38;
+}
+
+static void sub_8170A38(u8 taskId)
+{
+ u8 paletteNum;
+ int paletteOffset, colorOffset;
+
+ gTasks[taskId].data[0]++;
+ if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11])
+ {
+ gTasks[taskId].data[0] = 0;
+ paletteNum = IndexOfSpritePaletteTag(0xD709);
+ colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2;
+ switch (gTasks[taskId].data[1])
+ {
+ case 0:
+ gTasks[taskId].data[2] += 2;
+ if (gTasks[taskId].data[2] > 16)
+ gTasks[taskId].data[2] = 16;
+
+ paletteOffset = paletteNum * 16 + 0x100;
+ BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31));
+ if (gTasks[taskId].data[2] == 16)
+ gTasks[taskId].data[1]++;
+ break;
+ case 1:
+ gTasks[taskId].data[2] -= 2;
+ if (gTasks[taskId].data[2] < 0)
+ gTasks[taskId].data[2] = 0;
+
+ paletteOffset = paletteNum * 16 + 0x100;
+ BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31));
+ if (gTasks[taskId].data[2] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+ }
+}
+
+void sub_8170B04(u8 taskId)
+{
+ u8 spriteId;
+
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
+ gTasks[taskId].data[10] = 0x100;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gTasks[taskId].data[10] += 0x30;
+ SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0);
+ SetBattlerSpriteYOffsetFromYScale(spriteId);
+ if (gTasks[taskId].data[10] >= 0x2D0)
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ ResetSpriteRotScale(spriteId);
+ gSprites[spriteId].invisible = 1;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8170BB0(u8 taskId)
+{
+ u8 spriteId;
+ u16 ball;
+ u8 ballId;
+ u8 x, y;
+ u8 priority, subpriority;
+ u32 selectedPalettes;
+
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL);
+ else
+ ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL);
+
+ ballId = ItemIdToBallId(ball);
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ priority = gSprites[spriteId].oam.priority;
+ subpriority = gSprites[spriteId].subpriority;
+ gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId);
+ selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0);
+ gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (!gTasks[gTasks[taskId].data[10]].isActive && !gTasks[gTasks[taskId].data[11]].isActive)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8170CFC(u8 taskId)
+{
+ u8 ballId = ItemIdToBallId(gLastUsedItem);
+ LoadBallGfx(ballId);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8170D24(u8 taskId)
+{
+ u8 ballId = ItemIdToBallId(gLastUsedItem);
+ FreeBallGfx(ballId);
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_IsBallBlockedByTrainer(u8 taskId)
+{
+ if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK)
+ gBattleAnimArgs[7] = -1;
+ else
+ gBattleAnimArgs[7] = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+u8 ItemIdToBallId(u16 ballItem)
+{
+ switch (ballItem)
+ {
+ case ITEM_MASTER_BALL:
+ return 4;
+ case ITEM_ULTRA_BALL:
+ return 3;
+ case ITEM_GREAT_BALL:
+ return 1;
+ case ITEM_SAFARI_BALL:
+ return 2;
+ case ITEM_NET_BALL:
+ return 5;
+ case ITEM_DIVE_BALL:
+ return 6;
+ case ITEM_NEST_BALL:
+ return 7;
+ case ITEM_REPEAT_BALL:
+ return 8;
+ case ITEM_TIMER_BALL:
+ return 9;
+ case ITEM_LUXURY_BALL:
+ return 10;
+ case ITEM_PREMIER_BALL:
+ return 11;
+ case ITEM_POKE_BALL:
+ default:
+ return 0;
+ }
+}
+
+void sub_8170E04(u8 taskId)
+{
+ u8 ballId;
+ u8 spriteId;
+
+ ballId = ItemIdToBallId(gLastUsedItem);
+ spriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29);
+ gSprites[spriteId].data[0] = 34;
+ gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16;
+ gSprites[spriteId].callback = sub_8171104;
+ gBattleSpritesDataPtr->animationData->field_9_x2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].func = sub_8170EF0;
+}
+
+static void sub_8170EF0(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[0];
+ if ((u16)gSprites[spriteId].data[0] == 0xFFFF)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8170F2C(u8 taskId)
+{
+ int x, y;
+ u8 ballId;
+ u8 subpriority;
+ u8 spriteId;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ {
+ x = 32;
+ y = 11;
+ }
+ else
+ {
+ x = 23;
+ y = 5;
+ }
+
+ ballId = ItemIdToBallId(gLastUsedItem);
+ subpriority = GetBattlerSpriteSubpriority(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1;
+ spriteId = CreateSprite(&gBallSpriteTemplates[ballId], x + 32, y | 80, subpriority);
+ gSprites[spriteId].data[0] = 34;
+ gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8039E84;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].func = sub_8171030;
+}
+
+static void sub_8171030(u8 taskId)
+{
+ if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1)
+ {
+ PlaySE12WithPanning(SE_NAGERU, 0);
+ gSprites[gTasks[taskId].data[0]].callback = sub_8171104;
+ CreateTask(sub_81710A8, 10);
+ gTasks[taskId].func = sub_8170EF0;
+ }
+}
+
+static void sub_81710A8(u8 taskId)
+{
+ if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded)
+ {
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 0);
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8171104(struct Sprite *sprite)
+{
+ u16 temp = sprite->data[1];
+ u16 temp2 = sprite->data[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = temp;
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = temp2;
+ sprite->data[5] = -40;
+ InitAnimArcTranslation(sprite);
+ sprite->callback = sub_8171134;
+}
+
+static void sub_8171134(struct Sprite *sprite)
+{
+ int i;
+ u8 ballId;
+ int ballId2; // extra var needed to match
+
+ if (TranslateAnimArc(sprite))
+ {
+ if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK)
+ {
+ sprite->callback = sub_8171CAC;
+ }
+ else
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+
+ for (i = 0; i < 8; i++)
+ sprite->data[i] = 0;
+
+ sprite->data[5] = 0;
+ sprite->callback = sub_81711E8;
+ ballId = ItemIdToBallId(gLastUsedItem);
+ ballId2 = ballId;
+ if (ballId2 > 11)
+ return;
+ if (ballId2 < 0)
+ return;
+
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
+ LaunchBallFadeMonTask(0, gBattleAnimTarget, 14, ballId);
+ }
+ }
+}
+
+static void sub_81711E8(struct Sprite *sprite)
+{
+ if (++sprite->data[5] == 10)
+ {
+ sprite->data[5] = CreateTask(TaskDummy, 50);
+ sprite->callback = sub_8171240;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0;
+ }
+}
+
+static void sub_8171240(struct Sprite *sprite)
+{
+ u8 spriteId;
+ u8 taskId;
+
+ spriteId = gBattlerSpriteIds[gBattleAnimTarget];
+ taskId = sprite->data[5];
+
+ if (++gTasks[taskId].data[1] == 11)
+ PlaySE(SE_SUIKOMU);
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
+ gTasks[taskId].data[10] = 256;
+ gUnknown_030062DC = 28;
+ gUnknown_030062E4 = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
+ gUnknown_030062E0 = (u32)(gUnknown_030062E4 * 256) / 28;
+ gTasks[taskId].data[2] = gUnknown_030062E0;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gTasks[taskId].data[10] += 0x20;
+ SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0);
+ gTasks[taskId].data[3] += gTasks[taskId].data[2];
+ gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8;
+ if (gTasks[taskId].data[10] >= 0x480)
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ ResetSpriteRotScale(spriteId);
+ gSprites[spriteId].invisible = 1;
+ gTasks[taskId].data[0]++;
+ break;
+ default:
+ if (gTasks[taskId].data[1] > 10)
+ {
+ DestroyTask(taskId);
+ StartSpriteAnim(sprite, 2);
+ sprite->data[5] = 0;
+ sprite->callback = sub_817138C;
+ }
+ break;
+ }
+}
+
+static void sub_817138C(struct Sprite *sprite)
+{
+ int angle;
+
+ if (sprite->animEnded)
+ {
+ sprite->data[3] = 0;
+ sprite->data[4] = 40;
+ sprite->data[5] = 0;
+ angle = 0;
+ sprite->pos1.y += Cos(angle, 40);
+ sprite->pos2.y = -Cos(angle, sprite->data[4]);
+ sprite->callback = sub_81713D0;
+ }
+}
+
+static void sub_81713D0(struct Sprite *sprite)
+{
+ bool8 lastBounce;
+ int bounceCount;
+
+ lastBounce = 0;
+
+ switch (sprite->data[3] & 0xFF)
+ {
+ case 0:
+ sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->data[5] += (sprite->data[3] >> 8) + 4;
+ if (sprite->data[5] >= 64)
+ {
+ sprite->data[4] -= 10;
+ sprite->data[3] += 257;
+
+ bounceCount = sprite->data[3] >> 8;
+ if (bounceCount == 4)
+ lastBounce = 1;
+
+ // Play a different sound effect for each pokeball bounce.
+ switch (bounceCount)
+ {
+ case 1:
+ PlaySE(SE_KON);
+ break;
+ case 2:
+ PlaySE(SE_KON2);
+ break;
+ case 3:
+ PlaySE(SE_KON3);
+ break;
+ default:
+ PlaySE(SE_KON4);
+ break;
+ }
+ }
+ break;
+ case 1:
+ sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->data[5] -= (sprite->data[3] >> 8) + 4;
+ if (sprite->data[5] <= 0)
+ {
+ sprite->data[5] = 0;
+ sprite->data[3] &= -0x100;
+ }
+ break;
+ }
+
+ if (lastBounce)
+ {
+ sprite->data[3] = 0;
+ sprite->pos1.y += Cos(64, 40);
+ sprite->pos2.y = 0;
+ if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES)
+ {
+ sprite->data[5] = 0;
+ sprite->callback = sub_81717B4;
+ }
+ else
+ {
+ sprite->callback = sub_81714D4;
+ sprite->data[4] = 1;
+ sprite->data[5] = 0;
+ }
+ }
+}
+
+static void sub_81714D4(struct Sprite *sprite)
+{
+ if (++sprite->data[3] == 31)
+ {
+ sprite->data[3] = 0;
+ sprite->affineAnimPaused = 1;
+ StartSpriteAffineAnim(sprite, 1);
+ gBattleSpritesDataPtr->animationData->field_C = 0;
+ sprite->callback = sub_8171520;
+ PlaySE(SE_BOWA);
+ }
+}
+
+static void sub_8171520(struct Sprite *sprite)
+{
+ s8 state;
+ u16 var0;
+
+ switch (sprite->data[3] & 0xFF)
+ {
+ case 0:
+ if (gBattleSpritesDataPtr->animationData->field_C > 0xFF)
+ {
+ sprite->pos2.x += sprite->data[4];
+ gBattleSpritesDataPtr->animationData->field_C &= 0xFF;
+ }
+ else
+ {
+ gBattleSpritesDataPtr->animationData->field_C += 0xB0;
+ }
+
+ sprite->data[5]++;
+ sprite->affineAnimPaused = 0;
+ var0 = sprite->data[5] + 7;
+ if (var0 > 14)
+ {
+ gBattleSpritesDataPtr->animationData->field_C = 0;
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ }
+ break;
+ case 1:
+ if (++sprite->data[5] == 1)
+ {
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ sprite->data[3]++;
+ sprite->affineAnimPaused = 0;
+ if (sprite->data[4] < 0)
+ ChangeSpriteAffineAnim(sprite, 2);
+ else
+ ChangeSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->affineAnimPaused = 1;
+ }
+ break;
+ case 2:
+ if (gBattleSpritesDataPtr->animationData->field_C > 0xFF)
+ {
+ sprite->pos2.x += sprite->data[4];
+ gBattleSpritesDataPtr->animationData->field_C &= 0xFF;
+ }
+ else
+ {
+ gBattleSpritesDataPtr->animationData->field_C += 0xB0;
+ }
+
+ sprite->data[5]++;
+ sprite->affineAnimPaused = 0;
+ var0 = sprite->data[5] + 12;
+ if (var0 > 24)
+ {
+ gBattleSpritesDataPtr->animationData->field_C = 0;
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ }
+ break;
+ case 3:
+ if (sprite->data[5]++ < 0)
+ {
+ sprite->affineAnimPaused = 1;
+ break;
+ }
+
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ sprite->data[3]++;
+ sprite->affineAnimPaused = 0;
+ if (sprite->data[4] < 0)
+ ChangeSpriteAffineAnim(sprite, 2);
+ else
+ ChangeSpriteAffineAnim(sprite, 1);
+ // fall through
+ case 4:
+ if (gBattleSpritesDataPtr->animationData->field_C > 0xFF)
+ {
+ sprite->pos2.x += sprite->data[4];
+ gBattleSpritesDataPtr->animationData->field_C &= 0xFF;
+ }
+ else
+ {
+ gBattleSpritesDataPtr->animationData->field_C += 0xB0;
+ }
+
+ sprite->data[5]++;
+ sprite->affineAnimPaused = 0;
+ var0 = sprite->data[5] + 4;
+ if (var0 > 8)
+ {
+ gBattleSpritesDataPtr->animationData->field_C = 0;
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ }
+ break;
+ case 5:
+ sprite->data[3] += 0x100;
+ state = sprite->data[3] >> 8;
+ if (state == gBattleSpritesDataPtr->animationData->ballThrowCaseId)
+ {
+ sprite->affineAnimPaused = 1;
+ sprite->callback = sub_81717B4;
+ }
+ else
+ {
+ if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_3_SHAKES_SUCCESS && state == 3)
+ {
+ sprite->callback = sub_81717D8;
+ sprite->affineAnimPaused = 1;
+ }
+ else
+ {
+ sprite->data[3]++;
+ sprite->affineAnimPaused = 1;
+ }
+ }
+ break;
+ case 6:
+ default:
+ if (++sprite->data[5] == 31)
+ {
+ sprite->data[5] = 0;
+ sprite->data[3] &= -0x100;
+ StartSpriteAffineAnim(sprite, 3);
+ if (sprite->data[4] < 0)
+ StartSpriteAffineAnim(sprite, 2);
+ else
+ StartSpriteAffineAnim(sprite, 1);
+
+ PlaySE(SE_BOWA);
+ }
+ break;
+ }
+}
+
+static void sub_81717B4(struct Sprite *sprite)
+{
+ if (++sprite->data[5] == 31)
+ {
+ sprite->data[5] = 0;
+ sprite->callback = sub_8171AE4;
+ }
+}
+
+static void sub_81717D8(struct Sprite *sprite)
+{
+ sprite->animPaused = 1;
+ sprite->callback = sub_81717F8;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+static void sub_81717F8(struct Sprite *sprite)
+{
+ u8 *battler = &gBattleAnimTarget;
+
+ sprite->data[4]++;
+ if (sprite->data[4] == 40)
+ {
+ PlaySE(SE_RG_GETTING);
+ BlendPalettes(0x10000 << sprite->oam.paletteNum, 6, RGB(0, 0, 0));
+ sub_81719EC(sprite);
+ }
+ else if (sprite->data[4] == 60)
+ {
+ BeginNormalPaletteFade(0x10000 << sprite->oam.paletteNum, 2, 6, 0, RGB(0, 0, 0));
+ }
+ else if (sprite->data[4] == 95)
+ {
+ gDoingBattleAnim = 0;
+ UpdateOamPriorityInAllHealthboxes(1);
+ m4aMPlayAllStop();
+ PlaySE(MUS_RG_FAN6);
+ }
+ else if (sprite->data[4] == 315)
+ {
+ FreeOamMatrix(gSprites[gBattlerSpriteIds[*battler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBattlerSpriteIds[*battler]]);
+ sprite->data[0] = 0;
+ sprite->callback = sub_81718D8;
+ }
+}
+
+static void sub_81718D8(struct Sprite *sprite)
+{
+ u8 paletteIndex;
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->oam.objMode = ST_OAM_OBJ_BLEND;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+ paletteIndex = IndexOfSpritePaletteTag(sprite->template->paletteTag);
+ BeginNormalPaletteFade(1 << (paletteIndex + 0x10), 0, 0, 16, RGB(31, 31, 31));
+ sprite->data[0]++;
+ break;
+ case 1:
+ if (sprite->data[1]++ > 0)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[2], sprite->data[2]));
+ if (sprite->data[2] == 16)
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->invisible = 1;
+ sprite->data[0]++;
+ break;
+ default:
+ if (!gPaletteFade.active)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ sprite->data[0] = 0;
+ sprite->callback = sub_81719C0;
+ }
+ break;
+ }
+}
+
+static void sub_81719C0(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[0] = -1;
+ }
+ else
+ {
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_81719EC(struct Sprite *sprite)
+{
+ u32 i;
+ u8 subpriority;
+
+ if (sprite->subpriority)
+ {
+ subpriority = sprite->subpriority - 1;
+ }
+ else
+ {
+ subpriority = 0;
+ sprite->subpriority = 1;
+ }
+
+ sub_8171D60(4);
+ for (i = 0; i < 3; i++)
+ {
+ u8 spriteId = CreateSprite(&gUnknown_085E51F0[4], sprite->pos1.x, sprite->pos1.y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 24;
+ gSprites[spriteId].data[2] = sprite->pos1.x + sBallCaptureSuccessStarData[i].xOffset;
+ gSprites[spriteId].data[4] = sprite->pos1.y + sBallCaptureSuccessStarData[i].yOffset;
+ gSprites[spriteId].data[5] = sBallCaptureSuccessStarData[i].unk2;
+ InitAnimArcTranslation(&gSprites[spriteId]);
+ gSprites[spriteId].callback = sub_8171AAC;
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[4]);
+ }
+ }
+}
+
+static void sub_8171AAC(struct Sprite *sprite)
+{
+ sprite->invisible = !sprite->invisible;
+ if (TranslateAnimArc(sprite))
+ DestroySprite(sprite);
+}
+
+// fakematching. I think the return type of ItemIdToBallId()
+// is wrong because of the weird required casting.
+static void sub_8171AE4(struct Sprite *sprite)
+{
+ u8 ballId;
+ int ballId2; // extra var needed to match
+
+ StartSpriteAnim(sprite, 1);
+ StartSpriteAffineAnim(sprite, 0);
+ sprite->callback = sub_8171BAC;
+
+ ballId = ItemIdToBallId(gLastUsedItem);
+ ballId2 = ballId;
+ if (ballId2 > 11)
+ goto LABEL;
+ if (ballId2 < 0)
+ goto LABEL;
+
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
+ LaunchBallFadeMonTask(1, gBattleAnimTarget, 14, ballId);
+
+ LABEL:
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = 0;
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1);
+ AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]);
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000;
+}
+
+static void sub_8171BAC(struct Sprite *sprite)
+{
+ int next = FALSE;
+
+ if (sprite->animEnded)
+ sprite->invisible = 1;
+
+ if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded)
+ {
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0);
+ next = TRUE;
+ }
+ else
+ {
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] -= 288;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8;
+ }
+
+ if (sprite->animEnded && next)
+ {
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2;
+ sprite->data[0] = 0;
+ sprite->callback = sub_81719C0;
+ gDoingBattleAnim = 0;
+ UpdateOamPriorityInAllHealthboxes(1);
+ }
+}
+
+static void sub_8171CAC(struct Sprite *sprite)
+{
+ int i;
+
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ for (i = 0; i < 6; i++)
+ sprite->data[i] = 0;
+
+ sprite->callback = sub_8171CE8;
+}
+
+static void sub_8171CE8(struct Sprite *sprite)
+{
+ s16 var0 = sprite->data[0] + 0x800;
+ s16 var1 = sprite->data[1] + 0x680;
+ sprite->pos2.x -= var1 >> 8;
+ sprite->pos2.y += var0 >> 8;
+ sprite->data[0] = (sprite->data[0] + 0x800) & 0xFF;
+ sprite->data[1] = (sprite->data[1] + 0x680) & 0xFF;
+
+ if (sprite->pos1.y + sprite->pos2.y > 160
+ || sprite->pos1.x + sprite->pos2.x < -8)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_81719C0;
+ gDoingBattleAnim = 0;
+ UpdateOamPriorityInAllHealthboxes(1);
+ }
+}
+
+static void sub_8171D60(u8 ballId)
+{
+ u8 taskId;
+
+ if (GetSpriteTileStartByTag(gBallOpenParticleSpritesheets[ballId].tag) == 0xFFFF)
+ {
+ LoadCompressedSpriteSheetUsingHeap(&gBallOpenParticleSpritesheets[ballId]);
+ LoadCompressedSpritePaletteUsingHeap(&gBallOpenParticlePalettes[ballId]);
+ }
+}
+
+u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId)
+{
+ u8 taskId;
+
+ sub_8171D60(ballId);
+ taskId = CreateTask(gBallOpenParticleAnimationFuncs[ballId], 5);
+ gTasks[taskId].data[1] = x;
+ gTasks[taskId].data[2] = y;
+ gTasks[taskId].data[3] = priority;
+ gTasks[taskId].data[4] = subpriority;
+ gTasks[taskId].data[15] = ballId;
+ PlaySE(SE_BOWA2);
+
+ return taskId;
+}
+
+void sub_8171E20(void)
+{
+ if (gMain.inBattle)
+ gBattleSpritesDataPtr->animationData->field_A++;
+}
+
+static void PokeBallOpenParticleAnimation(u8 taskId)
+{
+ u8 spriteId;
+ u8 x, y;
+ u8 priority, subpriority;
+ u8 ballId;
+ u8 var0;
+
+ ballId = gTasks[taskId].data[15];
+ if (gTasks[taskId].data[0] < 16)
+ {
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1;
+ gSprites[spriteId].oam.priority = priority;
+
+ var0 = (u8)gTasks[taskId].data[0];
+ if (var0 >= 8)
+ var0 -= 8;
+
+ gSprites[spriteId].data[0] = var0 * 32;
+ }
+
+ if (gTasks[taskId].data[0] == 15)
+ {
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+ return;
+ }
+ }
+
+ gTasks[taskId].data[0]++;
+}
+
+static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite)
+{
+ if (sprite->data[1] == 0)
+ sprite->callback = PokeBallOpenParticleAnimation_Step2;
+ else
+ sprite->data[1]--;
+}
+
+static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->data[1] += 2;
+ if (sprite->data[1] == 50)
+ DestroyBallOpenAnimationParticle(sprite);
+}
+
+static void TimerBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 10;
+ gSprites[spriteId].data[5] = 2;
+ gSprites[spriteId].data[6] = 1;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+static void DiveBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 10;
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 2;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+// Also used for Net Ball
+static void SafariBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 4;
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 1;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+// Also used for Nest Ball
+static void UltraBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 10; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 25;
+ gSprites[spriteId].data[4] = 5;
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 1;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+// Also used for Luxury Ball
+static void GreatBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ if (gTasks[taskId].data[7])
+ {
+ gTasks[taskId].data[7]--;
+ }
+ else
+ {
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 8;
+ gSprites[spriteId].data[5] = 2;
+ gSprites[spriteId].data[6] = 2;
+ }
+ }
+
+ gTasks[taskId].data[7] = 8;
+ if (++gTasks[taskId].data[0] == 2)
+ {
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+ }
+ }
+}
+
+static void FanOutBallOpenParticles_Step1(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]);
+ sprite->data[0] = (sprite->data[0] + sprite->data[4]) & 0xFF;
+ sprite->data[1] += sprite->data[5];
+ sprite->data[2] += sprite->data[6];
+ if (++sprite->data[3] == 51)
+ DestroyBallOpenAnimationParticle(sprite);
+}
+
+static void RepeatBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 12; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 21;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2]));
+ sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
+ sprite->data[1]++;
+ sprite->data[2]++;
+ if (++sprite->data[3] == 51)
+ DestroyBallOpenAnimationParticle(sprite);
+}
+
+static void MasterBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i, j;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (j = 0; j < 2; j++)
+ {
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 8;
+
+ if (j == 0)
+ {
+ gSprites[spriteId].data[5] = 2;
+ gSprites[spriteId].data[6] = 1;
+ }
+ else
+ {
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 2;
+ }
+ }
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+static void PremierBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2]));
+ sprite->data[0] = (sprite->data[0] + 10) & 0xFF;
+ sprite->data[1]++;
+ sprite->data[2]++;
+ if (++sprite->data[3] == 51)
+ DestroyBallOpenAnimationParticle(sprite);
+}
+
+static void DestroyBallOpenAnimationParticle(struct Sprite *sprite)
+{
+ int i, j;
+ int temp;
+
+ if (!gMain.inBattle)
+ {
+ temp = sprite->data[7]; // temp var needed to match
+ if (temp == 1)
+ DestroySpriteAndFreeResources(sprite);
+ else
+ DestroySprite(sprite);
+ }
+ else
+ {
+ gBattleSpritesDataPtr->animationData->field_A--;
+ if (gBattleSpritesDataPtr->animationData->field_A == 0)
+ {
+ for (i = 0; i < 12; i++)
+ {
+ if (FuncIsActiveTask(gBallOpenParticleAnimationFuncs[i]) == TRUE)
+ break;
+ }
+
+ if (i == 12)
+ {
+ for (j = 0; j < 12; j++)
+ {
+ FreeSpriteTilesByTag(gBallOpenParticleSpritesheets[j].tag);
+ FreeSpritePaletteByTag(gBallOpenParticlePalettes[j].tag);
+ }
+ }
+
+ DestroySprite(sprite);
+ }
+ else
+ {
+ DestroySprite(sprite);
+ }
+ }
+}
+
+u8 LaunchBallFadeMonTask(u8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId)
+{
+ u8 taskId;
+
+ taskId = CreateTask(sub_8172AB0, 5);
+ gTasks[taskId].data[15] = ballId;
+ gTasks[taskId].data[3] = battler;
+ gTasks[taskId].data[10] = selectedPalettes;
+ gTasks[taskId].data[11] = selectedPalettes >> 16;
+
+ if (!unfadeLater)
+ {
+ BlendPalette(battler * 16 + 0x100, 16, 0, gUnknown_085E5310[ballId]);
+ gTasks[taskId].data[1] = 1;
+ }
+ else
+ {
+ BlendPalette(battler * 16 + 0x100, 16, 16, gUnknown_085E5310[ballId]);
+ gTasks[taskId].data[0] = 16;
+ gTasks[taskId].data[1] = -1;
+ gTasks[taskId].func = sub_8172B40;
+ }
+
+ BeginNormalPaletteFade(selectedPalettes, 0, 0, 16, RGB(31, 31, 31));
+ return taskId;
+}
+
+static void sub_8172AB0(u8 taskId)
+{
+ u8 ballId = gTasks[taskId].data[15];
+
+ if (gTasks[taskId].data[2] <= 16)
+ {
+ BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_085E5310[ballId]);
+ gTasks[taskId].data[0] += gTasks[taskId].data[1];
+ gTasks[taskId].data[2]++;
+ }
+ else if (!gPaletteFade.active)
+ {
+ u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16);
+ BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31));
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8172B40(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16);
+ BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31));
+ gTasks[taskId].func = sub_8172B90;
+ }
+}
+
+static void sub_8172B90(u8 taskId)
+{
+ u8 ballId = gTasks[taskId].data[15];
+
+ if (gTasks[taskId].data[2] <= 16)
+ {
+ BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_085E5310[ballId]);
+ gTasks[taskId].data[0] += gTasks[taskId].data[1];
+ gTasks[taskId].data[2]++;
+ }
+ else
+ {
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8172BF0(u8 taskId)
+{
+ u8 spriteId;
+ u32 x;
+ u32 done;
+
+ done = FALSE;
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ gTasks[taskId].data[11] = gBattleAnimArgs[0];
+ gTasks[taskId].data[0] += 0x500;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+ else
+ gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+
+ gTasks[taskId].data[0] &= 0xFF;
+ x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x + 32;
+ if (x > 304)
+ gTasks[taskId].data[10]++;
+ break;
+ case 1:
+ LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, gTasks[taskId].data[11], spriteId);
+ gTasks[taskId].data[10]++;
+ break;
+ case 2:
+ gTasks[taskId].data[0] += 0x500;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+ else
+ gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+
+ gTasks[taskId].data[0] &= 0xFF;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ if (gSprites[spriteId].pos2.x <= 0)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ // done = FALSE; // fakematching--can't get the tail merge correct
+ goto DONE;
+ }
+ }
+ else
+ {
+ if (gSprites[spriteId].pos2.x >= 0)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ done = TRUE;
+ }
+ }
+
+ if (done)
+ {
+ DONE:
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_8172D98(u8 taskId)
+{
+ u8 spriteId;
+
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == B_POSITION_OPPONENT_LEFT)
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ else
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+ gTasks[taskId].data[15]++;
+ break;
+ case 1:
+ if (gTasks[taskId].data[1]++ > 1)
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - gTasks[taskId].data[0], gTasks[taskId].data[0]));
+ if (gTasks[taskId].data[0] == 16)
+ gTasks[taskId].data[15]++;
+ }
+ break;
+ case 2:
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ RequestDma3Fill(0, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800, 1);
+ ClearBehindSubstituteBit(gBattleAnimAttacker);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8172E9C(u8 taskId)
+{
+ gBattleAnimArgs[7] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].behindSubstitute;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8172ED0(u8 taskId)
+{
+ gBattleAnimTarget = gEffectBattler;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8172EF0(u8 battler, struct Pokemon *mon)
+{
+ int isShiny;
+ u32 otId, personality;
+ u32 shinyValue;
+ u8 taskId1, taskId2;
+
+ isShiny = 0;
+ gBattleSpritesDataPtr->healthBoxesData[battler].flag_x80 = 1;
+ otId = GetMonData(mon, MON_DATA_OT_ID);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY);
+
+ if (IsBattlerSpriteVisible(battler))
+ {
+ shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
+ if (shinyValue < 8)
+ isShiny = TRUE;
+
+ if (isShiny)
+ {
+ if (GetSpriteTileStartByTag(0x27F9) == 0xFFFF)
+ {
+ LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[233]);
+ LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[233]);
+ }
+
+ taskId1 = CreateTask(sub_8172FEC, 10);
+ taskId2 = CreateTask(sub_8172FEC, 10);
+ gTasks[taskId1].data[0] = battler;
+ gTasks[taskId2].data[0] = battler;
+ gTasks[taskId1].data[1] = 0;
+ gTasks[taskId2].data[1] = 1;
+ return;
+ }
+ }
+
+ gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1;
+}
+
+static void sub_8172FEC(u8 taskId)
+{
+ u8 battler;
+ u8 x, y;
+ u8 spriteId;
+ u16 counter;
+ s16 state;
+ u8 pan;
+
+ if (gTasks[taskId].data[13] < 60)
+ {
+ gTasks[taskId].data[13]++;
+ return;
+ }
+
+ if (gBattleSpritesDataPtr->animationData->field_A)
+ return;
+
+ counter = gTasks[taskId].data[10]++;
+ if (counter & 3)
+ return;
+
+ battler = gTasks[taskId].data[0];
+ x = GetBattlerSpriteCoord(battler, 0);
+ y = GetBattlerSpriteCoord(battler, 1);
+ state = gTasks[taskId].data[11];
+ if (state == 0)
+ {
+ spriteId = CreateSprite(&gUnknown_085CE388, x, y, 5);
+ }
+ else if (state >= 0 && gTasks[taskId].data[11] < 4)
+ {
+ spriteId = CreateSprite(&gUnknown_085CE3A0, x, y, 5);
+ gSprites[spriteId].oam.tileNum += 4;
+ }
+ else
+ {
+ spriteId = CreateSprite(&gUnknown_085CE3A0, x, y, 5);
+ gSprites[spriteId].oam.tileNum += 5;
+ }
+
+ if (gTasks[taskId].data[1] == 0)
+ {
+ gSprites[spriteId].callback = sub_81731FC;
+ }
+ else
+ {
+ gSprites[spriteId].callback = sub_8173250;
+ gSprites[spriteId].pos2.x = -32;
+ gSprites[spriteId].pos2.y = 32;
+ gSprites[spriteId].invisible = 1;
+ if (gTasks[taskId].data[11] == 0)
+ {
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
+ pan = 192;
+ else
+ pan = 63;
+
+ PlaySE12WithPanning(SE_REAPOKE, pan);
+ }
+ }
+
+ gSprites[spriteId].data[0] = taskId;
+ gTasks[taskId].data[11]++;
+ if (spriteId != MAX_SPRITES)
+ gTasks[taskId].data[12]++;
+
+ if (gTasks[taskId].data[11] == 5)
+ gTasks[taskId].func = sub_81731B0;
+}
+
+static void sub_81731B0(u8 taskId)
+{
+ u8 battler;
+
+ if (gTasks[taskId].data[12] == 0)
+ {
+ if (gTasks[taskId].data[1] == 1)
+ {
+ battler = gTasks[taskId].data[0];
+ gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1;
+ }
+
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_81731FC(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[1], 24);
+ sprite->pos2.y = Cos(sprite->data[1], 24);
+ sprite->data[1] += 12;
+ if (sprite->data[1] > 0xFF)
+ {
+ gTasks[sprite->data[0]].data[12]--;
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_8173250(struct Sprite *sprite)
+{
+ if (sprite->data[1] < 4)
+ {
+ sprite->data[1]++;
+ }
+ else
+ {
+ sprite->invisible = 0;
+ sprite->pos2.x += 5;
+ sprite->pos2.y -= 5;
+ if (sprite->pos2.x > 32)
+ {
+ gTasks[sprite->data[0]].data[12]--;
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+ }
+}
+
+void sub_81732B0(u8 taskId)
+{
+ u8 paletteIndex;
+
+ LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[269]);
+ LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[269]);
+ paletteIndex = IndexOfSpritePaletteTag(0x281D); // unused
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_81732E4(u8 taskId)
+{
+ FreeSpriteTilesByTag(0x281D);
+ FreeSpritePaletteByTag(0x281D);
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_817330C(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, 0);
+ sprite->data[0] = 30;
+ sprite->data[2] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 0) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 1) + gBattleAnimArgs[3];
+ sprite->data[5] = -32;
+ InitAnimArcTranslation(sprite);
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8039E84;
+ sprite->callback = sub_817339C;
+}
+
+static void sub_817339C(struct Sprite *sprite)
+{
+ if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1)
+ sprite->callback = sub_81733D4;
+}
+
+static void sub_81733D4(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ {
+ sprite->data[0] = 0;
+ sprite->invisible = 1;
+ sprite->callback = sub_8173400;
+ }
+}
+
+static void sub_8173400(struct Sprite *sprite)
+{
+ if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animEnded)
+ {
+ if (++sprite->data[0] > 0)
+ {
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
+ DestroyAnimSprite(sprite);
+ }
+ }
+}
+
+void sub_817345C(u8 taskId)
+{
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ break;
+ case 1:
+ gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ break;
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_GetTrappedMoveAnimId(u8 taskId)
+{
+ if (gBattleSpritesDataPtr->animationData->animArg == 83)
+ gBattleAnimArgs[0] = 1;
+ else if (gBattleSpritesDataPtr->animationData->animArg == 250)
+ gBattleAnimArgs[0] = 2;
+ else if (gBattleSpritesDataPtr->animationData->animArg == 128)
+ gBattleAnimArgs[0] = 3;
+ else if (gBattleSpritesDataPtr->animationData->animArg == 328)
+ gBattleAnimArgs[0] = 4;
+ else
+ gBattleAnimArgs[0] = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_817351C(u8 taskId)
+{
+ gBattleAnimAttacker = gBattleSpritesDataPtr->animationData->animArg;
+ gBattleAnimTarget = gBattleSpritesDataPtr->animationData->animArg >> 8;
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
new file mode 100644
index 000000000..e37d2b5b8
--- /dev/null
+++ b/src/battle_anim_effects_1.c
@@ -0,0 +1,5609 @@
+#include "global.h"
+#include "alloc.h"
+#include "battle_anim.h"
+#include "battle_interface.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "main.h"
+#include "math_util.h"
+#include "palette.h"
+#include "random.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "trig.h"
+#include "util.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+
+EWRAM_DATA s16 gUnknown_0203A0F8[4] = {0};
+
+void AnimMovePowderParticle(struct Sprite *);
+void AnimPowerAbsorptionOrb(struct Sprite *);
+void AnimSolarbeamBigOrb(struct Sprite *);
+void AnimSolarbeamSmallOrb(struct Sprite *);
+void AnimAbsorptionOrb(struct Sprite *);
+void AnimHyperBeamOrb(struct Sprite *);
+void AnimSporeParticle(struct Sprite *);
+void AnimPetalDanceBigFlower(struct Sprite *);
+void AnimPetalDanceSmallFlower(struct Sprite *);
+void AnimRazorLeafParticle(struct Sprite *);
+void AnimLeechSeed(struct Sprite *);
+void AnimTranslateLinearSingleSineWave(struct Sprite *);
+void AnimMoveTwisterParticle(struct Sprite *);
+void AnimConstrictBinding(struct Sprite *);
+void AnimMimicOrb(struct Sprite *);
+void AnimIngrainRoot(struct Sprite *);
+void AnimFrenzyPlantRoot(struct Sprite *);
+void AnimIngrainOrb(struct Sprite *);
+void AnimPresent(struct Sprite *);
+void AnimKnockOffItem(struct Sprite *);
+void AnimPresentHealParticle(struct Sprite *);
+void AnimItemSteal(struct Sprite *);
+void AnimTrickBag(struct Sprite *);
+void sub_8100640(struct Sprite *);
+void sub_8100898(struct Sprite *);
+void sub_81009F8(struct Sprite *);
+void sub_8100A50(struct Sprite *);
+void sub_8100A94(struct Sprite *);
+void AnimCuttingSlice(struct Sprite *);
+void sub_8100B88(struct Sprite *);
+void sub_8100E1C(struct Sprite *);
+void sub_8100EF0(struct Sprite *);
+void sub_81010CC(struct Sprite *);
+void sub_810130C(struct Sprite *);
+void sub_810135C(struct Sprite *);
+void sub_8101440(struct Sprite *);
+void sub_81014F4(struct Sprite *);
+void sub_81015AC(struct Sprite *);
+void sub_8101898(struct Sprite *);
+void sub_8101940(struct Sprite *);
+void sub_8101B90(struct Sprite *);
+void sub_8101F40(struct Sprite *);
+void sub_8101FA8(struct Sprite *);
+void sub_8101FF0(struct Sprite *);
+void sub_81020D8(struct Sprite *);
+void sub_810217C(struct Sprite *);
+void sub_8102268(struct Sprite *);
+void sub_810234C(struct Sprite *);
+void sub_81024E0(struct Sprite *);
+void sub_8102540(struct Sprite *);
+void sub_8102844(struct Sprite *);
+void sub_8102BCC(struct Sprite *);
+void sub_8102CD4(struct Sprite *);
+void sub_8102EB0(struct Sprite *);
+void sub_8102FB8(struct Sprite *);
+void sub_8103028(struct Sprite *);
+void sub_8103164(struct Sprite *);
+void sub_8103208(struct Sprite *);
+void sub_8103284(struct Sprite *);
+void sub_8103390(struct Sprite *);
+static void AnimMovePowderParticleStep(struct Sprite *);
+static void AnimSolarbeamSmallOrbStep(struct Sprite *);
+static void AnimAbsorptionOrbStep(struct Sprite *);
+static void AnimHyperBeamOrbStep(struct Sprite *);
+static void AnimLeechSeedStep(struct Sprite *);
+static void AnimLeechSeedSprouts(struct Sprite *);
+static void AnimSporeParticleStep(struct Sprite *);
+static void AnimPetalDanceBigFlowerStep(struct Sprite *);
+static void AnimPetalDanceSmallFlowerStep(struct Sprite *);
+static void AnimRazorLeafParticleStep1(struct Sprite *);
+static void AnimRazorLeafParticleStep2(struct Sprite *);
+static void AnimTranslateLinearSingleSineWaveStep(struct Sprite *);
+static void AnimMoveTwisterParticleStep(struct Sprite *);
+static void AnimConstrictBindingStep1(struct Sprite *);
+static void AnimConstrictBindingStep2(struct Sprite *);
+static void sub_80FF53C(u8);
+static void sub_80FF5CC(u8);
+static void AnimItemStealStep(struct Sprite *);
+static void AnimRootFlickerOut(struct Sprite *);
+static void AnimTrickBagStep1(struct Sprite *);
+static void AnimTrickBagStep2(struct Sprite *);
+static void AnimTrickBagStep3(struct Sprite *);
+static void sub_8100128(u8);
+static s16 sub_8100504(struct Sprite *);
+static void sub_8100524(struct Task *, u8);
+static void sub_80CC408(struct Sprite *);
+static void sub_810074C(struct Sprite *);
+static void sub_81009A0(struct Sprite *);
+static void AnimSliceStep(struct Sprite *);
+static void sub_8100E80(struct Sprite *);
+static void sub_8100FD4(struct Sprite *);
+static void sub_8101138(struct Sprite *);
+static void sub_8101298(struct Sprite *, int, int);
+static void sub_81014A0(struct Sprite *);
+static void sub_8101560(struct Sprite *);
+static void sub_81015D4(struct Sprite *);
+static void sub_8101684(struct Sprite *);
+static void sub_81016B8(struct Sprite *);
+static void sub_8101774(struct Sprite *);
+static void sub_8101820(struct Sprite *);
+static void sub_8101848(struct Sprite *);
+static void sub_8101998(struct Sprite *);
+static void sub_81019E8(struct Sprite *);
+static void sub_8101A74(struct Sprite *);
+static void sub_8101AC4(struct Sprite *);
+static void sub_8101B84(struct Sprite *);
+static void sub_8101AE8(struct Sprite *);
+static void sub_8101BA0(struct Sprite *);
+static void sub_8101D2C(u8);
+static void sub_8101EEC(u8);
+static void sub_8102044(struct Sprite *);
+static void sub_810207C(struct Sprite *);
+static void sub_810208C(struct Sprite *);
+static void sub_810213C(struct Sprite *);
+static void sub_81021CC(struct Sprite *);
+static void sub_810237C(struct Sprite *);
+static void sub_8102528(struct Sprite *);
+static void sub_8102584(struct Sprite *);
+static void sub_810296C(struct Sprite *);
+static void sub_8102AE0(u8);
+static void sub_8102B3C(struct Sprite *);
+static void sub_8102D8C(s16, s16, s16 *, s16 *, s8);
+static void sub_8102DE4(struct Sprite *);
+static void sub_8102F40(struct Sprite *);
+static void sub_81030B0(struct Sprite *);
+static void sub_81031D0(struct Sprite *);
+static void sub_8103250(struct Sprite *);
+static void sub_8103300(struct Sprite *);
+static void sub_8103320(struct Sprite *);
+static void sub_81033F0(struct Sprite *);
+static void sub_810342C(struct Sprite *);
+
+const union AnimCmd gUnknown_085920F0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(14, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08592114[] =
+{
+ gUnknown_085920F0,
+};
+
+const struct SpriteTemplate gSleepPowderParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SLEEP_POWDER,
+ .paletteTag = ANIM_TAG_SLEEP_POWDER,
+ .oam = &gUnknown_08524944,
+ .anims = gUnknown_08592114,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMovePowderParticle,
+};
+
+const struct SpriteTemplate gStunSporeParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_STUN_SPORE,
+ .paletteTag = ANIM_TAG_STUN_SPORE,
+ .oam = &gUnknown_08524944,
+ .anims = gUnknown_08592114,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMovePowderParticle,
+};
+
+const struct SpriteTemplate gPoisonPowderParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_POISON_POWDER,
+ .paletteTag = ANIM_TAG_POISON_POWDER,
+ .oam = &gUnknown_08524944,
+ .anims = gUnknown_08592114,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMovePowderParticle,
+};
+
+const union AnimCmd gUnknown_08592160[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592168[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592170[] =
+{
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592178[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592180[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592188[] =
+{
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592190[] =
+{
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592198[] =
+{
+ ANIMCMD_FRAME(7, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085921A0[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085921A8[] =
+{
+ gUnknown_08592160,
+ gUnknown_08592168,
+ gUnknown_08592170,
+ gUnknown_08592178,
+ gUnknown_08592180,
+ gUnknown_08592188,
+ gUnknown_08592190,
+};
+
+const union AnimCmd *const gUnknown_085921C4[] =
+{
+ gUnknown_08592198,
+};
+
+const union AnimCmd *const gUnknown_085921C8[] =
+{
+ gUnknown_085921A0,
+};
+
+const union AffineAnimCmd gUnknown_085921CC[] = {
+ AFFINEANIMCMD_FRAME(-5, -5, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085921DC[] = {
+ gUnknown_085921CC,
+};
+
+const struct SpriteTemplate gPowerAbsorptionOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524A8C,
+ .anims = gUnknown_085921C8,
+ .images = NULL,
+ .affineAnims = gUnknown_085921DC,
+ .callback = AnimPowerAbsorptionOrb,
+};
+
+const struct SpriteTemplate gSolarbeamBigOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085921A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimSolarbeamBigOrb,
+};
+
+const struct SpriteTemplate gSolarbeamSmallOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085921C4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimSolarbeamSmallOrb,
+};
+
+const union AffineAnimCmd gUnknown_08592228[] = {
+ AFFINEANIMCMD_FRAME(320, 320, 0, 0),
+ AFFINEANIMCMD_FRAME(-14, -14, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08592240[] = {
+ gUnknown_08592228,
+};
+
+const struct SpriteTemplate gStockpileAbsorptionOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_GRAY_ORB,
+ .paletteTag = ANIM_TAG_GRAY_ORB,
+ .oam = &gUnknown_085249C4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592240,
+ .callback = AnimPowerAbsorptionOrb,
+};
+
+const union AffineAnimCmd gUnknown_0859225C[] = {
+ AFFINEANIMCMD_FRAME(-5, -5, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_0859226C[] = {
+ gUnknown_0859225C,
+};
+
+const struct SpriteTemplate gAbsorptionOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524A8C,
+ .anims = gUnknown_085921C8,
+ .images = NULL,
+ .affineAnims = gUnknown_0859226C,
+ .callback = AnimAbsorptionOrb,
+};
+
+const struct SpriteTemplate gHyperBeamOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085921A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimHyperBeamOrb,
+};
+
+const union AnimCmd gUnknown_085922A0[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085922A8[] =
+{
+ ANIMCMD_FRAME(4, 7),
+ ANIMCMD_FRAME(8, 7),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085922B4[] =
+{
+ gUnknown_085922A0,
+ gUnknown_085922A8,
+};
+
+const struct SpriteTemplate gLeechSeedSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SEED,
+ .paletteTag = ANIM_TAG_SEED,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_085922B4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimLeechSeed,
+};
+
+const union AnimCmd gUnknown_085922D4[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085922DC[] =
+{
+ ANIMCMD_FRAME(4, 7),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085922E4[] =
+{
+ gUnknown_085922D4,
+ gUnknown_085922DC,
+};
+
+const struct SpriteTemplate gSporeParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SPORE,
+ .paletteTag = ANIM_TAG_SPORE,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_085922E4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimSporeParticle,
+};
+
+const union AnimCmd gUnknown_08592304[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859230C[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592314[] =
+{
+ gUnknown_08592304,
+};
+
+const union AnimCmd *const gUnknown_08592318[] =
+{
+ gUnknown_0859230C,
+};
+
+const struct SpriteTemplate gPetalDanceBigFlowerSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_FLOWER,
+ .paletteTag = ANIM_TAG_FLOWER,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592314,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimPetalDanceBigFlower,
+};
+
+const struct SpriteTemplate gPetalDanceSmallFlowerSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_FLOWER,
+ .paletteTag = ANIM_TAG_FLOWER,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08592318,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimPetalDanceSmallFlower,
+};
+
+const union AnimCmd gUnknown_0859234C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_08592378[] =
+{
+ ANIMCMD_FRAME(24, 5),
+ ANIMCMD_FRAME(28, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592388[] =
+{
+ gUnknown_0859234C,
+ gUnknown_08592378,
+};
+
+const struct SpriteTemplate gRazorLeafParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_LEAF,
+ .paletteTag = ANIM_TAG_LEAF,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592388,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimRazorLeafParticle,
+};
+
+const struct SpriteTemplate gTwisterLeafParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_LEAF,
+ .paletteTag = ANIM_TAG_LEAF,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592388,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMoveTwisterParticle,
+};
+
+const union AnimCmd gUnknown_085923C0[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085923D4[] =
+{
+ gUnknown_085923C0,
+};
+
+const struct SpriteTemplate gRazorLeafCutterSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_RAZOR_LEAF,
+ .paletteTag = ANIM_TAG_RAZOR_LEAF,
+ .oam = &gUnknown_08524934,
+ .anims = gUnknown_085923D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimTranslateLinearSingleSineWave,
+};
+
+const union AffineAnimCmd gUnknown_085923F0[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08592400[] = {
+ gUnknown_085923F0,
+};
+
+const struct SpriteTemplate gSwiftStarSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_YELLOW_STAR,
+ .paletteTag = ANIM_TAG_YELLOW_STAR,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592400,
+ .callback = AnimTranslateLinearSingleSineWave,
+};
+
+const union AnimCmd gUnknown_0859241C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(96, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592430[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(96, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592444[] =
+{
+ gUnknown_0859241C,
+ gUnknown_08592430,
+};
+
+const union AffineAnimCmd gUnknown_0859244C[] = {
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
+ AFFINEANIMCMD_FRAME(11, 0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859246C[] = {
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(11, 0, 0, 6),
+ AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_0859248C[] = {
+ gUnknown_0859244C,
+ gUnknown_0859246C,
+};
+
+const struct SpriteTemplate gConstrictBindingSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_TENDRILS,
+ .paletteTag = ANIM_TAG_TENDRILS,
+ .oam = &gUnknown_0852499C,
+ .anims = gUnknown_08592444,
+ .images = NULL,
+ .affineAnims = gUnknown_0859248C,
+ .callback = AnimConstrictBinding,
+};
+
+const union AffineAnimCmd gUnknown_085924AC[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 0),
+ AFFINEANIMCMD_FRAME(48, 48, 0, 14),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085924C4[] = {
+ AFFINEANIMCMD_FRAME(-16, -16, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085924D4[] = {
+ gUnknown_085924AC,
+ gUnknown_085924C4,
+};
+
+const struct SpriteTemplate gMimicOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_085921C8,
+ .images = NULL,
+ .affineAnims = gUnknown_085924D4,
+ .callback = AnimMimicOrb,
+};
+
+const union AnimCmd gUnknown_085924F4[] =
+{
+ ANIMCMD_FRAME(0, 7),
+ ANIMCMD_FRAME(16, 7),
+ ANIMCMD_FRAME(32, 7),
+ ANIMCMD_FRAME(48, 7),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592508[] =
+{
+ ANIMCMD_FRAME(0, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 7, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859251C[] =
+{
+ ANIMCMD_FRAME(0, 7),
+ ANIMCMD_FRAME(16, 7),
+ ANIMCMD_FRAME(32, 7),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859252C[] =
+{
+ ANIMCMD_FRAME(0, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 7, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_0859253C[] =
+{
+ gUnknown_085924F4,
+ gUnknown_08592508,
+ gUnknown_0859251C,
+ gUnknown_0859252C,
+};
+
+const struct SpriteTemplate gIngrainRootSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ROOTS,
+ .paletteTag = ANIM_TAG_ROOTS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_0859253C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimIngrainRoot,
+};
+
+const struct SpriteTemplate gFrenzyPlantRootSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ROOTS,
+ .paletteTag = ANIM_TAG_ROOTS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_0859253C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimFrenzyPlantRoot,
+};
+
+const union AnimCmd gUnknown_0859257C[] =
+{
+ ANIMCMD_FRAME(3, 3),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08592588[] =
+{
+ gUnknown_0859257C,
+};
+
+const struct SpriteTemplate gIngrainOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08592588,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimIngrainOrb,
+};
+
+const union AnimCmd gUnknown_085925A4[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085925AC[] =
+{
+ gUnknown_085925A4,
+};
+
+const union AffineAnimCmd gUnknown_085925B0[] = {
+ AFFINEANIMCMD_FRAME(0, 0, -4, 10),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 20),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085925D0[] = {
+ AFFINEANIMCMD_FRAME(0, 0, -1, 2),
+ AFFINEANIMCMD_FRAME(0, 0, 1, 4),
+ AFFINEANIMCMD_FRAME(0, 0, -1, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 1, 4),
+ AFFINEANIMCMD_FRAME(0, 0, -1, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 1, 2),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08592608[] = {
+ gUnknown_085925B0,
+ gUnknown_085925D0,
+};
+
+const struct SpriteTemplate gPresentSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ITEM_BAG,
+ .paletteTag = ANIM_TAG_ITEM_BAG,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085925AC,
+ .images = NULL,
+ .affineAnims = gUnknown_08592608,
+ .callback = AnimPresent,
+};
+
+const struct SpriteTemplate gKnockOffItemSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ITEM_BAG,
+ .paletteTag = ANIM_TAG_ITEM_BAG,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085925AC,
+ .images = NULL,
+ .affineAnims = gUnknown_08592608,
+ .callback = AnimKnockOffItem,
+};
+
+const union AnimCmd gUnknown_08592640[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592654[] =
+{
+ gUnknown_08592640,
+};
+
+const struct SpriteTemplate gPresentHealParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_GREEN_SPARKLE,
+ .paletteTag = ANIM_TAG_GREEN_SPARKLE,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592654,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimPresentHealParticle,
+};
+
+const struct SpriteTemplate gItemStealSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ITEM_BAG,
+ .paletteTag = ANIM_TAG_ITEM_BAG,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085925AC,
+ .images = NULL,
+ .affineAnims = gUnknown_08592608,
+ .callback = AnimItemSteal,
+};
+
+const union AffineAnimCmd gUnknown_08592688[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 3),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08592698[] = {
+ AFFINEANIMCMD_FRAME(0, -10, 0, 3),
+ AFFINEANIMCMD_FRAME(0, -6, 0, 3),
+ AFFINEANIMCMD_FRAME(0, -2, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 2, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 6, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 10, 0, 3),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085926D8[] = {
+ gUnknown_08592688,
+ gUnknown_08592698,
+ gUnknown_085925B0,
+ gUnknown_085925D0,
+};
+
+const struct SpriteTemplate gTrickBagSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ITEM_BAG,
+ .paletteTag = ANIM_TAG_ITEM_BAG,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085925AC,
+ .images = NULL,
+ .affineAnims = gUnknown_085926D8,
+ .callback = AnimTrickBag,
+};
+
+const s8 gUnknown_08592700[][3] =
+{
+ {5, 24, 1},
+ {0, 4, 0},
+ {8, 16, -1},
+ {0, 2, 0},
+ {8, 16, 1},
+ {0, 2, 0},
+ {8, 16, 1},
+ {0, 2, 0},
+ {8, 16, 1},
+ {0, 16, 0},
+ {0, 0, 127},
+};
+
+const union AnimCmd gUnknown_08592724[] =
+{
+ ANIMCMD_FRAME(28, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859272C[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592734[] =
+{
+ ANIMCMD_FRAME(20, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859273C[] =
+{
+ ANIMCMD_FRAME(28, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592744[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859274C[] =
+{
+ ANIMCMD_FRAME(16, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592754[] =
+{
+ ANIMCMD_FRAME(28, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_0859275C[] =
+{
+ gUnknown_08592724,
+ gUnknown_0859272C,
+ gUnknown_08592734,
+ gUnknown_0859273C,
+ gUnknown_08592744,
+ gUnknown_0859274C,
+ gUnknown_08592754,
+};
+
+const struct SpriteTemplate gUnknown_08592778 =
+{
+ .tileTag = ANIM_TAG_LEAF,
+ .paletteTag = ANIM_TAG_LEAF,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_0859275C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const union AffineAnimCmd gUnknown_08592790[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_085927A8[] = {
+ gUnknown_08592790,
+};
+
+const struct SpriteTemplate gUnknown_085927AC =
+{
+ .tileTag = ANIM_TAG_FLOWER,
+ .paletteTag = ANIM_TAG_FLOWER,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08592318,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100640,
+};
+
+const struct SpriteTemplate gUnknown_085927C4 =
+{
+ .tileTag = ANIM_TAG_FLOWER,
+ .paletteTag = ANIM_TAG_FLOWER,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_08592314,
+ .images = NULL,
+ .affineAnims = gUnknown_085927A8,
+ .callback = sub_8100640,
+};
+
+const union AffineAnimCmd gUnknown_085927DC[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -10, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gUnknown_085927F4[] = {
+ AFFINEANIMCMD_FRAME(192, 192, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -12, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gUnknown_0859280C[] = {
+ AFFINEANIMCMD_FRAME(143, 143, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -15, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08592824[] = {
+ gUnknown_085927DC,
+};
+
+const union AffineAnimCmd *const gUnknown_08592828[] = {
+ gUnknown_085927F4,
+};
+
+const union AffineAnimCmd *const gUnknown_0859282C[] = {
+ gUnknown_0859280C,
+};
+
+const struct SpriteTemplate gUnknown_08592830 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_6,
+ .paletteTag = ANIM_TAG_SPARKLE_6,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592824,
+ .callback = sub_8100640,
+};
+
+const struct SpriteTemplate gUnknown_08592848 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_6,
+ .paletteTag = ANIM_TAG_SPARKLE_6,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592828,
+ .callback = sub_8100640,
+};
+
+const struct SpriteTemplate gUnknown_08592860 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_6,
+ .paletteTag = ANIM_TAG_SPARKLE_6,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859282C,
+ .callback = sub_8100640,
+};
+
+const u16 gMagicalLeafBlendColors[] =
+{
+ RGB(31, 0, 0),
+ RGB(31, 19, 0),
+ RGB(31, 31, 0),
+ RGB(0, 31, 0),
+ RGB(5, 14, 31),
+ RGB(22, 10, 31),
+ RGB(22, 21, 31),
+};
+
+const struct SpriteTemplate gUnknown_08592888 =
+{
+ .tileTag = ANIM_TAG_GREEN_SPIKE,
+ .paletteTag = ANIM_TAG_GREEN_SPIKE,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100898,
+};
+
+const union AnimCmd gUnknown_085928A0[] =
+{
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_FRAME(80, 3),
+ ANIMCMD_FRAME(96, 3),
+ ANIMCMD_FRAME(112, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085928B4[] =
+{
+ ANIMCMD_FRAME(64, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(80, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(96, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(112, 6, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085928C8[] =
+{
+ gUnknown_085928A0,
+ gUnknown_085928B4,
+};
+
+const struct SpriteTemplate gUnknown_085928D0 =
+{
+ .tileTag = ANIM_TAG_SLAM_HIT,
+ .paletteTag = ANIM_TAG_SLAM_HIT,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085928C8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100A50,
+};
+
+const struct SpriteTemplate gUnknown_085928E8 =
+{
+ .tileTag = ANIM_TAG_WHIP_HIT,
+ .paletteTag = ANIM_TAG_WHIP_HIT,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085928C8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100A50,
+};
+
+const union AnimCmd gUnknown_08592900[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592918[] =
+{
+ gUnknown_08592900,
+};
+
+const struct SpriteTemplate gUnknown_0859291C =
+{
+ .tileTag = ANIM_TAG_UNUSED_HIT,
+ .paletteTag = ANIM_TAG_UNUSED_HIT,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592918,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81009F8,
+};
+
+const struct SpriteTemplate gUnknown_08592934 =
+{
+ .tileTag = ANIM_TAG_UNUSED_HIT_2,
+ .paletteTag = ANIM_TAG_UNUSED_HIT_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592918,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81009F8,
+};
+
+const union AffineAnimCmd gUnknown_0859294C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859295C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 32, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859296C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859297C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 96, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859298C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -128, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859299C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -96, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085929AC[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085929BC[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -32, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085929CC[] = {
+ gUnknown_0859294C,
+ gUnknown_0859295C,
+ gUnknown_0859296C,
+ gUnknown_0859297C,
+ gUnknown_0859298C,
+ gUnknown_0859299C,
+ gUnknown_085929AC,
+ gUnknown_085929BC,
+};
+
+const struct SpriteTemplate gUnknown_085929EC =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085929CC,
+ .callback = sub_8100A94,
+};
+
+const union AnimCmd gUnknown_08592A04[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592A18[] =
+{
+ gUnknown_08592A04,
+};
+
+const struct SpriteTemplate gCuttingSliceSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_CUT,
+ .paletteTag = ANIM_TAG_CUT,
+ .oam = &gUnknown_08524A34,
+ .anims = gUnknown_08592A18,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimCuttingSlice,
+};
+
+const struct SpriteTemplate gUnknown_08592A34 =
+{
+ .tileTag = ANIM_TAG_CUT,
+ .paletteTag = ANIM_TAG_CUT,
+ .oam = &gUnknown_08524A34,
+ .anims = gUnknown_08592A18,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100B88,
+};
+
+const union AnimCmd gUnknown_08592A4C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A54[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A5C[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A64[] =
+{
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A6C[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A74[] =
+{
+ ANIMCMD_FRAME(20, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A7C[] =
+{
+ ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A84[] =
+{
+ ANIMCMD_FRAME(4, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A8C[] =
+{
+ ANIMCMD_FRAME(8, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A94[] =
+{
+ ANIMCMD_FRAME(12, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592A9C[] =
+{
+ gUnknown_08592A4C,
+ gUnknown_08592A54,
+ gUnknown_08592A5C,
+ gUnknown_08592A64,
+ gUnknown_08592A6C,
+ gUnknown_08592A74,
+ gUnknown_08592A7C,
+ gUnknown_08592A84,
+ gUnknown_08592A8C,
+ gUnknown_08592A94,
+};
+
+const struct SpriteTemplate gUnknown_08592AC4 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592A9C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100E1C,
+};
+
+const struct SpriteTemplate gUnknown_08592ADC =
+{
+ .tileTag = ANIM_TAG_PROTECT,
+ .paletteTag = ANIM_TAG_PROTECT,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100EF0,
+};
+
+const union AffineAnimCmd gUnknown_08592AF4[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08592B04[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08592B34[] =
+{
+ gUnknown_08592AF4,
+ gUnknown_08592B04,
+};
+
+const struct SpriteTemplate gUnknown_08592B3C =
+{
+ .tileTag = ANIM_TAG_MILK_BOTTLE,
+ .paletteTag = ANIM_TAG_MILK_BOTTLE,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592B34,
+ .callback = sub_81010CC,
+};
+
+const union AnimCmd gUnknown_08592B54[] =
+{
+ ANIMCMD_FRAME(0, 7),
+ ANIMCMD_FRAME(16, 7),
+ ANIMCMD_FRAME(32, 7),
+ ANIMCMD_FRAME(48, 7),
+ ANIMCMD_FRAME(64, 7),
+ ANIMCMD_FRAME(80, 7),
+ ANIMCMD_FRAME(96, 7),
+ ANIMCMD_FRAME(112, 7),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08592B78[] =
+{
+ gUnknown_08592B54,
+};
+
+const struct SpriteTemplate gUnknown_08592B7C =
+{
+ .tileTag = ANIM_TAG_SPARKLE_2,
+ .paletteTag = ANIM_TAG_SPARKLE_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592B78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810130C,
+};
+
+const struct SpriteTemplate gUnknown_08592B94 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_2,
+ .paletteTag = ANIM_TAG_SPARKLE_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592B78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810135C,
+};
+
+const union AnimCmd gUnknown_08592BAC[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_FRAME(4, 10),
+ ANIMCMD_FRAME(8, 10),
+ ANIMCMD_FRAME(12, 10),
+ ANIMCMD_FRAME(16, 26),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_FRAME(24, 15),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592BD0[] =
+{
+ ANIMCMD_FRAME(0, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(12, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 26, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(20, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(24, 15, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592BF4[] =
+{
+ gUnknown_08592BAC,
+ gUnknown_08592BD0,
+};
+
+const struct SpriteTemplate gUnknown_08592BFC =
+{
+ .tileTag = ANIM_TAG_UNUSED_BUBBLE_BURST,
+ .paletteTag = ANIM_TAG_UNUSED_BUBBLE_BURST,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592BF4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101440,
+};
+
+const union AnimCmd gUnknown_08592C14[] =
+{
+ ANIMCMD_FRAME(0, 40),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592C1C[] =
+{
+ gUnknown_08592C14,
+};
+
+const union AffineAnimCmd gUnknown_08592C20[] =
+{
+ AFFINEANIMCMD_FRAME(0x14, 0x14, -30, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 1, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08592C20_2[] =
+{
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
+ AFFINEANIMCMD_LOOP(10),
+};
+
+const union AffineAnimCmd gUnknown_08592C50[] =
+{
+ AFFINEANIMCMD_FRAME(0x14, 0x14, 30, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, -1, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08592C50_2[] =
+{
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 24),
+ AFFINEANIMCMD_LOOP(10),
+};
+
+const union AffineAnimCmd *const gUnknown_08592C80[] =
+{
+ gUnknown_08592C20,
+ gUnknown_08592C50,
+};
+
+const struct SpriteTemplate gUnknown_08592C88 =
+{
+ .tileTag = ANIM_TAG_LETTER_Z,
+ .paletteTag = ANIM_TAG_LETTER_Z,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_08592C1C,
+ .images = NULL,
+ .affineAnims = gUnknown_08592C80,
+ .callback = sub_81014F4,
+};
+
+const struct SpriteTemplate gUnknown_08592CA0 =
+{
+ .tileTag = ANIM_TAG_LOCK_ON,
+ .paletteTag = ANIM_TAG_LOCK_ON,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81015AC,
+};
+
+const struct SpriteTemplate gUnknown_08592CB8 =
+{
+ .tileTag = ANIM_TAG_LOCK_ON,
+ .paletteTag = ANIM_TAG_LOCK_ON,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101898,
+};
+
+const s8 gUnknown_08592CD0[][2] =
+{
+ { 64, 64},
+ { 0, -64},
+ {-64, 64},
+ { 32, -32},
+};
+
+const struct SpriteTemplate gUnknown_08592CD8 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101940,
+};
+
+const struct SpriteTemplate gUnknown_08592CF0 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101B90,
+};
+
+const union AnimCmd gUnknown_08592D08[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592D1C[] =
+{
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592D24[] =
+{
+ gUnknown_08592D08,
+ gUnknown_08592D1C,
+};
+
+const struct SpriteTemplate gUnknown_08592D2C =
+{
+ .tileTag = ANIM_TAG_SLASH,
+ .paletteTag = ANIM_TAG_SLASH,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592D24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101F40,
+};
+
+const struct SpriteTemplate gUnknown_08592D44 =
+{
+ .tileTag = ANIM_TAG_SLASH_2,
+ .paletteTag = ANIM_TAG_SLASH_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592D24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101FA8,
+};
+
+const struct SpriteTemplate gUnknown_08592D5C =
+{
+ .tileTag = ANIM_TAG_SLASH_2,
+ .paletteTag = ANIM_TAG_SLASH_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592D24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101FF0,
+};
+
+const union AnimCmd gUnknown_08592D74[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(8, 12),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592D88[] =
+{
+ gUnknown_08592D74,
+};
+
+const struct SpriteTemplate gUnknown_08592D8C =
+{
+ .tileTag = ANIM_TAG_FOCUS_ENERGY,
+ .paletteTag = ANIM_TAG_FOCUS_ENERGY,
+ .oam = &gUnknown_08524954,
+ .anims = gUnknown_08592D88,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81020D8,
+};
+
+const union AnimCmd gUnknown_08592DA4[] =
+{
+ ANIMCMD_FRAME(0, 18),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 18),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 18),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 18),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_FRAME(64, 18),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_FRAME(64, 54),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592DE0[] =
+{
+ gUnknown_08592DA4,
+};
+
+const struct SpriteTemplate gUnknown_08592DE4 =
+{
+ .tileTag = ANIM_TAG_SPHERE_TO_CUBE,
+ .paletteTag = ANIM_TAG_SPHERE_TO_CUBE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592DE0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810217C,
+};
+
+const struct SpriteTemplate gUnknown_08592DFC =
+{
+ .tileTag = ANIM_TAG_BLACK_BALL,
+ .paletteTag = ANIM_TAG_BLACK_BALL,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const union AnimCmd gUnknown_08592E14[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592E2C[] =
+{
+ gUnknown_08592E14,
+};
+
+const struct SpriteTemplate gUnknown_08592E30 =
+{
+ .tileTag = ANIM_TAG_GRAY_SMOKE,
+ .paletteTag = ANIM_TAG_GRAY_SMOKE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592E2C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const union AnimCmd gUnknown_08592E48[] =
+{
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592E5C[] =
+{
+ gUnknown_08592E48,
+};
+
+const union AffineAnimCmd gUnknown_08592E60[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08592E70[] =
+{
+ gUnknown_08592E60,
+};
+
+const struct SpriteTemplate gUnknown_08592E74 =
+{
+ .tileTag = ANIM_TAG_CONVERSION,
+ .paletteTag = ANIM_TAG_CONVERSION,
+ .oam = &gUnknown_08524AE4,
+ .anims = gUnknown_08592E5C,
+ .images = NULL,
+ .affineAnims = gUnknown_08592E70,
+ .callback = sub_8102268,
+};
+
+const union AnimCmd gUnknown_08592E8C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592EA0[] =
+{
+ gUnknown_08592E8C,
+};
+
+const struct SpriteTemplate gUnknown_08592EA4 =
+{
+ .tileTag = ANIM_TAG_CONVERSION,
+ .paletteTag = ANIM_TAG_CONVERSION,
+ .oam = &gUnknown_08524AE4,
+ .anims = gUnknown_08592EA0,
+ .images = NULL,
+ .affineAnims = gUnknown_08592E70,
+ .callback = sub_810234C,
+};
+
+const struct SpriteTemplate gUnknown_08592EBC =
+{
+ .tileTag = ANIM_TAG_MOON,
+ .paletteTag = ANIM_TAG_MOON,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81024E0,
+};
+
+const union AnimCmd gUnknown_08592ED4[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_FRAME(12, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08592EE8[] =
+{
+ gUnknown_08592ED4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8592EEC =
+{
+ .tileTag = ANIM_TAG_GREEN_SPARKLE,
+ .paletteTag = ANIM_TAG_GREEN_SPARKLE,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592EE8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8102540,
+};
+
+const union AnimCmd gUnknown_08592F04[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_FRAME(80, 3),
+ ANIMCMD_FRAME(96, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592F28[] =
+{
+ gUnknown_08592F04,
+};
+
+const struct SpriteTemplate gUnknown_08592F2C =
+{
+ .tileTag = ANIM_TAG_BLUE_STAR,
+ .paletteTag = ANIM_TAG_BLUE_STAR,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592F28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const struct SpriteTemplate gUnknown_08592F44 =
+{
+ .tileTag = ANIM_TAG_HORN_HIT,
+ .paletteTag = ANIM_TAG_HORN_HIT,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8102844,
+};
+
+const union AnimCmd gUnknown_08592F5C[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592F70[] =
+{
+ gUnknown_08592F5C,
+};
+
+const struct SpriteTemplate gUnknown_08592F74 =
+{
+ .tileTag = ANIM_TAG_FANG_ATTACK,
+ .paletteTag = ANIM_TAG_FANG_ATTACK,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592F70,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8102BCC,
+};
+
+const union AnimCmd gUnknown_08592F8C[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592F94[] =
+{
+ ANIMCMD_FRAME(4, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592F9C[] =
+{
+ ANIMCMD_FRAME(8, 41),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FA4[] =
+{
+ ANIMCMD_FRAME(12, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FAC[] =
+{
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FB4[] =
+{
+ ANIMCMD_FRAME(20, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FBC[] =
+{
+ ANIMCMD_FRAME(0, 10, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FC4[] =
+{
+ ANIMCMD_FRAME(4, 10, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592FCC[] =
+{
+ gUnknown_08592F8C,
+ gUnknown_08592F94,
+ gUnknown_08592F9C,
+ gUnknown_08592FA4,
+ gUnknown_08592FAC,
+ gUnknown_08592FB4,
+ gUnknown_08592FBC,
+ gUnknown_08592FC4,
+};
+
+const union AffineAnimCmd gUnknown_08592FEC[] =
+{
+ AFFINEANIMCMD_FRAME(0xC, 0xC, 0, 16),
+ AFFINEANIMCMD_FRAME(0xFFF4, 0xFFF4, 0, 16),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08593004[] =
+{
+ gUnknown_08592FEC,
+};
+
+const struct SpriteTemplate gUnknown_08593008 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593004,
+ .callback = sub_8102CD4,
+};
+
+const u16 gUnknown_08593020[][6] =
+{
+ {ANIM_TAG_MUSIC_NOTES, RGB(31, 31, 31), RGB(31, 26, 28), RGB(31, 22, 26), RGB(31, 17, 24), RGB(31, 13, 22)},
+ {ANIM_TAG_BENT_SPOON, RGB(31, 31, 31), RGB(25, 31, 26), RGB(20, 31, 21), RGB(15, 31, 16), RGB(10, 31, 12)},
+ {ANIM_TAG_SPHERE_TO_CUBE, RGB(31, 31, 31), RGB(31, 31, 24), RGB(31, 31, 17), RGB(31, 31, 10), RGB(31, 31, 3)},
+ {ANIM_TAG_LARGE_FRESH_EGG, RGB(31, 31, 31), RGB(26, 28, 31), RGB(21, 26, 31), RGB(16, 24, 31), RGB(12, 22, 31)},
+};
+
+const struct SpriteTemplate gUnknown_08593050 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593004,
+ .callback = sub_8102EB0,
+};
+
+const struct SpriteTemplate gUnknown_08593068 =
+{
+ .tileTag = ANIM_TAG_PURPLE_HAND_OUTLINE,
+ .paletteTag = ANIM_TAG_PURPLE_HAND_OUTLINE,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8102FB8,
+};
+
+const union AffineAnimCmd gUnknown_08593080[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593098[] =
+{
+ gUnknown_08593080,
+};
+
+const struct SpriteTemplate gUnknown_0859309C =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593098,
+ .callback = sub_8103028,
+};
+
+const union AnimCmd gUnknown_085930B4[] =
+{
+ ANIMCMD_FRAME(0, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 2, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085930C8[] =
+{
+ ANIMCMD_FRAME(48, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 2, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085930DC[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085930F0[] =
+{
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593104[] =
+{
+ gUnknown_085930B4,
+ gUnknown_085930DC,
+ gUnknown_085930C8,
+ gUnknown_085930F0,
+};
+
+const struct SpriteTemplate gUnknown_08593114 =
+{
+ .tileTag = ANIM_TAG_THOUGHT_BUBBLE,
+ .paletteTag = ANIM_TAG_THOUGHT_BUBBLE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593104,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103164,
+};
+
+const union AffineAnimCmd gUnknown_0859312C[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x1E, 0x1E, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593144[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 11),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 11),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593144_2[] =
+{
+ AFFINEANIMCMD_FRAME(16, 16, 0, 0),
+ AFFINEANIMCMD_FRAME(30, 30, 0, 8),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 16),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 11),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 11),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_FRAME(-30, -30, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085931B4[] =
+{
+ gUnknown_0859312C,
+ gUnknown_08593144,
+};
+
+const struct SpriteTemplate gUnknown_085931BC =
+{
+ .tileTag = ANIM_TAG_FINGER,
+ .paletteTag = ANIM_TAG_FINGER,
+ .oam = &gUnknown_085249D4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085931B4,
+ .callback = sub_8103208,
+};
+
+const struct SpriteTemplate gUnknown_085931D4 =
+{
+ .tileTag = ANIM_TAG_FINGER,
+ .paletteTag = ANIM_TAG_FINGER,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085931B4,
+ .callback = sub_8103284,
+};
+
+const union AnimCmd gUnknown_085931EC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085931F4[] =
+{
+ ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085931FC[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859321C[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_0859323C[] =
+{
+ gUnknown_085931EC,
+ gUnknown_085931F4,
+ gUnknown_085931FC,
+ gUnknown_0859321C,
+};
+
+const struct SpriteTemplate gUnknown_0859324C =
+{
+ .tileTag = ANIM_TAG_FINGER_2,
+ .paletteTag = ANIM_TAG_FINGER_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_0859323C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103390,
+};
+
+// Animates the falling particles that horizontally wave back and forth.
+// Used by Sleep Powder, Stun Spore, and Poison Powder.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: total duration in frames
+// arg 3: vertical movement speed (sub-pixel value)
+// arg 4: wave amplitude
+// arg 5: wave speed
+void AnimMovePowderParticle(struct Sprite* sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+
+ if (GetBattlerSide(gBattleAnimAttacker))
+ {
+ sprite->data[3] = -gBattleAnimArgs[4];
+ }
+ else
+ {
+ sprite->data[3] = gBattleAnimArgs[4];
+ }
+
+ sprite->data[4] = gBattleAnimArgs[5];
+ sprite->callback = AnimMovePowderParticleStep;
+}
+
+static void AnimMovePowderParticleStep(struct Sprite* sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ sprite->pos2.y = sprite->data[2] >> 8;
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
+ sprite->data[5] = (sprite->data[5] + sprite->data[4]) & 0xFF;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+// Moves an energy orb towards the center of the mon.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: duration
+void AnimPowerAbsorptionOrb(struct Sprite* sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+}
+
+// Moves an orb in a straight line towards the target mon.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: duration
+// arg 3: sprite anim number
+void AnimSolarbeamBigOrb(struct Sprite* sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ StartSpriteAnim(sprite, gBattleAnimArgs[3]);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Moves a small orb in a wavy pattern towards the target mon.
+// The small orb "circles" the big orbs in AnimSolarbeamBigOrb.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: duration
+// arg 3: initial wave offset
+void AnimSolarbeamSmallOrb(struct Sprite* sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = AnimSolarbeamSmallOrbStep;
+ sprite->callback(sprite);
+}
+
+static void AnimSolarbeamSmallOrbStep(struct Sprite* sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ {
+ DestroySprite(sprite);
+ }
+ else
+ {
+ if (sprite->data[5] > 0x7F)
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + 1;
+ else
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + 6;
+
+ sprite->pos2.x += Sin(sprite->data[5], 5);
+ sprite->pos2.y += Cos(sprite->data[5], 14);
+ sprite->data[5] = (sprite->data[5] + 15) & 0xFF;
+ }
+}
+
+// Creates 15 small secondary orbs used in the solarbeam anim effect.
+// There is a 7-frame delay between each of them.
+// No args.
+void AnimTask_CreateSmallSolarbeamOrbs(u8 taskId)
+{
+ if (--gTasks[taskId].data[0] == -1)
+ {
+ gTasks[taskId].data[1]++;
+ gTasks[taskId].data[0] = 6;
+ gBattleAnimArgs[0] = 15;
+ gBattleAnimArgs[1] = 0;
+ gBattleAnimArgs[2] = 80;
+ gBattleAnimArgs[3] = 0;
+ CreateSpriteAndAnimate(&gSolarbeamSmallOrbSpriteTemplate, 0, 0, GetBattlerSpriteSubpriority(gBattleAnimTarget) + 1);
+ }
+
+ if (gTasks[taskId].data[1] == 15)
+ DestroyAnimVisualTask(taskId);
+}
+
+// Moves an orb from the target mon to the attacking mon in an arc-like fashion.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: wave amplitude
+// arg 3: wave period (lower means faster wave)
+void AnimAbsorptionOrb(struct Sprite* sprite)
+{
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->data[5] = gBattleAnimArgs[2];
+ InitAnimArcTranslation(sprite);
+ sprite->callback = AnimAbsorptionOrbStep;
+}
+
+static void AnimAbsorptionOrbStep(struct Sprite* sprite)
+{
+ if (TranslateAnimArc(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+// Moves an orb in a wave-like fashion towards the target mon. The wave's
+// properties and the sprite anim are randomly determined.
+void AnimHyperBeamOrb(struct Sprite* sprite)
+{
+ u16 speed;
+ u16 animNum = Random2();
+
+ StartSpriteAnim(sprite, animNum % 8);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= 20;
+ else
+ sprite->pos1.x += 20;
+
+ speed = Random2();
+ sprite->data[0] = (speed & 31) + 64;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ InitAnimFastLinearTranslationWithSpeed(sprite);
+ sprite->data[5] = Random2() & 0xFF;
+ sprite->data[6] = sprite->subpriority;
+ sprite->callback = AnimHyperBeamOrbStep;
+ sprite->callback(sprite);
+}
+
+static void AnimHyperBeamOrbStep(struct Sprite* sprite)
+{
+ if (AnimFastTranslateLinear(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ sprite->pos2.y += Cos(sprite->data[5], 12);
+ if (sprite->data[5] < 0x7F)
+ sprite->subpriority = sprite->data[6];
+ else
+ sprite->subpriority = sprite->data[6] + 1;
+
+ sprite->data[5] += 24;
+ sprite->data[5] &= 0xFF;
+ }
+}
+
+// seed (sprouts a sapling from a seed.)
+// Used by Leech Seed.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+// arg 5: wave amplitude
+void AnimLeechSeed(struct Sprite* sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[5];
+ InitAnimArcTranslation(sprite);
+ sprite->callback = AnimLeechSeedStep;
+}
+
+static void AnimLeechSeedStep(struct Sprite* sprite)
+{
+ if (TranslateAnimArc(sprite))
+ {
+ sprite->invisible = 1;
+ sprite->data[0] = 10;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, AnimLeechSeedSprouts);
+ }
+}
+
+static void AnimLeechSeedSprouts(struct Sprite* sprite)
+{
+ sprite->invisible = 0;
+ StartSpriteAnim(sprite, 1);
+ sprite->data[0] = 60;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Moves a spore particle in a halo around the target mon.
+// The sprite's priority is updated to give the effect of going
+// behind the mon's sprite.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: initial wave offset
+// arg 3: duration
+// arg 4: blend (0 = off, 1 = on)
+void AnimSporeParticle(struct Sprite* sprite)
+{
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+ if (gBattleAnimArgs[4] == 1)
+ sprite->oam.objMode = ST_OAM_OBJ_BLEND;
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->callback = AnimSporeParticleStep;
+ sprite->callback(sprite);
+}
+
+static void AnimSporeParticleStep(struct Sprite* sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[1], 32);
+ sprite->pos2.y = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8);
+ if ((u16)(sprite->data[1] - 0x40) < 0x80)
+ {
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
+ }
+ else
+ {
+ u8 priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1;
+ if (priority > 3)
+ priority = 3;
+
+ sprite->oam.priority = priority;
+ }
+
+ sprite->data[1] += 2;
+ sprite->data[1] &= 0xFF;
+ if (--sprite->data[0] == -1)
+ DestroyAnimSprite(sprite);
+}
+
+// In a double battle, Updates the mon sprite background priorities to allow
+// the circling effect controlled by AnimSporeParticle.
+// No args.
+void AnimTask_SporeDoubleBattle(u8 taskId)
+{
+ if (IsContest() || !IsDoubleBattle())
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimTarget) == 1)
+ SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 3);
+ else
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+// Rotates a big flower around the attacking mon, and slowly floats
+// downward.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target y pixel offset
+// arg 3: duration
+void AnimPetalDanceBigFlower(struct Sprite* sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5] = 0x40;
+ sprite->callback = AnimPetalDanceBigFlowerStep;
+ sprite->callback(sprite);
+}
+
+static void AnimPetalDanceBigFlowerStep(struct Sprite* sprite)
+{
+ if (!AnimTranslateLinear(sprite))
+ {
+ sprite->pos2.x += Sin(sprite->data[5], 32);
+ sprite->pos2.y += Cos(sprite->data[5], -5);
+ if ((u16)(sprite->data[5] - 0x40) < 0x80)
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
+ else
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) + 1;
+
+ sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+// Slowly floats a small flower downard, while swaying from right to left.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target y pixel offset
+// arg 3: duration
+void AnimPetalDanceSmallFlower(struct Sprite* sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5] = 0x40;
+ sprite->callback = AnimPetalDanceSmallFlowerStep;
+ sprite->callback(sprite);
+}
+
+static void AnimPetalDanceSmallFlowerStep(struct Sprite* sprite)
+{
+ if (!AnimTranslateLinear(sprite))
+ {
+ sprite->pos2.x += Sin(sprite->data[5], 8);
+ if ((u16)(sprite->data[5] - 59) < 5 || (u16)(sprite->data[5] - 187) < 5)
+ sprite->oam.matrixNum ^= 0x8; // horizontal flip
+
+ sprite->data[5] += 5;
+ sprite->data[5] &= 0xFF;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+// Shoots a leaf upward, then floats it downward while swaying back and forth.
+// arg 0: upward x delta per frame
+// arg 1: upward y delta per frame
+// arg 2: upward duration
+void AnimRazorLeafParticle(struct Sprite* sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->callback = AnimRazorLeafParticleStep1;
+}
+
+static void AnimRazorLeafParticleStep1(struct Sprite* sprite)
+{
+ if (!sprite->data[2])
+ {
+ if (sprite->data[1] & 1)
+ {
+ sprite->data[0] = 0x80;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ }
+ else
+ {
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ }
+ sprite->callback = AnimRazorLeafParticleStep2;
+ }
+ else
+ {
+ sprite->data[2]--;
+ sprite->pos1.x += sprite->data[0];
+ sprite->pos1.y += sprite->data[1];
+ }
+}
+
+static void AnimRazorLeafParticleStep2(struct Sprite* sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker))
+ sprite->pos2.x = -Sin(sprite->data[0], 25);
+ else
+ sprite->pos2.x = Sin(sprite->data[0], 25);
+
+ sprite->data[0] += 2;
+ sprite->data[0] &= 0xFF;
+ sprite->data[1]++;
+ if (!(sprite->data[1] & 1))
+ sprite->pos2.y++;
+
+ if (sprite->data[1] > 80)
+ DestroyAnimSprite(sprite);
+}
+
+// Animates a sprite that moves linearly from one location to another, with a
+// single-cycle sine wave added to the y position along the way.
+// Used by Razor Leaf and Magical Leaf.
+// arg 0: initial x offset
+// arg 1: initial y offset
+// arg 2: target x offset
+// arg 3: target y offset
+// arg 4: translation duration
+// arg 5: wave amplitude
+// arg 6: target between double battle opponents (boolean)
+void AnimTranslateLinearSingleSineWave(struct Sprite* sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ if (!gBattleAnimArgs[6])
+ {
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
+ }
+ else
+ {
+ SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->data[2], &sprite->data[4]);
+ sprite->data[2] += gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ }
+
+ sprite->data[5] = gBattleAnimArgs[5];
+ InitAnimArcTranslation(sprite);
+ if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
+ sprite->data[0] = 1;
+ else
+ sprite->data[0] = 0;
+
+ sprite->callback = AnimTranslateLinearSingleSineWaveStep;
+}
+
+static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite)
+{
+ bool8 destroy = FALSE;
+ s16 a = sprite->data[0];
+ s16 b = sprite->data[7];
+ s16 r0;
+
+ sprite->data[0] = 1;
+ TranslateAnimArc(sprite);
+ r0 = sprite->data[7];
+ sprite->data[0] = a;
+ if (b > 200 && r0 < 56 && sprite->oam.affineParam == 0)
+ sprite->oam.affineParam++;
+
+ if (sprite->oam.affineParam && sprite->data[0])
+ {
+ sprite->invisible ^= 1;
+ sprite->oam.affineParam++;
+ if (sprite->oam.affineParam == 30)
+ destroy = TRUE;
+ }
+
+ if (sprite->pos1.x + sprite->pos2.x > 256
+ || sprite->pos1.x + sprite->pos2.x < -16
+ || sprite->pos1.y + sprite->pos2.y > 160
+ || sprite->pos1.y + sprite->pos2.y < -16)
+ destroy = TRUE;
+
+ if (destroy)
+ DestroyAnimSprite(sprite);
+}
+
+// Animates particles in the Twister move animation.
+// arg 0: duration
+// arg 1: total y delta (the particles rise upward)
+// arg 2: wave period (higher means faster wave)
+// arg 3: wave amplitude
+// arg 4: speedup frame (particles move faster at the end of the animation)
+void AnimMoveTwisterParticle(struct Sprite* sprite)
+{
+ if (IsDoubleBattle() == TRUE)
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
+
+ sprite->pos1.y += 32;
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->data[3] = gBattleAnimArgs[3];
+ sprite->data[4] = gBattleAnimArgs[4];
+ sprite->callback = AnimMoveTwisterParticleStep;
+}
+
+static void AnimMoveTwisterParticleStep(struct Sprite* sprite)
+{
+ if (sprite->data[1] == 0xFF)
+ {
+ sprite->pos1.y -= 2;
+ }
+ else if (sprite->data[1] > 0)
+ {
+ sprite->pos1.y -= 2;
+ sprite->data[1] -= 2;
+ }
+
+ sprite->data[5] += sprite->data[2];
+ if (sprite->data[0] < sprite->data[4])
+ sprite->data[5] += sprite->data[2];
+
+ sprite->data[5] &= 0xFF;
+ sprite->pos2.x = Cos(sprite->data[5], sprite->data[3]);
+ sprite->pos2.y = Sin(sprite->data[5], 5);
+ if (sprite->data[5] < 0x80)
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) - 1;
+ else
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1;
+
+ if (--sprite->data[0] == 0)
+ DestroyAnimSprite(sprite);
+}
+
+// Squeezes a constricting "rope" several times via affine animations.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: affine anim num
+// arg 3: num squeezes
+void AnimConstrictBinding(struct Sprite* sprite)
+{
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->affineAnimPaused = 1;
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]);
+ sprite->data[6] = gBattleAnimArgs[2];
+ sprite->data[7] = gBattleAnimArgs[3];
+ sprite->callback = AnimConstrictBindingStep1;
+}
+
+static void AnimConstrictBindingStep1(struct Sprite* sprite)
+{
+ u8 spriteId;
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ {
+ sprite->affineAnimPaused = 0;
+ spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
+ sprite->data[0] = 0x100;
+ sprite->callback = AnimConstrictBindingStep2;
+ }
+}
+
+static void AnimConstrictBindingStep2(struct Sprite* sprite)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
+ if (!sprite->data[2])
+ sprite->data[0] += 11;
+ else
+ sprite->data[0] -= 11;
+
+ if (++sprite->data[1] == 6)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2] ^= 1;
+ }
+
+ if (sprite->affineAnimEnded)
+ {
+ if (--sprite->data[7] > 0)
+ StartSpriteAffineAnim(sprite, sprite->data[6]);
+ else
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_80FF458(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
+ if (gSprites[spriteId].invisible)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
+ gTasks[taskId].data[14] = gSprites[spriteId].oam.priority;
+ gSprites[spriteId].oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
+ spriteId = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER);
+ gTasks[taskId].data[15] = gSprites[spriteId].oam.priority;
+ gSprites[spriteId].oam.priority = GetBattlerSpriteBGPriority(BATTLE_PARTNER(gBattleAnimTarget));
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[11] = 0x100;
+ gTasks[taskId].func = sub_80FF53C;
+ }
+}
+
+static void sub_80FF53C(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
+ gTasks[taskId].data[10] += gTasks[taskId].data[0];
+ gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8;
+ if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
+ gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+
+ gTasks[taskId].data[11] += 16;
+ SetSpriteRotScale(spriteId, gTasks[taskId].data[11], gTasks[taskId].data[11], 0);
+ SetBattlerSpriteYOffsetFromYScale(spriteId);
+ if (--gTasks[taskId].data[1] == 0)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80FF5CC;
+ }
+}
+
+static void sub_80FF5CC(u8 taskId)
+{
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ {
+ if (gTasks[taskId].data[0] == 0)
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
+ ResetSpriteRotScale(spriteId);
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].oam.priority = gTasks[taskId].data[14];
+ spriteId = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER);
+ gSprites[spriteId].oam.priority = gTasks[taskId].data[15];
+ gTasks[taskId].data[0]++;
+ return;
+ }
+ }
+ else
+ {
+ if (gTasks[taskId].data[0] == 0)
+ return;
+ }
+
+ gTasks[taskId].data[0]++;
+ if (gTasks[taskId].data[0] == 3)
+ DestroyAnimVisualTask(taskId);
+}
+
+// Moves an orb from the target mon to the attacking mon.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+void AnimMimicOrb(struct Sprite* sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ gBattleAnimArgs[0] *= -1;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[1];
+ sprite->invisible = 1;
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->invisible = 0;
+ if (sprite->affineAnimEnded)
+ {
+ ChangeSpriteAffineAnim(sprite, 1);
+ sprite->data[0] = 25;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->callback = InitAndRunAnimFastLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ break;
+ }
+ }
+}
+
+// Animates a root that flickers away after some time.
+// arg 0: x pixel offset
+// arg 1: y pixel offset
+// arg 2: sprite subpriority offset
+// arg 3: sprite anim num
+// arg 4: duration
+void AnimIngrainRoot(struct Sprite* sprite)
+{
+ if (!sprite->data[0])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
+ sprite->pos2.x = gBattleAnimArgs[0];
+ sprite->pos2.y = gBattleAnimArgs[1];
+ sprite->subpriority = gBattleAnimArgs[2] + 30;
+ StartSpriteAnim(sprite, gBattleAnimArgs[3]);
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[0]++;
+ if (sprite->pos1.y + sprite->pos2.y > 120)
+ sprite->pos1.y += sprite->pos2.y + sprite->pos1.y - 120;
+ }
+ sprite->callback = AnimRootFlickerOut;
+}
+
+// Places a root on the path to the target mon that flickers away after some time.
+// arg 0: percent along the path to the target mon
+// arg 1: x pixel offset
+// arg 2: y pixel offset
+// arg 3: sprite subpriority offset
+// arg 4: sprite anum num
+// arg 5: duration
+void AnimFrenzyPlantRoot(struct Sprite *sprite)
+{
+ s16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ s16 attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ s16 targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ s16 targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+
+ targetX -= attackerX;
+ targetY -= attackerY;
+ sprite->pos1.x = attackerX + targetX * gBattleAnimArgs[0] / 100;
+ sprite->pos1.y = attackerY + targetY * gBattleAnimArgs[0] / 100;
+ sprite->pos2.x = gBattleAnimArgs[1];
+ sprite->pos2.y = gBattleAnimArgs[2];
+ sprite->subpriority = gBattleAnimArgs[3] + 30;
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+ sprite->data[2] = gBattleAnimArgs[5];
+ sprite->callback = AnimRootFlickerOut;
+ gUnknown_0203A0F8[0] = sprite->pos1.x;
+ gUnknown_0203A0F8[1] = sprite->pos1.y;
+ gUnknown_0203A0F8[2] = targetX;
+ gUnknown_0203A0F8[3] = targetY;
+}
+
+static void AnimRootFlickerOut(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > (sprite->data[2] - 10))
+ sprite->invisible = sprite->data[0] % 2;
+
+ if (sprite->data[0] > sprite->data[2])
+ DestroyAnimSprite(sprite);
+}
+
+// Moves an orb in a fast wavy path.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: horizontal velocity
+// arg 3: wave amplitude
+// arg 4: duration
+void AnimIngrainOrb(struct Sprite* sprite)
+{
+ if (!sprite->data[0])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ }
+
+ sprite->data[0]++;
+ sprite->pos2.x = sprite->data[1] * sprite->data[0];
+ sprite->pos2.y = Sin((sprite->data[0] * 20) & 0xFF, sprite->data[2]);
+ if (sprite->data[0] > sprite->data[3])
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80FF9B8(struct Sprite* sprite, s16 c)
+{
+ int a = (sprite->pos1.x << 8) | sprite->pos1.y;
+ int b = (sprite->data[6] << 8) | sprite->data[7];
+ c <<= 8;
+ sprite->data[5] = a;
+ sprite->data[6] = b;
+ sprite->data[7] = c;
+}
+
+bool8 sub_80FF9E0(struct Sprite* sprite)
+{
+ u16 r10 = (u8)(sprite->data[5] >> 8);
+ u16 r9 = (u8)sprite->data[5];
+ s32 r2 = (u8)(sprite->data[6] >> 8);
+ s32 r4 = (u8)sprite->data[6];
+ s16 r6 = sprite->data[7] >> 8;
+ s16 r3 = sprite->data[7] & 0xFF;
+ s16 r4_2;
+ s16 r0;
+ s32 var1;
+ s32 var2;
+
+ if (r2 == 0)
+ r2 = -32;
+ else if (r2 == 255)
+ r2 = 272;
+
+ r4_2 = r4 - r9;
+ r0 = r2 - r10;
+ var1 = r0 * r3 / r6;
+ var2 = r4_2 * r3 / r6;
+ sprite->pos1.x = var1 + r10;
+ sprite->pos1.y = var2 + r9;
+ if (++r3 == r6)
+ return TRUE;
+
+ sprite->data[7] = (r6 << 8) | r3;
+ return FALSE;
+}
+
+void sub_80FFA84(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 10)
+ StartSpriteAffineAnim(sprite, 1);
+
+ sprite->data[0]++;
+ if (sprite->data[0] > 50)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80FFAB4(struct Sprite* sprite)
+{
+ sprite->data[0] += sprite->data[3] * 128 / sprite->data[4];
+ if (sprite->data[0] >= 128)
+ {
+ sprite->data[1]++;
+ sprite->data[0] = 0;
+ }
+
+ sprite->pos2.y = Sin(sprite->data[0] + 128, 30 - sprite->data[1] * 8);
+ if (sub_80FF9E0(sprite))
+ {
+ sprite->pos2.y = 0;
+ sprite->data[0] = 0;
+ sprite->callback = sub_80FFA84;
+ }
+}
+
+void AnimPresent(struct Sprite* sprite)
+{
+ s16 targetX;
+ s16 targetY;
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+ targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
+ targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
+ if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget)
+ {
+ sprite->data[6] = targetX;
+ sprite->data[7] = targetY + 10;
+ sub_80FF9B8(sprite, 60);
+ sprite->data[3] = 1;
+ }
+ else
+ {
+ sprite->data[6] = targetX;
+ sprite->data[7] = targetY + 10;
+ sub_80FF9B8(sprite, 60);
+ sprite->data[3] = 3;
+ }
+
+ sprite->data[4] = 60;
+ sprite->callback = sub_80FFAB4;
+}
+
+static void sub_80FFB90(struct Sprite* sprite)
+{
+ int zero;
+ sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]);
+ zero = 0;
+ if (sprite->data[0] > 0x7F)
+ {
+ sprite->data[1]++;
+ sprite->data[0] = zero;
+ }
+
+ sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
+ if (sub_80FF9E0(sprite))
+ {
+ sprite->pos2.y = zero;
+ sprite->data[0] = zero;
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void AnimKnockOffItem(struct Sprite* sprite)
+{
+ s16 targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ {
+ sprite->data[6] = 0;
+ sprite->data[7] = targetY + 10;
+ sub_80FF9B8(sprite, 40);
+ sprite->data[3] = 3;
+ sprite->data[4] = 60;
+ sprite->callback = sub_80FFAB4;
+ }
+ else
+ {
+ sprite->data[6] = 255;
+ sprite->data[7] = targetY + 10;
+ if (IsContest())
+ sprite->data[6] = 0;
+
+ sub_80FF9B8(sprite, 40);
+ sprite->data[3] = 3;
+ sprite->data[4] = 60;
+ sprite->callback = sub_80FFB90;
+ }
+}
+
+// Animates a heal particle upward.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: vertical velocity
+// arg 3: unused
+void AnimPresentHealParticle(struct Sprite* sprite)
+{
+ if (!sprite->data[0])
+ {
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->data[1] = gBattleAnimArgs[2];
+ }
+
+ sprite->data[0]++;
+ sprite->pos2.y = sprite->data[1] * sprite->data[0];
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+void AnimItemSteal(struct Sprite* sprite)
+{
+ s16 attackerX;
+ s16 attackerY;
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
+ attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
+ if (BATTLE_PARTNER(gBattleAnimTarget) == gBattleAnimAttacker)
+ {
+ sprite->data[6] = attackerX;
+ sprite->data[7] = attackerY + 10;
+ sub_80FF9B8(sprite, 60);
+ sprite->data[3] = 1;
+ }
+ else
+ {
+ sprite->data[6] = attackerX;
+ sprite->data[7] = attackerY + 10;
+ sub_80FF9B8(sprite, 60);
+ sprite->data[3] = 3;
+ }
+
+ sprite->data[4] = 60;
+ sprite->callback = AnimItemStealStep;
+}
+
+static void AnimItemStealStep(struct Sprite* sprite)
+{
+ int zero;
+ sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]);
+ zero = 0;
+ if (sprite->data[0] > 127)
+ {
+ sprite->data[1]++;
+ sprite->data[0] = zero;
+ }
+
+ sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
+ if (sprite->pos2.y == 0)
+ PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(63));
+
+ if (sub_80FF9E0(sprite))
+ {
+ sprite->pos2.y = 0;
+ sprite->data[0] = 0;
+ sprite->callback = sub_80FFA84;
+ PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64));
+ }
+}
+
+// Moves a bag in a circular motion.
+// arg 0: y position
+// arg 1: initial wave offset
+void AnimTrickBag(struct Sprite* sprite)
+{
+ int a;
+ int b;
+
+ if (!sprite->data[0])
+ {
+ if (!IsContest())
+ {
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->pos1.x = 120;
+ }
+ else
+ {
+ a = gBattleAnimArgs[1] - 32;
+ if (a < 0)
+ b = gBattleAnimArgs[1] + 0xDF;
+ else
+ b = a;
+
+ sprite->data[1] = a - ((b >> 8) << 8);
+ sprite->pos1.x = 70;
+ }
+
+ sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[0];
+ sprite->data[4] = 20;
+ sprite->pos2.x = Cos(sprite->data[1], 60);
+ sprite->pos2.y = Sin(sprite->data[1], 20);
+ sprite->callback = AnimTrickBagStep1;
+ if (sprite->data[1] > 0 && sprite->data[1] < 192)
+ sprite->subpriority = 31;
+ else
+ sprite->subpriority = 29;
+ }
+}
+
+static void AnimTrickBagStep1(struct Sprite* sprite)
+{
+ switch (sprite->data[3])
+ {
+ case 0:
+ if (sprite->data[2] > 78)
+ {
+ sprite->data[3] = 1;
+ StartSpriteAffineAnim(sprite, 1);
+ break;
+ }
+ else
+ {
+ sprite->data[2] += sprite->data[4] / 10;
+ sprite->data[4] += 3;
+ sprite->pos1.y = sprite->data[2];
+ break;
+ }
+ break;
+ case 1:
+ if (sprite->data[3] && sprite->affineAnimEnded)
+ {
+ sprite->data[0] = 0;
+ sprite->data[2] = 0;
+ sprite->callback = AnimTrickBagStep2;
+ }
+ break;
+ }
+}
+
+static void AnimTrickBagStep2(struct Sprite* sprite)
+{
+ if (sprite->data[2] == gUnknown_08592700[sprite->data[0]][1])
+ {
+ if (gUnknown_08592700[sprite->data[0]][2] == 127)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = AnimTrickBagStep3;
+ }
+
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->data[2]++;
+ sprite->data[1] = (gUnknown_08592700[sprite->data[0]][0] * gUnknown_08592700[sprite->data[0]][2] + sprite->data[1]) & 0xFF;
+ if (!IsContest())
+ {
+ if ((u16)(sprite->data[1] - 1) < 191)
+ sprite->subpriority = 31;
+ else
+ sprite->subpriority = 29;
+ }
+
+ sprite->pos2.x = Cos(sprite->data[1], 60);
+ sprite->pos2.y = Sin(sprite->data[1], 20);
+ }
+}
+
+static void AnimTrickBagStep3(struct Sprite* sprite)
+{
+ if (sprite->data[0] > 20)
+ DestroyAnimSprite(sprite);
+
+ sprite->invisible = sprite->data[0] % 2;
+ sprite->data[0]++;
+}
+
+void sub_80FFFC0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[4] = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1;
+ task->data[6] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ task->data[10] = sub_80A861C(gBattleAnimTarget, 1);
+ task->data[11] = sub_80A861C(gBattleAnimTarget, 0);
+ task->data[5] = (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) ? 1 : -1;
+ task->data[9] = 56 - (task->data[5] * 64);
+ task->data[8] = task->data[7] - task->data[9] + task->data[6];
+ task->data[2] = CreateSprite(&gUnknown_08592778, task->data[8], task->data[9], task->data[4]);
+ if (task->data[2] == MAX_SPRITES)
+ DestroyAnimVisualTask(taskId);
+
+ gSprites[task->data[2]].data[0] = 10;
+ gSprites[task->data[2]].data[1] = task->data[8];
+ gSprites[task->data[2]].data[2] = task->data[6] - (task->data[10] / 2 + 10) * task->data[5];
+ gSprites[task->data[2]].data[3] = task->data[9];
+ gSprites[task->data[2]].data[4] = task->data[7] + (task->data[11] / 2 + 10) * task->data[5];
+ gSprites[task->data[2]].data[5] = sub_8100504(&gSprites[task->data[2]]);
+ InitAnimArcTranslation(&gSprites[task->data[2]]);
+ task->func = sub_8100128;
+}
+
+static void sub_8100128(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ struct Sprite* sprite = &gSprites[task->data[2]];
+ int a = task->data[0];
+ switch (a)
+ {
+ case 4:
+ sub_8100524(task, taskId);
+ if (TranslateAnimArc(sprite))
+ {
+ task->data[15] = 5;
+ task->data[0] = 0xFF;
+ }
+ break;
+ case 8:
+ sub_8100524(task, taskId);
+ if (TranslateAnimArc(sprite))
+ {
+ task->data[15] = 9;
+ task->data[0] = 0xFF;
+ }
+ break;
+ case 0:
+ sub_8100524(task, taskId);
+ if (TranslateAnimArc(sprite))
+ {
+ task->data[15] = 1;
+ task->data[0] = 0xFF;
+ }
+ break;
+ case 1:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0] = 10;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = task->data[6];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = task->data[7];
+ sprite->data[5] = sub_8100504(sprite);
+ task->data[4] += 2;
+ task->data[3] = a;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ InitAnimArcTranslation(sprite);
+ task->data[0]++;
+ break;
+ case 2:
+ sub_8100524(task, taskId);
+ if (TranslateAnimArc(sprite))
+ {
+ task->data[15] = 3;
+ task->data[0] = 0xFF;
+ }
+ break;
+ case 3:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0] = 10;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5];
+ sprite->data[5] = sub_8100504(sprite);
+ task->data[3] = 2;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ InitAnimArcTranslation(sprite);
+ task->data[0]++;
+ break;
+ case 5:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0] = 10;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
+ sprite->data[5] = sub_8100504(sprite);
+ task->data[4] -= 2;
+ task->data[3] = 3;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ InitAnimArcTranslation(sprite);
+ task->data[0]++;
+ break;
+ case 6:
+ sub_8100524(task, taskId);
+ if (TranslateAnimArc(sprite))
+ {
+ task->data[15] = 7;
+ task->data[0] = 0xFF;
+ }
+ break;
+ case 7:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0] = 10;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = task->data[6];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = task->data[7];
+ sprite->data[5] = sub_8100504(sprite);
+ task->data[4] += 2;
+ task->data[3] = 4;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ InitAnimArcTranslation(sprite);
+ task->data[0]++;
+ break;
+ case 9:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0] = 10;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
+ sprite->data[5] = sub_8100504(sprite);
+ task->data[3] = 5;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ InitAnimArcTranslation(sprite);
+ task->data[0]++;
+ break;
+ case 10:
+ sub_8100524(task, taskId);
+ if (TranslateAnimArc(sprite))
+ {
+ task->data[15] = 11;
+ task->data[0] = 0xFF;
+ }
+ break;
+ case 11:
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0] = 10;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = task->data[8];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = task->data[9];
+ sprite->data[5] = sub_8100504(sprite);
+ task->data[4] -= 2;
+ task->data[3] = 6;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ InitAnimArcTranslation(sprite);
+ task->data[0]++;
+ break;
+ }
+ case 12:
+ sub_8100524(task, taskId);
+ if (TranslateAnimArc(sprite))
+ {
+ DestroySprite(sprite);
+ task->data[0]++;
+ }
+ break;
+ case 13:
+ if (task->data[12] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ case 0xFF:
+ if (++task->data[1] > 5)
+ {
+ task->data[1] = 0;
+ task->data[0] = task->data[15];
+ }
+ break;
+ }
+}
+
+static s16 sub_8100504(struct Sprite* sprite)
+{
+ s16 var = 8;
+ if (sprite->data[4] < sprite->pos1.y)
+ var = -var;
+
+ return var;
+}
+
+static void sub_8100524(struct Task* task, u8 taskId)
+{
+ task->data[14]++;
+ if (task->data[14] > 0)
+ {
+ u8 spriteId;
+ s16 spriteX;
+ s16 spriteY;
+ task->data[14] = 0;
+ spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x;
+ spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y;
+ spriteId = CreateSprite(&gUnknown_08592778, spriteX, spriteY, task->data[4]);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 12;
+ gTasks[taskId].data[12]++;
+ gSprites[spriteId].data[0] = task->data[13] & 1;
+ gTasks[taskId].data[13]++;
+ StartSpriteAnim(&gSprites[spriteId], task->data[3]);
+ gSprites[spriteId].subpriority = task->data[4];
+ gSprites[spriteId].callback = sub_80CC408;
+ }
+ }
+}
+
+static void sub_80CC408(struct Sprite* sprite)
+{
+ sprite->data[0]++;
+ if (sprite->data[0] > 1)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ sprite->data[1]++;
+ if (sprite->data[1] > 8)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+ }
+}
+
+void sub_8100640(struct Sprite* sprite)
+{
+ u8 battler;
+ if (!gBattleAnimArgs[6])
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ if (GetBattlerSide(battler) != 0)
+ {
+ sprite->data[4] = 0;
+ sprite->data[2] = gBattleAnimArgs[3];
+ sprite->pos1.x = 0xFFF0;
+ }
+ else
+ {
+ sprite->data[4] = 1;
+ sprite->data[2] = -gBattleAnimArgs[3];
+ sprite->pos1.x = 0x100;
+ }
+
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[3] = gBattleAnimArgs[4];
+ switch (gBattleAnimArgs[5])
+ {
+ case 0:
+ sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
+ break;
+ case 1:
+ sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
+ break;
+ case 2:
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[0];
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
+ break;
+ case 3:
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[0];
+ GetAnimBattlerSpriteId(ANIM_TARGET);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
+ break;
+ }
+
+ sprite->callback = sub_810074C;
+}
+
+static void sub_810074C(struct Sprite* sprite)
+{
+ int a = sprite->data[7];
+ sprite->data[7]++;
+ sprite->pos2.y = (sprite->data[1] * gSineTable[sprite->data[0]]) >> 8;
+ sprite->pos2.x = sprite->data[2] * a;
+ sprite->data[0] = (sprite->data[3] * a) & 0xFF;
+ if (!sprite->data[4])
+ {
+ if (sprite->pos2.x + sprite->pos1.x <= 0xF7)
+ return;
+ }
+ else
+ {
+ if (sprite->pos2.x + sprite->pos1.x > -16)
+ return;
+ }
+
+ DestroySpriteAndMatrix(sprite);
+}
+
+void sub_81007C4(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[8] = IndexOfSpritePaletteTag(ANIM_TAG_LEAF) * 16 + 256;
+ task->data[12] = IndexOfSpritePaletteTag(ANIM_TAG_RAZOR_LEAF) * 16 + 256;
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[9] >= 0)
+ {
+ task->data[9] = 0;
+ BlendPalette(task->data[8], 16, task->data[10], gMagicalLeafBlendColors[task->data[11]]);
+ BlendPalette(task->data[12], 16, task->data[10], gMagicalLeafBlendColors[task->data[11]]);
+ if (++task->data[10] == 17)
+ {
+ task->data[10] = 0;
+ if (++task->data[11] == 7)
+ task->data[11] = 0;
+ }
+ }
+ break;
+ }
+
+ if (gBattleAnimArgs[7] == -1)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8100898(struct Sprite* sprite)
+{
+ u8 a;
+ u8 b;
+ u16 c;
+ u16 x;
+ u16 y;
+
+ if (gBattleAnimArgs[4] == 0)
+ {
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ if (gBattleAnimArgs[0] == 0)
+ {
+ a = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ b = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ }
+ else
+ {
+ a = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ b = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ }
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ if (gBattleAnimArgs[1] == 0)
+ {
+ sprite->pos1.x = gBattleAnimArgs[2] + a;
+ sprite->pos1.y = gBattleAnimArgs[3] + b;
+ sprite->data[5] = a;
+ sprite->data[6] = b;
+ }
+ else
+ {
+ sprite->pos1.x = a;
+ sprite->pos1.y = b;
+ sprite->data[5] = gBattleAnimArgs[2] + a;
+ sprite->data[6] = gBattleAnimArgs[3] + b;
+ }
+
+ x = sprite->pos1.x;
+ sprite->data[1] = x * 16;
+ y = sprite->pos1.y;
+ sprite->data[2] = y * 16;
+ sprite->data[3] = (sprite->data[5] - sprite->pos1.x) * 16 / gBattleAnimArgs[4];
+ sprite->data[4] = (sprite->data[6] - sprite->pos1.y) * 16 / gBattleAnimArgs[4];
+ c = ArcTan2Neg(sprite->data[5] - x, sprite->data[6] - y);
+ if (IsContest())
+ c -= 0x8000;
+
+ TrySetSpriteRotScale(sprite, 0, 0x100, 0x100, c);
+ sprite->callback = sub_81009A0;
+ }
+}
+
+static void sub_81009A0(struct Sprite* sprite)
+{
+ if (sprite->data[0])
+ {
+ sprite->data[1] += sprite->data[3];
+ sprite->data[2] += sprite->data[4];
+ sprite->pos1.x = sprite->data[1] >> 4 ;
+ sprite->pos1.y = sprite->data[2] >> 4 ;
+ sprite->data[0]--;
+ }
+ else
+ {
+ DestroySpriteAndMatrix(sprite);
+ }
+}
+
+static void sub_81009DC(struct Sprite* sprite)
+{
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81009F8(struct Sprite* sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != 0)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_8100A50(struct Sprite* sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) == 0)
+ StartSpriteAnim(sprite, 1);
+
+ sprite->callback = sub_81009DC;
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+}
+
+void sub_8100A94(struct Sprite* sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = sub_80A66DC;
+}
+
+// Moves the sprite in a diagonally slashing motion across the target mon.
+// Used by moves such as MOVE_CUT and MOVE_AERIAL_ACE.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: slice direction; 0 = right-to-left, 1 = left-to-right
+void AnimCuttingSlice(struct Sprite* sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ sprite->pos1.y += 8;
+
+ sprite->callback = AnimSliceStep;
+ if (gBattleAnimArgs[2] == 0)
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ }
+ else
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->hFlip = 1;
+ }
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[1] -= 0x400;
+ sprite->data[2] += 0x400;
+ sprite->data[5] = gBattleAnimArgs[2];
+ if (sprite->data[5] == 1)
+ sprite->data[1] = -sprite->data[1];
+}
+
+void sub_8100B88(struct Sprite* sprite)
+{
+ u8 a;
+ u8 b;
+ switch (gBattleAnimArgs[3])
+ {
+ case 1:
+ a = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 0);
+ b = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 1);
+ break;
+ case 2:
+ a = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ b = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)))
+ {
+ a = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 0) + a) / 2;
+ b = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 1) + b) / 2;
+ }
+ break;
+ case 0:
+ default:
+ a = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ b = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ break;
+ }
+
+ sprite->pos1.x = a;
+ sprite->pos1.y = b;
+ if (GetBattlerSide(gBattleAnimTarget) == 0)
+ sprite->pos1.y += 8;
+
+ sprite->callback = AnimSliceStep;
+ if (gBattleAnimArgs[2] == 0)
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ }
+ else
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->hFlip = 1;
+ }
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[1] -= 0x400;
+ sprite->data[2] += 0x400;
+ sprite->data[5] = gBattleAnimArgs[2];
+ if (sprite->data[5] == 1)
+ sprite->data[1] = -sprite->data[1];
+}
+
+static void AnimSliceStep(struct Sprite* sprite)
+{
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ if (sprite->data[5] == 0)
+ sprite->data[1] += 0x18;
+ else
+ sprite->data[1] -= 0x18;
+
+ sprite->data[2] -= 0x18;
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->data[0]++;
+ if (sprite->data[0] == 20)
+ {
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->data[0] = 3;
+ sprite->callback = WaitAnimForDuration;
+ }
+}
+
+void unref_sub_8100D38(struct Sprite* sprite)
+{
+ if (sprite->data[2] > 1)
+ {
+ if (sprite->data[3] & 1)
+ {
+ sprite->invisible = 0;
+ gSprites[sprite->data[0]].invisible = 0;
+ gSprites[sprite->data[1]].invisible = 0;
+ }
+ else
+ {
+ sprite->invisible = 1;
+ gSprites[sprite->data[0]].invisible = 1;
+ gSprites[sprite->data[1]].invisible = 1;
+ }
+
+ sprite->data[2] = 0;
+ sprite->data[3]++;
+ }
+ else
+ {
+ sprite->data[2]++;
+ }
+
+ if (sprite->data[3] == 10)
+ {
+ DestroySprite(&gSprites[sprite->data[0]]);
+ DestroySprite(&gSprites[sprite->data[1]]);
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_8100E1C(struct Sprite* sprite)
+{
+ sprite->data[0] = gBattleAnimArgs[2];
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[5]);
+ sprite->data[1] = -gBattleAnimArgs[3];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->callback = sub_8100E80;
+ sprite->callback(sprite);
+}
+
+static void sub_8100E80(struct Sprite* sprite)
+{
+ sprite->pos2.x = Cos(sprite->data[0], 100);
+ sprite->pos2.y = Sin(sprite->data[0], 20);
+ if (sprite->data[0] < 128)
+ sprite->subpriority = 0;
+ else
+ sprite->subpriority = 14;
+
+ sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF;
+ sprite->data[5] += 0x82;
+ sprite->pos2.y += sprite->data[5] >> 8;
+ sprite->data[2]++;
+ if (sprite->data[2] == sprite->data[3])
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8100EF0(struct Sprite* sprite)
+{
+ if (IsContest())
+ gBattleAnimArgs[1] += 8;
+
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest())
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker) + 1;
+ else
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = (IndexOfSpritePaletteTag(ANIM_TAG_PROTECT) << 4) + 0x100;
+ sprite->data[7] = 16;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7]));
+ sprite->callback = sub_8100FD4;
+}
+
+static void sub_8100FD4(struct Sprite *sprite)
+{
+ int a;
+ int i;
+ sprite->data[5] += 96;
+ sprite->pos2.x = -(sprite->data[5] >> 8);
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ a = gPlttBufferFaded[sprite->data[2] + 1];
+ i = 0;
+ do
+ {
+ gPlttBufferFaded[sprite->data[2] + ++i] = gPlttBufferFaded[sprite->data[2] + i + 1];
+ } while (i < 6);
+
+ gPlttBufferFaded[sprite->data[2] + 7] = a;
+ }
+
+ if (sprite->data[7] > 6 && sprite->data[0] >0 && ++sprite->data[6] > 1)
+ {
+ sprite->data[6] = 0;
+ sprite->data[7] -= 1;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7]));
+ }
+
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0] -= 1;
+ }
+ else if (++sprite->data[6] > 1)
+ {
+ sprite->data[6] = 0;
+ sprite->data[7]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7]));
+ if (sprite->data[7] == 16)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_80A67F4;
+ }
+ }
+}
+
+void sub_81010CC(struct Sprite* sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 0xFFE8;
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[6] = 0;
+ sprite->data[7] = 16;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7]));
+ sprite->callback = sub_8101138;
+}
+
+static void sub_8101138(struct Sprite* sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[2] > 0)
+ {
+ sprite->data[2] = 0;
+ if (((++sprite->data[1]) & 1) != 0)
+ {
+ if (sprite->data[6] <= 15)
+ sprite->data[6]++;
+ }
+ else if (sprite->data[7] > 0)
+ sprite->data[7]--;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7]));
+ if (sprite->data[6] == 16 && sprite->data[7] == 0)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 8)
+ {
+ sprite->data[1] = 0;
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sub_8101298(sprite, 16, 4);
+ if (++sprite->data[1] > 2)
+ {
+ sprite->data[1] = 0;
+ sprite->pos1.y++;
+ }
+
+ if (++sprite->data[2] <= 29)
+ break;
+
+ if (sprite->data[2] & 1)
+ {
+ if (sprite->data[6] > 0)
+ sprite->data[6]--;
+ }
+ else if (sprite->data[7] <= 15)
+ {
+ sprite->data[7]++;
+ }
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7]));
+ if (sprite->data[6] == 0 && sprite->data[7] == 16)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->invisible = 1;
+ sprite->data[0]++;
+ break;
+ case 4:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0));
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+static void sub_8101298(struct Sprite* sprite, int unk1, int unk2)
+{
+ if (sprite->data[3] <= 11)
+ sprite->data[4] += 2;
+
+ if ((u16)(sprite->data[3] - 0x12) <= 0x17)
+ sprite->data[4] -= 2;
+
+ if ((sprite->data[3]) > 0x2F)
+ sprite->data[4] += 2;
+
+ sprite->pos2.x = sprite->data[4] / 9;
+ sprite->pos2.y = sprite->data[4] / 14;
+ if (sprite->pos2.y < 0)
+ sprite->pos2.y *= -1;
+
+ sprite->data[3]++;
+ if (sprite->data[3] > 0x3B)
+ sprite->data[3] = 0;
+}
+
+void sub_810130C(struct Sprite* sprite)
+{
+ if (!gBattleAnimArgs[2])
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[5];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[4];
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = AnimTranslateLinearSimple;
+}
+
+void sub_810135C(struct Sprite* sprite)
+{
+ u8 battler;
+ if (!gBattleAnimArgs[2])
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler)))
+ {
+ SetAverageBattlerPositions(battler, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y);
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+ else
+ {
+ if (!gBattleAnimArgs[6])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, 1) + gBattleAnimArgs[1];
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[1];
+ }
+
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
+ }
+
+ sprite->data[0] = gBattleAnimArgs[5];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[4];
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = AnimTranslateLinearSimple;
+}
+
+void sub_8101440(struct Sprite* sprite)
+{
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+ else
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ StartSpriteAnim(sprite, 1);
+ }
+
+ sprite->callback = sub_81014A0;
+}
+
+static void sub_81014A0(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > 30)
+ {
+ sprite->pos2.y = (30 - sprite->data[0]) / 3;
+ sprite->pos2.x = Sin(sprite->data[1] * 4, 3);
+ sprite->data[1]++;
+ }
+
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81014F4(struct Sprite* sprite)
+{
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[3] = 1;
+ }
+ else
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[3] = 0xFFFF;
+ StartSpriteAffineAnim(sprite, 1);
+ }
+
+ sprite->callback = sub_8101560;
+}
+
+static void sub_8101560(struct Sprite* sprite)
+{
+ sprite->pos2.y = -(sprite->data[0] / 0x28);
+ sprite->pos2.x = sprite->data[4] / 10;
+ sprite->data[4] += sprite->data[3] * 2;
+ sprite->data[0] += sprite->data[1];
+ if (++sprite->data[1] > 60)
+ DestroySpriteAndMatrix(sprite);
+}
+
+void sub_81015AC(struct Sprite* sprite)
+{
+ sprite->pos1.x -= 32;
+ sprite->pos1.y -= 32;
+ sprite->data[0] = 20;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, sub_81015D4);
+}
+
+static void sub_81015D4(struct Sprite* sprite)
+{
+ switch (sprite->data[5] & 1)
+ {
+ case 0:
+ sprite->data[0] = 1;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, sub_81015D4);
+ break;
+ case 1:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[0] = 8;
+ sprite->data[2] = sprite->pos1.x + gUnknown_08592CD0[sprite->data[5] >> 8][0];
+ sprite->data[4] = sprite->pos1.y + gUnknown_08592CD0[sprite->data[5] >> 8][1];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, sub_8101684);
+ sprite->data[5] += 0x100;
+ PlaySE12WithPanning(SE_W199, BattleAnimAdjustPanning(63));
+ break;
+ }
+
+ sprite->data[5] ^= 1;
+}
+
+static void sub_8101684(struct Sprite* sprite)
+{
+ if ((sprite->data[5] >> 8) == 4)
+ {
+ sprite->data[0] = 10;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, sub_81016B8);
+ }
+ else
+ {
+ sprite->callback = sub_81015D4;
+ }
+}
+
+static void sub_81016B8(struct Sprite* sprite)
+{
+ s16 a;
+ s16 b;
+ if (sprite->oam.affineParam == 0)
+ {
+ sprite->data[0] = 3;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, sub_8101774);
+ }
+ else
+ {
+ switch (sprite->oam.affineParam)
+ {
+ case 1:
+ a = -8;
+ b = -8;
+ break;
+ case 2:
+ a = -8;
+ b = 8;
+ break;
+ case 3:
+ a = 8;
+ b = -8;
+ break;
+ default:
+ a = 8;
+ b = 8;
+ break;
+ }
+
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[0] = 6;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + a;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + b;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, sub_8101820);
+ }
+}
+
+static void sub_8101774(struct Sprite* sprite)
+{
+ if (sprite->data[2] == 0)
+ {
+ if ((sprite->data[1] += 3) > 16)
+ sprite->data[1] = 16;
+ }
+ else if ((sprite->data[1] -= 3) < 0)
+ {
+ sprite->data[1] = 0;
+ }
+
+ BlendPalettes(sub_80A75AC(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB(31, 31, 31));
+ if (sprite->data[1] == 16)
+ {
+ int pal;
+ sprite->data[2]++;
+ pal = sprite->oam.paletteNum;
+ LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4);
+ PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(63));
+ }
+ else if (sprite->data[1] == 0)
+ {
+ sprite->callback = sub_8101820;
+ }
+}
+
+static void sub_8101820(struct Sprite* sprite)
+{
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0] = 0;
+ sprite->callback = sub_8101848;
+ }
+}
+
+static void sub_8101848(struct Sprite* sprite)
+{
+ if (sprite->data[0] % 3 == 0)
+ {
+ sprite->data[1]++;
+ sprite->invisible ^= 1;
+ }
+
+ sprite->data[0]++;
+ if (sprite->data[1] == 8)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8101898(struct Sprite* sprite)
+{
+ sprite->oam.affineParam = gBattleAnimArgs[0];
+ if ((s16)sprite->oam.affineParam == 1)
+ {
+ sprite->pos1.x -= 0x18;
+ sprite->pos1.y -= 0x18;
+ }
+ else if ((s16)sprite->oam.affineParam == 2)
+ {
+ sprite->pos1.x -= 0x18;
+ sprite->pos1.y += 0x18;
+ sprite->oam.matrixNum = 16;
+ }
+ else if ((s16)sprite->oam.affineParam == 3)
+ {
+ sprite->pos1.x += 0x18;
+ sprite->pos1.y -= 0x18;
+ sprite->oam.matrixNum = 8;
+ }
+ else
+ {
+ sprite->pos1.x += 0x18;
+ sprite->pos1.y += 0x18;
+ sprite->oam.matrixNum = 24;
+ }
+
+ sprite->oam.tileNum = (sprite->oam.tileNum + 16);
+ sprite->callback = sub_81015AC;
+ sprite->callback(sprite);
+}
+
+void sub_8101940(struct Sprite* sprite)
+{
+ sprite->invisible = 1;
+ sprite->data[0] = 0;
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ sprite->callback = sub_8101998;
+ break;
+ case 1:
+ sprite->callback = sub_8101A74;
+ break;
+ case 2:
+ sprite->callback = sub_8101AC4;
+ break;
+ default:
+ sprite->callback = sub_8101B84;
+ break;
+ }
+}
+
+static void sub_8101998(struct Sprite* sprite)
+{
+ sprite->data[0] = 6;
+ sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker)) ? 2 : -2;
+ sprite->data[2] = 0;
+ sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
+ StoreSpriteCallbackInData6(sprite, sub_81019E8);
+ sprite->callback = TranslateMonBGUntil;
+}
+
+static void sub_81019E8(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
+ PrepareBattlerSpriteForRotScale(sprite->data[3], ST_OAM_OBJ_NORMAL);
+ sprite->data[4] = (sprite->data[6] = GetBattlerSide(gBattleAnimAttacker)) ? 0x300 : 0xFFFFFD00;
+ sprite->data[5] = 0;
+ }
+
+ sprite->data[5] += sprite->data[4];
+ SetSpriteRotScale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
+ SetBattlerSpriteYOffsetFromRotation(sprite->data[3]);
+ if (++sprite->data[0] > 3)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_8101B84;
+ }
+}
+
+static void sub_8101A74(struct Sprite* sprite)
+{
+ sprite->data[0] = 4;
+ sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker)) ? -3 : 3;
+ sprite->data[2] = 0;
+ sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
+ StoreSpriteCallbackInData6(sprite, sub_8101B84);
+ sprite->callback = TranslateMonBGUntil;
+}
+
+static void sub_8101AC4(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > 8)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_8101AE8;
+ }
+}
+
+static void sub_8101AE8(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
+ sprite->data[6] = GetBattlerSide(gBattleAnimAttacker);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->data[4] = 0xFC00;
+ sprite->data[5] = 0xC00;
+ }
+ else
+ {
+ sprite->data[4] = 0x400;
+ sprite->data[5] = 0xF400;
+ }
+ }
+
+ sprite->data[5] += sprite->data[4];
+ SetSpriteRotScale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
+ SetBattlerSpriteYOffsetFromRotation(sprite->data[3]);
+ if (++sprite->data[0] > 2)
+ {
+ ResetSpriteRotScale(sprite->data[3]);
+ sprite->callback = sub_8101B84;
+ }
+}
+
+static void sub_8101B84(struct Sprite* sprite)
+{
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8101B90(struct Sprite *sprite)
+{
+ sprite->data[0] = 0;
+ sprite->callback = sub_8101BA0;
+}
+
+static void sub_8101BA0(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = 0;
+ sprite->data[2] = gBattlerSpriteIds[gBattleAnimAttacker];
+ sprite->data[3] = GetBattlerSide(gBattleAnimAttacker);
+ sprite->data[4] = (sprite->data[3] != B_SIDE_PLAYER) ? 0x200 : -0x200;
+ sprite->data[5] = 0;
+ PrepareBattlerSpriteForRotScale(sprite->data[2], ST_OAM_OBJ_NORMAL);
+ sprite->data[0]++;
+ // fall through
+ case 1:
+ sprite->data[5] += sprite->data[4];
+ SetSpriteRotScale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
+ SetBattlerSpriteYOffsetFromRotation(sprite->data[2]);
+ if (++sprite->data[1] > 3)
+ {
+ sprite->data[1] = 0;
+ sprite->data[4] *= -1;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[5] += sprite->data[4];
+ SetSpriteRotScale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
+ SetBattlerSpriteYOffsetFromRotation(sprite->data[2]);
+ if (++sprite->data[1] > 3)
+ {
+ ResetSpriteRotScale(sprite->data[2]);
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_8101C94(u8 taskId)
+{
+ u8 a;
+
+ gTasks[taskId].data[0] = gBattlerSpriteIds[gBattleAnimAttacker];
+ a = GetBattlerSide(gBattleAnimAttacker);
+ gTasks[taskId].data[1] = a;
+ gTasks[taskId].data[2] = 0;
+ switch (gBattleAnimArgs[0])
+ {
+ default:
+ DestroyAnimVisualTask(taskId);
+ break;
+ case 0:
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 8;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[5] = 3;
+ if (a == 0)
+ gTasks[taskId].data[5] *= -1;
+
+ gTasks[taskId].func = sub_8101D2C;
+ break;
+ case 1:
+ gTasks[taskId].data[3] = 8;
+ gTasks[taskId].data[4] = 0x600;
+ gTasks[taskId].data[5] = 0xC0;
+ if (a == 0)
+ {
+ gTasks[taskId].data[4] = -gTasks[taskId].data[4];
+ gTasks[taskId].data[5] = -gTasks[taskId].data[5];
+ }
+
+ gTasks[taskId].func = sub_8101EEC;
+ break;
+ }
+}
+
+static void sub_8101D2C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[2])
+ {
+ case 0:
+ if (task->data[3])
+ {
+ task->data[4] += task->data[5];
+ gSprites[task->data[0]].pos2.x = task->data[4];
+ task->data[3]--;
+ }
+ else
+ {
+ task->data[3] = 8;
+ task->data[4] = 0;
+ task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0;
+ PrepareBattlerSpriteForRotScale(task->data[0], ST_OAM_OBJ_NORMAL);
+ task->data[2]++;
+ }
+ break;
+ case 1:
+ if (task->data[3])
+ {
+ task->data[4] += task->data[5];
+ SetSpriteRotScale(task->data[0], 0x100, 0x100, task->data[4]);
+ SetBattlerSpriteYOffsetFromRotation(task->data[0]);
+ task->data[3]--;
+ }
+ else
+ {
+ task->data[3] = 8;
+ task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2;
+ task->data[6] = 1;
+ task->data[2]++;
+ }
+ break;
+ case 2:
+ if (task->data[3])
+ {
+ if (task->data[6])
+ {
+ task->data[6]--;
+ }
+ else
+ {
+ if (task->data[3] & 1)
+ gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5];
+ else
+ gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5];
+
+ task->data[6] = 1;
+ task->data[3]--;
+ }
+ }
+ else
+ {
+ gSprites[task->data[0]].pos2.x = task->data[4];
+ task->data[3] = 12;
+ task->data[2]++;
+ }
+ break;
+ case 3:
+ if (task->data[3])
+ {
+ task->data[3]--;
+ }
+ else
+ {
+ task->data[3] = 3;
+ task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[5] = (task->data[1] == 0) ? 8 : -8;
+ task->data[2]++;
+ }
+ break;
+ case 4:
+ if (task->data[3])
+ {
+ task->data[4] += task->data[5];
+ gSprites[task->data[0]].pos2.x = task->data[4];
+ task->data[3]--;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_8101EEC(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (task->data[3])
+ {
+ task->data[4] -= task->data[5];
+ SetSpriteRotScale(task->data[0], 0x100, 0x100, task->data[4]);
+ SetBattlerSpriteYOffsetFromRotation(task->data[0]);
+ task->data[3]--;
+ }
+ else
+ {
+ ResetSpriteRotScale(task->data[0]);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_8101F40(struct Sprite* sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2];
+ }
+
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ StoreSpriteCallbackInData6(sprite, sub_810208C);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+}
+
+void sub_8101FA8(struct Sprite* sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0;
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ StoreSpriteCallbackInData6(sprite, sub_8102044);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+}
+
+void sub_8101FF0(struct Sprite* sprite)
+{
+ sprite->pos1.x = sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0 + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ StartSpriteAnim(sprite, 1);
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->callback = sub_810208C;
+}
+
+static void sub_8102044(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > 8)
+ {
+ sprite->data[0] = 12;
+ sprite->data[1] = 8;
+ sprite->data[2] = 0;
+ StoreSpriteCallbackInData6(sprite, sub_810207C);
+ sprite->callback = TranslateSpriteOverDuration;
+ }
+}
+
+static void sub_810207C(struct Sprite* sprite)
+{
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->callback = sub_810208C;
+}
+
+static void sub_810208C(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > 1)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible = !sprite->invisible;
+ if (++sprite->data[1] > 8)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_81020D8(struct Sprite* sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[2];
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[2];
+ }
+
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_810213C;
+}
+
+static void sub_810213C(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > sprite->data[1])
+ {
+ sprite->data[0] = 0;
+ sprite->pos1.y--;
+ }
+
+ sprite->pos1.y -= sprite->data[0];
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810217C(struct Sprite* sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - 12;
+ sprite->data[0] = 0;
+ sprite->data[1] = 2;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = BattleAnimAdjustPanning(-64);
+ sprite->callback = sub_81021CC;
+}
+
+static void sub_81021CC(struct Sprite* sprite)
+{
+ if (++sprite->data[0] >= sprite->data[1])
+ {
+ sprite->invisible = !sprite->invisible;
+ if (!sprite->invisible)
+ {
+ sprite->data[4]++;
+ if (!(sprite->data[4] & 1))
+ PlaySE12WithPanning(SE_W207B, sprite->data[5]);
+ }
+
+ sprite->data[0] = 0;
+ if (++sprite->data[2] > 1)
+ {
+ sprite->data[2] = 0;
+ sprite->data[1]++;
+ }
+ }
+
+ if (sprite->animEnded && sprite->data[1] > 16 && sprite->invisible)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8102268(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ if (IsContest())
+ sprite->pos1.y += 10;
+
+ sprite->data[0]++;
+ }
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81022D4(u8 taskId)
+{
+ if (gTasks[taskId].data[2] == 1)
+ {
+ gBattleAnimArgs[7] = 0xFFFF;
+ gTasks[taskId].data[2]++;
+ }
+ else if (gTasks[taskId].data[2] == 2)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ if (++gTasks[taskId].data[0] == 4)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - gTasks[taskId].data[1], gTasks[taskId].data[1]));
+ if (gTasks[taskId].data[1] == 16)
+ gTasks[taskId].data[2]++;
+ }
+ }
+}
+
+void sub_810234C(struct Sprite* sprite)
+{
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->animPaused = 1;
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = sub_810237C;
+}
+
+static void sub_810237C(struct Sprite* sprite)
+{
+ if (sprite->data[0])
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ sprite->animPaused = 0;
+ sprite->data[0] = 30;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ }
+}
+
+void sub_81023E0(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] == 4)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1]));
+ if (gTasks[taskId].data[1] == 16)
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void unref_sub_8102434(u8 taskId)
+{
+ u8 i;
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == B_SIDE_PLAYER)
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]);
+
+ if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == B_SIDE_OPPONENT)
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]);
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void unref_sub_81024A8(u8 taskId)
+{
+ u8 i;
+ for (i = 0; i < gBattlersCount; i++)
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[i]);
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_81024E0(struct Sprite* sprite)
+{
+ if (IsContest())
+ {
+ sprite->pos1.x = 48;
+ sprite->pos1.y = 40;
+ }
+ else
+ {
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1];
+ }
+
+ sprite->oam.shape = 0;
+ sprite->oam.size = 3;
+ sprite->data[0] = 0;
+ sprite->callback = sub_8102528;
+}
+
+static void sub_8102528(struct Sprite* sprite)
+{
+ if (sprite->data[0])
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8102540(struct Sprite* sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = 1;
+ sprite->callback = sub_8102584;
+}
+
+static void sub_8102584(struct Sprite* sprite)
+{
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ if (sprite->data[2] < 120)
+ {
+ sprite->pos1.y++;
+ sprite->data[2]++;
+ }
+ }
+
+ if (sprite->data[0])
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81026A8(u8);
+
+
+void sub_81025C0(u8 taskId)
+{
+ int a = sub_80A75AC(1, 0, 0, 0, 0, 0, 0) & 0xFFFF;
+ int b;
+ int c;
+ int d;
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = a;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[6] = 0;
+ gTasks[taskId].data[7] = 13;
+ gTasks[taskId].data[8] = 14;
+ gTasks[taskId].data[9] = 15;
+ b = sub_80A76C4(1, 1, 1, 1);
+ c = a | b;
+ StorePointerInVars(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void*)c);
+ b = b | (0x10000 << IndexOfSpritePaletteTag(ANIM_TAG_MOON));
+ d = IndexOfSpritePaletteTag(ANIM_TAG_GREEN_SPARKLE);
+ BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 16, RGB(27, 29, 31));
+ gTasks[taskId].func = sub_81026A8;
+ gTasks[taskId].func(taskId);
+}
+
+void sub_81026A8(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 0)
+ {
+ u16 color;
+ u16 bitmask;
+ u16 r3;
+ u16 i;
+ u16 j;
+ task->data[1] = 0;
+ if (++task->data[2] <= 15)
+ {
+ u16 red;
+ u16 green;
+ u16 blue;
+ task->data[4] += task->data[7];
+ task->data[5] += task->data[8];
+ task->data[6] += task->data[9];
+ red = task->data[4] >> 3;
+ green = task->data[5] >> 3;
+ blue = task->data[6] >> 3;
+ color = RGB(red, green, blue);
+ }
+ else
+ {
+ color = RGB(27, 29, 31);
+ task->data[0]++;
+ }
+
+ bitmask = 1;
+ r3 = 0;
+ for (i = 0; i <= 15; i++)
+ {
+ if (task->data[3] & bitmask)
+ {
+ for (j = 1; j <= 15; j++)
+ {
+ gPlttBufferFaded[r3 + j] = color;
+ }
+ }
+
+ bitmask <<= 1;
+ r3 += 16;
+ }
+ }
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ u8 spriteId;
+ for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++)
+ {
+ if (gSprites[spriteId].template == &gUnknown_08592EBC || gSprites[spriteId].template == &gBattleAnimSpriteTemplate_8592EEC)
+ gSprites[spriteId].data[0] = 1;
+ }
+
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 30)
+ {
+ BeginNormalPaletteFade((u32)LoadPointerFromVars(task->data[14], task->data[15]), 0, 16, 0, RGB(27, 29, 31));
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8102844(struct Sprite* sprite)
+{
+ if (gBattleAnimArgs[2] < 2)
+ gBattleAnimArgs[2] = 2;
+
+ if (gBattleAnimArgs[2] > 0x7F)
+ gBattleAnimArgs[2] = 0x7F;
+
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[6] = sprite->pos1.x;
+ sprite->data[7] = sprite->pos1.y;
+ if (IsContest())
+ {
+ sprite->oam.matrixNum = 8;
+ sprite->pos1.x += 40;
+ sprite->pos1.y += 20;
+ sprite->data[2] = sprite->pos1.x << 7;
+ sprite->data[3] = -0x1400 / sprite->data[1];
+ sprite->data[4] = sprite->pos1.y << 7;
+ sprite->data[5] = -0xA00 / sprite->data[1];
+ }
+ else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos1.x -= 40;
+ sprite->pos1.y += 20;
+ sprite->data[2] = sprite->pos1.x << 7;
+ sprite->data[3] = 0x1400 / sprite->data[1];
+ sprite->data[4] = sprite->pos1.y << 7;
+ sprite->data[5] = -0xA00 / sprite->data[1];
+ }
+ else
+ {
+ sprite->pos1.x += 40;
+ sprite->pos1.y -= 20;
+ sprite->data[2] = sprite->pos1.x << 7;
+ sprite->data[3] = -0x1400 / sprite->data[1];
+ sprite->data[4] = sprite->pos1.y << 7;
+ sprite->data[5] = 0xA00 / sprite->data[1];
+ sprite->oam.matrixNum = 24;
+ }
+
+ sprite->callback = sub_810296C;
+}
+
+static void sub_810296C(struct Sprite* sprite)
+{
+ sprite->data[2] += sprite->data[3];
+ sprite->data[4] += sprite->data[5];
+ sprite->pos1.x = sprite->data[2] >> 7;
+ sprite->pos1.y = sprite->data[4] >> 7;
+ if (--sprite->data[1] == 1)
+ {
+ sprite->pos1.x = sprite->data[6];
+ sprite->pos1.y = sprite->data[7];
+ }
+
+ if (sprite->data[1] == 0)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81029B4(u8 taskId)
+{
+ u16 i;
+ int obj;
+ u16 r3;
+ u16 r4;
+ struct Task* task = &gTasks[taskId];
+ task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ task->data[1] = AllocSpritePalette(ANIM_TAG_BENT_SPOON);
+ r3 = (task->data[1] * 16) + 0x100;
+ r4 = (gSprites[task->data[0]].oam.paletteNum + 16) << 4;
+ for (i = 1; i < 16; i++)
+ gPlttBufferUnfaded[r3 + i] = gPlttBufferUnfaded[r4 + i];
+
+ BlendPalette(r3, 16, 11, RGB(0, 0, 0));
+ task->data[3] = 0;
+ i = 0;
+ while (i < 2 && (obj = CloneBattlerSpriteWithBlend(0)) >= 0)
+ {
+ gSprites[obj].oam.paletteNum = task->data[1];
+ gSprites[obj].data[0] = 0;
+ gSprites[obj].data[1] = i << 7;
+ gSprites[obj].data[2] = taskId;
+ gSprites[obj].callback = sub_8102B3C;
+ task->data[3]++;
+ i++;
+ }
+
+ task->func = sub_8102AE0;
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+}
+
+static void sub_8102AE0(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (!task->data[3])
+ {
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+
+ FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_8102B3C(struct Sprite* sprite)
+{
+ if (++sprite->data[3] > 1)
+ {
+ sprite->data[3] = 0;
+ sprite->data[0]++;
+ }
+
+ if (sprite->data[0] > 64)
+ {
+ gTasks[sprite->data[2]].data[3]--;
+ obj_delete_but_dont_free_vram(sprite);
+ }
+ else
+ {
+ sprite->data[4] = gSineTable[sprite->data[0]] / 6;
+ sprite->data[5] = gSineTable[sprite->data[0]] / 13;
+ sprite->data[1] = (sprite->data[1] + sprite->data[5]) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[1], sprite->data[4]);
+ }
+}
+
+void sub_8102BCC(struct Sprite* sprite)
+{
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+}
+
+void sub_8102BE8(u8 taskId)
+{
+ u16 i;
+ u16 j;
+ u16 index;
+
+ index = IndexOfSpritePaletteTag(gUnknown_08593020[0][0]);
+ if (index != 0xFF)
+ {
+ index = (index << 4) + 0x100;
+ for (i = 1; i < ARRAY_COUNT(gUnknown_08593020[0]); i++)
+ gPlttBufferFaded[index + i] = gUnknown_08593020[0][i];
+ }
+
+ for (j = 1; j < ARRAY_COUNT(gUnknown_08593020); j++)
+ {
+ index = AllocSpritePalette(gUnknown_08593020[j][0]);
+ if (index != 0xFF)
+ {
+ index = (index << 4) + 0x100;
+ for (i = 1; i < ARRAY_COUNT(gUnknown_08593020[0]); i++)
+ gPlttBufferFaded[index + i] = gUnknown_08593020[j][i];
+ }
+ }
+ DestroyAnimVisualTask(taskId);
+}
+
+// clears the rainbow effect for musical notes.
+void sub_8102CA0(u8 taskId)
+{
+ u16 i;
+ for (i = 1; i < ARRAY_COUNT(gUnknown_08593020); i++)
+ FreeSpritePaletteByTag(gUnknown_08593020[i][0]);
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8102CD4(struct Sprite* sprite)
+{
+ u8 index;
+ u8 a;
+ u8 b;
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ StartSpriteAnim(sprite, gBattleAnimArgs[0]);
+ if ((index = IndexOfSpritePaletteTag(gUnknown_08593020[gBattleAnimArgs[1]][0])) != 0xFF)
+ sprite->oam.paletteNum = index;
+
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = 0;
+ sprite->data[3] = gBattleAnimArgs[2];
+ if (IsContest())
+ {
+ a = 48;
+ b = 40;
+ }
+ else
+ {
+ a = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ b = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ }
+
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sub_8102D8C(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 40);
+ sprite->callback = sub_8102DE4;
+}
+
+static void sub_8102D8C(s16 a, s16 b, s16* c, s16* d, s8 e)
+{
+ int f;
+ int g;
+ if (a < 0)
+ e = -e;
+
+ f = a << 8;
+ g = f / e;
+ if (g == 0)
+ g = 1;
+
+ *c = f / g;
+ *d = (b << 8) / g;
+}
+
+static void sub_8102DE4(struct Sprite* sprite)
+{
+ int b;
+ s16 a;
+ int c;
+ u8 index;
+ sprite->data[0]++;
+ b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->pos2.y = Sin(b, 15);
+ a = (u16)sprite->pos1.y;
+ c = (u16)sprite->pos1.x;
+
+ if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80)
+ {
+ DestroySpriteAndMatrix(sprite);
+ }
+ else
+ {
+ if (sprite->data[3] && ++sprite->data[2] > sprite->data[3])
+ {
+ sprite->data[2] = 0;
+ if (++sprite->data[1] > 3)
+ sprite->data[1] = 0;
+
+ index = IndexOfSpritePaletteTag(gUnknown_08593020[sprite->data[1]][0]);
+ if (index != 0xFF)
+ sprite->oam.paletteNum = index;
+ }
+ }
+}
+
+void sub_8102EB0(struct Sprite* sprite)
+{
+ int a;
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ {
+ a = gBattleAnimArgs[1];
+ (u16)gBattleAnimArgs[1] = -a;
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ StartSpriteAnim(sprite, gBattleAnimArgs[0]);
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5;
+ sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5;
+ sprite->callback = sub_8102F40;
+}
+
+static void sub_8102F40(struct Sprite* sprite)
+{
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ if (sprite->data[0] > 5 && sprite->data[3] == 0)
+ {
+ sprite->data[2] = (sprite->data[2] + 16) & 0xFF;
+ sprite->pos2.x = Cos(sprite->data[2], 18);
+ sprite->pos2.y = Sin(sprite->data[2], 18);
+ if (sprite->data[2] == 0)
+ sprite->data[3] = 1;
+ }
+
+ if (++sprite->data[0] == 48)
+ DestroySpriteAndMatrix(sprite);
+}
+
+void sub_8102FB8(struct Sprite* sprite)
+{
+ s16 a;
+ if (gBattleAnimArgs[0] == 1)
+ {
+ sprite->oam.matrixNum = 8;
+ a = 16;
+ }
+ else
+ {
+ a = -16;
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + a;
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 8;
+ sprite->data[0] = 8;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_8103028(struct Sprite* sprite)
+{
+ s16 xDiff;
+ u8 index;
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ sprite->pos1.y += 8;
+ StartSpriteAnim(sprite, gBattleAnimArgs[1]);
+ index = IndexOfSpritePaletteTag(gUnknown_08593020[gBattleAnimArgs[2]][0]);
+ if (index != 0xFF)
+ sprite->oam.paletteNum = index;
+
+ xDiff = (gBattleAnimArgs[0] == 0) ? -32 : 32;
+ sprite->data[0] = 40;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = xDiff + sprite->data[1];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->data[3] - 40;
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_81030B0;
+}
+
+static void sub_81030B0(struct Sprite* sprite)
+{
+ if (AnimTranslateLinear(sprite) == 0)
+ {
+ s16 xDiff;
+ xDiff = Sin(sprite->data[5], 8);
+ if (sprite->pos2.x < 0)
+ xDiff = -xDiff;
+
+ sprite->pos2.x += xDiff;
+ sprite->pos2.y += Sin(sprite->data[5], 4);
+ sprite->data[5] = (sprite->data[5] + 8) & 0xFF;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_810310C(u8 battler, struct Sprite* sprite)
+{
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
+ sprite->pos1.x = sub_80A861C(battler, 5) + 8;
+ else
+ sprite->pos1.x = sub_80A861C(battler, 4) - 8;
+
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) - (s16)sub_80A861C(battler, 0) / 4;
+}
+
+void sub_8103164(struct Sprite* sprite)
+{
+ u8 a;
+ u8 battler;
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ sub_810310C(battler, sprite);
+ a = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1;
+ sprite->data[0] = gBattleAnimArgs[1];
+ sprite->data[1] = a + 2;
+ StartSpriteAnim(sprite, a);
+ StoreSpriteCallbackInData6(sprite, sub_81031D0);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+}
+
+static void sub_81031D0(struct Sprite* sprite)
+{
+ if (--sprite->data[0] == 0)
+ {
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ StartSpriteAnim(sprite, sprite->data[1]);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ }
+}
+
+void sub_8103208(struct Sprite* sprite)
+{
+ u8 battler;
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ sub_810310C(battler, sprite);
+ sprite->data[0] = 0;
+ StoreSpriteCallbackInData6(sprite, sub_8103250);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+}
+
+static void sub_8103250(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > 16)
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+ }
+}
+
+void sub_8103284(struct Sprite* sprite)
+{
+ u8 battler;
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, 0);
+ sprite->pos1.y = sub_80A861C(battler, 2);
+ if (sprite->pos1.y <= 9)
+ sprite->pos1.y = 10;
+
+ sprite->data[0] = 1;
+ sprite->data[1] = 0;
+ sprite->data[2] = sprite->subpriority;
+ sprite->data[3] = sprite->subpriority + 4;
+ sprite->data[4] = 0;
+ StoreSpriteCallbackInData6(sprite, sub_8103300);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+}
+
+static void sub_8103300(struct Sprite* sprite)
+{
+ if (++sprite->data[4] > 12)
+ sprite->callback = sub_8103320;
+}
+
+static void sub_8103320(struct Sprite* sprite)
+{
+ s16 temp;
+ s16 temp2;
+ sprite->data[1] += 4;
+ if (sprite->data[1] > 254)
+ {
+ if (--sprite->data[0] == 0)
+ {
+ sprite->pos2.x = 0;
+ sprite->callback = sub_8103250;
+ return;
+ }
+ else
+ {
+ sprite->data[1] &= 0xFF;
+ }
+ }
+
+ if (sprite->data[1] > 0x4F)
+ sprite->subpriority = sprite->data[3];
+
+ if (sprite->data[1] > 0x9F)
+ sprite->subpriority = sprite->data[2];
+
+ temp = gSineTable[sprite->data[1]];
+ sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1);
+}
+
+void sub_8103390(struct Sprite* sprite)
+{
+ u8 bank;
+ if (gBattleAnimArgs[0] == 0)
+ bank = gBattleAnimAttacker;
+ else
+ bank = gBattleAnimTarget;
+
+ sub_810310C(bank, sprite);
+ if (GetBattlerSide(bank) == B_SIDE_PLAYER)
+ {
+ StartSpriteAnim(sprite, 0);
+ sprite->data[0] = 2;
+ }
+ else
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->data[0] = 3;
+ }
+
+ sprite->callback = sub_81033F0;
+}
+
+static void sub_81033F0(struct Sprite* sprite)
+{
+ if (++sprite->data[1] > 10)
+ {
+ sprite->data[1] = 0;
+ StartSpriteAnim(sprite, sprite->data[0]);
+ StoreSpriteCallbackInData6(sprite, sub_810342C);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ }
+}
+
+static void sub_810342C(struct Sprite* sprite)
+{
+ if (++sprite->data[1] > 5)
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
new file mode 100755
index 000000000..8acbf62d4
--- /dev/null
+++ b/src/battle_anim_effects_2.c
@@ -0,0 +1,3884 @@
+#include "global.h"
+#include "alloc.h"
+#include "battle_anim.h"
+#include "battle_interface.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "main.h"
+#include "math_util.h"
+#include "palette.h"
+#include "random.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "trig.h"
+#include "util.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+
+extern void sub_8108C94(struct Sprite *);
+extern void sub_810310C(u8, struct Sprite *);
+
+void sub_8103448(struct Sprite *);
+void sub_8103498(struct Sprite *);
+void sub_810358C(struct Sprite *);
+void sub_8103620(struct Sprite *);
+void Anim_KinesisZapEnergy(struct Sprite *);
+void Anim_SwordsDanceBlade(struct Sprite *);
+void AnimSonicBoomProjectile(struct Sprite *);
+void sub_8103AA4(struct Sprite *);
+void sub_8103FE8(struct Sprite *);
+void sub_8104088(struct Sprite *);
+void sub_810413C(struct Sprite *);
+void sub_81041C4(struct Sprite *);
+void Anim_RazorWindTornado(struct Sprite *);
+void Anim_ViceGripPincer(struct Sprite *);
+void Anim_GuillotinePincer(struct Sprite *);
+void Anim_BreathPuff(struct Sprite *);
+void Anim_AngerMark(struct Sprite *);
+void sub_810501C(struct Sprite *);
+void sub_81051C4(struct Sprite *);
+void sub_81052A4(struct Sprite *);
+void sub_81054E8(struct Sprite *);
+void sub_8105538(struct Sprite *);
+void sub_8105C48(struct Sprite *);
+void sub_8105DE8(struct Sprite *);
+void sub_8105E60(struct Sprite *);
+void sub_8106140(struct Sprite *);
+void sub_81061C4(struct Sprite *);
+void sub_810624C(struct Sprite *);
+void AnimOrbitFast(struct Sprite *);
+void AnimOrbitScatter(struct Sprite *);
+void sub_8106944(struct Sprite *);
+void sub_81069B8(struct Sprite *);
+void sub_81069D0(struct Sprite *);
+void sub_8106AD0(struct Sprite *);
+void sub_8106B54(struct Sprite *);
+void sub_8106C80(struct Sprite *);
+void sub_8106CD0(struct Sprite *);
+void sub_8106E00(struct Sprite *);
+void sub_8106F00(struct Sprite *);
+void sub_8106F60(struct Sprite *);
+void sub_81070AC(struct Sprite *);
+static void sub_81034D8(struct Sprite *);
+static void sub_8103658(struct Sprite *);
+static void sub_8103680(struct Sprite *);
+static void AnimTask_WithdrawStep(u8);
+static void Anim_SwordsDanceBladeStep(struct Sprite *);
+static void sub_8104018(struct Sprite *);
+static void sub_8104154(struct Sprite *);
+static void sub_810421C(struct Sprite *);
+static void sub_81042A0(struct Sprite *);
+static void Anim_ViceGripPincerStep(struct Sprite *);
+static void Anim_GuillotinePincerStep1(struct Sprite *);
+static void Anim_GuillotinePincerStep2(struct Sprite *);
+static void Anim_GuillotinePincerStep3(struct Sprite *);
+static void AnimTask_GrowAndGreyscaleStep(u8);
+static void AnimTask_MinimizeStep1(u8);
+static void CreateMinimizeSprite(struct Task *, u8);
+static void ClonedMinizeSprite_Step(struct Sprite *);
+static void AnimTask_SplashStep(u8);
+static void AnimTask_GrowAndShrinkStep(u8);
+static void sub_8104C78(u8);
+static void sub_8104D28(u8);
+static void sub_8104F54(u8);
+static void sub_8105078(struct Sprite *);
+static void sub_810557C(struct Sprite *);
+static void sub_81055F4(struct Sprite *);
+static void sub_810561C(struct Sprite *);
+static void sub_8105694(struct Sprite *);
+static void sub_81056D4(struct Sprite *);
+static void sub_810571C(struct Sprite *);
+static void sub_810575C(struct Sprite *);
+static void sub_81057B8(u8);
+static void sub_8105878(u8);
+static void sub_81059E0(u8);
+static void sub_8105B08(u8);
+static void sub_8105F30(u8);
+static void sub_8105F84(u8);
+static void sub_810618C(struct Sprite *);
+static void sub_810627C(struct Sprite *);
+static void sub_81063A8(u8);
+static void sub_81065EC(u8);
+static void AnimOrbitFastStep(struct Sprite *);
+static void AnimOrbitScatterStep(struct Sprite *);
+static void sub_8106D5C(struct Sprite *);
+static void sub_8106DD4(u8);
+static void sub_8106EC8(struct Sprite *);
+static void sub_8107018(struct Sprite *);
+static void sub_810703C(struct Sprite *);
+
+const struct SpriteTemplate gUnknown_08593264 =
+{
+ .tileTag = ANIM_TAG_FINGER,
+ .paletteTag = ANIM_TAG_FINGER,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103448,
+};
+
+const union AnimCmd gUnknown_0859327C[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593284[] =
+{
+ gUnknown_0859327C,
+};
+
+const struct SpriteTemplate gUnknown_08593288 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103498,
+};
+
+const struct SpriteTemplate gUnknown_085932A0 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810358C,
+};
+
+extern const union AffineAnimCmd *const gUnknown_08597060[];
+const struct SpriteTemplate gUnknown_085932B8 =
+{
+ .tileTag = ANIM_TAG_CLAMP,
+ .paletteTag = ANIM_TAG_CLAMP,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597060,
+ .callback = sub_8103620,
+};
+
+const union AnimCmd gUnknown_085932D0[] =
+{
+ ANIMCMD_FRAME(0, 9),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085932E4[] =
+{
+ gUnknown_085932D0,
+};
+
+const union AffineAnimCmd gUnknown_085932E8[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0x9, 0x9, 0, 18),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08593300[] =
+{
+ gUnknown_085932E8,
+};
+
+const struct SpriteTemplate gUnknown_08593304 =
+{
+ .tileTag = ANIM_TAG_UNUSED_EXPLOSION,
+ .paletteTag = ANIM_TAG_UNUSED_EXPLOSION,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085932E4,
+ .images = NULL,
+ .affineAnims = gUnknown_08593300,
+ .callback = sub_80A77C8,
+};
+
+const union AnimCmd gUnknown_0859331C[] =
+{
+ ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(24, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(40, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 3, .hFlip = TRUE),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593340[] =
+{
+ gUnknown_0859331C,
+};
+
+const struct SpriteTemplate gKinesisZapEnergySpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ALERT,
+ .paletteTag = ANIM_TAG_ALERT,
+ .oam = &gUnknown_08524934,
+ .anims = gUnknown_08593340,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = Anim_KinesisZapEnergy,
+};
+
+const union AffineAnimCmd gUnknown_0859335C[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x14, 0x0, 0, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_0859337C[] =
+{
+ gUnknown_0859335C,
+};
+
+const struct SpriteTemplate gSwordsDanceBladeSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SWORD,
+ .paletteTag = ANIM_TAG_SWORD,
+ .oam = &gUnknown_08524ADC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859337C,
+ .callback = Anim_SwordsDanceBlade,
+};
+
+const struct SpriteTemplate gSonicBoomSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_AIR_WAVE,
+ .paletteTag = ANIM_TAG_AIR_WAVE,
+ .oam = &gUnknown_08524B14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimSonicBoomProjectile,
+};
+
+const struct SpriteTemplate gUnknown_085933B0 =
+{
+ .tileTag = ANIM_TAG_AIR_WAVE,
+ .paletteTag = ANIM_TAG_AIR_WAVE,
+ .oam = &gUnknown_08524A54,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103AA4,
+};
+
+const union AffineAnimCmd gUnknown_085933C8[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x7, 0x7, 0, -56),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085933E0[] =
+{
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
+ AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
+ AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
+ AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08593420[] =
+{
+ gUnknown_085933C8,
+};
+
+const union AffineAnimCmd *const gUnknown_08593424[] =
+{
+ gUnknown_085933E0,
+};
+
+const struct SpriteTemplate gSupersonicWaveSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_GOLD_RING,
+ .paletteTag = ANIM_TAG_GOLD_RING,
+ .oam = &gUnknown_08524A14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593420,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gScreechWaveSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_PURPLE_RING,
+ .paletteTag = ANIM_TAG_PURPLE_RING,
+ .oam = &gUnknown_08524A14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593420,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gUnknown_08593458 =
+{
+ .tileTag = ANIM_TAG_METAL_SOUND_WAVES,
+ .paletteTag = ANIM_TAG_METAL_SOUND_WAVES,
+ .oam = &gUnknown_08524A1C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593420,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gUnknown_08593470 =
+{
+ .tileTag = ANIM_TAG_BLUE_RING_2,
+ .paletteTag = ANIM_TAG_BLUE_RING_2,
+ .oam = &gUnknown_08524A14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593424,
+ .callback = sub_8108C94,
+};
+
+const struct SpriteTemplate gUnknown_08593488 =
+{
+ .tileTag = ANIM_TAG_LARGE_FRESH_EGG,
+ .paletteTag = ANIM_TAG_LARGE_FRESH_EGG,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A78AC,
+};
+
+const struct SpriteTemplate gUnknown_085934A0 =
+{
+ .tileTag = ANIM_TAG_UNUSED_VOID_LINES,
+ .paletteTag = ANIM_TAG_UNUSED_VOID_LINES,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103FE8,
+};
+
+const union AnimCmd gUnknown_085934B8[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085934C0[] =
+{
+ gUnknown_085934B8,
+};
+
+const union AffineAnimCmd gUnknown_085934C4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085934D4[] =
+{
+ gUnknown_085934C4,
+};
+
+const struct SpriteTemplate gUnknown_085934D8 =
+{
+ .tileTag = ANIM_TAG_COIN,
+ .paletteTag = ANIM_TAG_COIN,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_085934C0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8104088,
+};
+
+const struct SpriteTemplate gUnknown_085934F0 =
+{
+ .tileTag = ANIM_TAG_COIN,
+ .paletteTag = ANIM_TAG_COIN,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_085934C0,
+ .images = NULL,
+ .affineAnims = gUnknown_085934D4,
+ .callback = sub_810413C,
+};
+
+const union AffineAnimCmd gUnknown_08593508[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08593518[] =
+{
+ gUnknown_08593508,
+};
+
+const struct SpriteTemplate gUnknown_0859351C =
+{
+ .tileTag = ANIM_TAG_SEED,
+ .paletteTag = ANIM_TAG_SEED,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593518,
+ .callback = sub_81041C4,
+};
+
+const union AffineAnimCmd gUnknown_08593534[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x0, 0, 40),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_0859354C[] =
+{
+ gUnknown_08593534,
+};
+
+const struct SpriteTemplate gRazorWindTornadoSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_GUST,
+ .paletteTag = ANIM_TAG_GUST,
+ .oam = &gUnknown_085249BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859354C,
+ .callback = Anim_RazorWindTornado,
+};
+
+const union AnimCmd gUnknown_08593568[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 20),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08593578[] =
+{
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 20, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593588[] =
+{
+ gUnknown_08593568,
+ gUnknown_08593578,
+};
+
+const struct SpriteTemplate gViceGripSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_CUT,
+ .paletteTag = ANIM_TAG_CUT,
+ .oam = &gUnknown_08524A34,
+ .anims = gUnknown_08593588,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = Anim_ViceGripPincer,
+};
+
+const union AnimCmd gUnknown_085935A8[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085935B8[] =
+{
+ ANIMCMD_FRAME(0, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 1, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085935C8[] =
+{
+ gUnknown_085935A8,
+ gUnknown_085935B8,
+};
+
+const struct SpriteTemplate gGuillotineSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_CUT,
+ .paletteTag = ANIM_TAG_CUT,
+ .oam = &gUnknown_08524A34,
+ .anims = gUnknown_085935C8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = Anim_GuillotinePincer,
+};
+
+const union AffineAnimCmd gSplashEffectAffineAnimCmds[] =
+{
+ AFFINEANIMCMD_FRAME(-6, 4, 0, 8),
+ AFFINEANIMCMD_FRAME(10, -10, 0, 8),
+ AFFINEANIMCMD_FRAME(-4, 6, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gGrowAndShrinkAffineAnimCmds[] =
+{
+ AFFINEANIMCMD_FRAME(-4, -5, 0, 12),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 24),
+ AFFINEANIMCMD_FRAME(4, 5, 0, 12),
+ AFFINEANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08593628[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 40, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(12, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859363C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 40),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593650[] =
+{
+ gUnknown_08593628,
+ gUnknown_0859363C,
+};
+
+const struct SpriteTemplate gBreathPuffSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_BREATH,
+ .paletteTag = ANIM_TAG_BREATH,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08593650,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = Anim_BreathPuff,
+};
+
+const union AffineAnimCmd gUnknown_08593670[] =
+{
+ AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF5, 0xFFF5, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08593688[] =
+{
+ gUnknown_08593670,
+};
+
+const struct SpriteTemplate gAngerMarkSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ANGER,
+ .paletteTag = ANIM_TAG_ANGER,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593688,
+ .callback = Anim_AngerMark,
+};
+
+const union AffineAnimCmd gUnknown_085936A4[] =
+{
+ AFFINEANIMCMD_FRAME(-10, 9, 0, 7),
+ AFFINEANIMCMD_FRAME(20, -20, 0, 7),
+ AFFINEANIMCMD_FRAME(-20, 20, 0, 7),
+ AFFINEANIMCMD_FRAME(10, -9, 0, 7),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gUnknown_085936D4 =
+{
+ .tileTag = ANIM_TAG_PENCIL,
+ .paletteTag = ANIM_TAG_PENCIL,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810501C,
+};
+
+const struct SpriteTemplate gUnknown_085936EC =
+{
+ .tileTag = ANIM_TAG_SNORE_Z,
+ .paletteTag = ANIM_TAG_SNORE_Z,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A7938,
+};
+
+const union AnimCmd gUnknown_08593704[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593718[] =
+{
+ gUnknown_08593704,
+};
+//*
+const struct SpriteTemplate gBattleAnimSpriteTemplate_859371C =
+{
+ .tileTag = ANIM_TAG_EXPLOSION,
+ .paletteTag = ANIM_TAG_EXPLOSION,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593718,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const union AffineAnimCmd gUnknown_08593734[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_08593754[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593764[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFF8, 0x4, 0, 8),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x10, 0xFFF8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x8, 0, 8),
+ AFFINEANIMCMD_LOOP(1),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085937A4[] =
+{
+ gUnknown_08593734,
+ gUnknown_08593754,
+ gUnknown_08593764,
+};
+//*
+const struct SpriteTemplate gUnknown_085937B0 =
+{
+ .tileTag = ANIM_TAG_BREAKING_EGG,
+ .paletteTag = ANIM_TAG_BREAKING_EGG,
+ .oam = &gUnknown_08524AF4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085937A4,
+ .callback = sub_8105538,
+};
+
+const union AffineAnimCmd gUnknown_085937C8[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 30),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd gUnknown_085937E0[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 15),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd gUnknown_085937F8[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 45),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593810[] =
+{
+ gUnknown_085937C8,
+ gUnknown_085937E0,
+};
+
+const union AffineAnimCmd *const gUnknown_08593818[] =
+{
+ gUnknown_085937F8,
+};
+
+const struct SpriteTemplate gUnknown_0859381C =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593810,
+ .callback = sub_80A77C8,
+};
+//*
+const union AffineAnimCmd gUnknown_08593834[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 30),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gUnknown_0859384C[] =
+{
+ gUnknown_08593834,
+};
+
+const struct SpriteTemplate gUnknown_08593850 =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859384C,
+ .callback = sub_80A77C8,
+};
+
+const struct SpriteTemplate gUnknown_08593868 =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593810,
+ .callback = sub_81051C4,
+};
+
+const struct SpriteTemplate gUnknown_08593880 =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593818,
+ .callback = sub_81052A4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8593898 =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593810,
+ .callback = sub_81054E8,
+};
+
+const union AffineAnimCmd gUnknown_085938B0[] =
+{
+ AFFINEANIMCMD_FRAME(96, -13, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085938C0[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_FRAME(8, 3),
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085938D8[] =
+{
+ gUnknown_085938C0,
+};
+
+const struct SpriteTemplate gUnknown_085938DC =
+{
+ .tileTag = ANIM_TAG_SPEED_DUST,
+ .paletteTag = ANIM_TAG_SPEED_DUST,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_085938D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8105C48,
+};
+
+const s8 gUnknown_085938F4[][2] =
+{
+ {30, 28},
+ {-20, 24},
+ {16, 26},
+ {-10, 28},
+};
+
+const union AnimCmd gUnknown_085938FC[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 15),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 15, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 6, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 15),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593934[] =
+{
+ gUnknown_085938FC,
+};
+
+const struct SpriteTemplate gUnknown_08593938 =
+{
+ .tileTag = ANIM_TAG_BELL,
+ .paletteTag = ANIM_TAG_BELL,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593934,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const u16 gUnknown_08593950[] =
+{
+ ANIM_TAG_MUSIC_NOTES_2,
+ ANIM_SPRITES_START - 1,
+ ANIM_SPRITES_START - 2,
+};
+
+const struct SpriteTemplate gUnknown_08593958 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES_2,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES_2,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8105DE8,
+};
+
+const struct SpriteTemplate gUnknown_08593970 =
+{
+ .tileTag = ANIM_TAG_MAGENTA_HEART,
+ .paletteTag = ANIM_TAG_MAGENTA_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8105E60,
+};
+
+const union AffineAnimCmd gUnknown_08593988[] =
+{
+ AFFINEANIMCMD_FRAME(0x000A, 0xFFF3, 0x00, 0x0A),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0x000D, 0x00, 0x0A),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gUnknown_085939A0 =
+{
+ .tileTag = ANIM_TAG_RED_HEART,
+ .paletteTag = ANIM_TAG_RED_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106140,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85939B8 =
+{
+ .tileTag = ANIM_TAG_RED_HEART,
+ .paletteTag = ANIM_TAG_RED_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81061C4,
+};
+
+const struct SpriteTemplate gUnknown_085939D0 =
+{
+ .tileTag = ANIM_TAG_RED_HEART,
+ .paletteTag = ANIM_TAG_RED_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810624C,
+};
+
+const union AffineAnimCmd gUnknown_085939E8[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593A00[] =
+{
+ gUnknown_085939E8,
+};
+
+const struct SpriteTemplate gHiddenPowerOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_RED_ORB,
+ .paletteTag = ANIM_TAG_RED_ORB,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593A00,
+ .callback = AnimOrbitFast,
+};
+
+const struct SpriteTemplate gHiddenPowerOrbScatterSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_RED_ORB,
+ .paletteTag = ANIM_TAG_RED_ORB,
+ .oam = &gUnknown_085249CC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593A00,
+ .callback = AnimOrbitScatter,
+};
+
+const union AffineAnimCmd gUnknown_08593A34[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593A4C[] =
+{
+ gUnknown_08593A34,
+};
+
+const struct SpriteTemplate gUnknown_08593A50 =
+{
+ .tileTag = ANIM_TAG_RED_ORB_2,
+ .paletteTag = ANIM_TAG_RED_ORB_2,
+ .oam = &gUnknown_085249C4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593A4C,
+ .callback = sub_8106944,
+};
+
+const union AnimCmd gUnknown_08593A68[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593A80[] =
+{
+ gUnknown_08593A68,
+};
+
+const struct SpriteTemplate gUnknown_08593A84 =
+{
+ .tileTag = ANIM_TAG_EYE_SPARKLE,
+ .paletteTag = ANIM_TAG_EYE_SPARKLE,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08593A80,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81069B8,
+};
+
+const union AnimCmd gUnknown_08593A9C[] =
+{
+ ANIMCMD_FRAME(0, 24),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593AA4[] =
+{
+ gUnknown_08593A9C,
+};
+
+const struct SpriteTemplate gUnknown_08593AA8 =
+{
+ .tileTag = ANIM_TAG_ANGEL,
+ .paletteTag = ANIM_TAG_ANGEL,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593AA4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81069D0,
+};
+
+const struct SpriteTemplate gUnknown_08593AC0 =
+{
+ .tileTag = ANIM_TAG_PINK_HEART,
+ .paletteTag = ANIM_TAG_PINK_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106AD0,
+};
+
+const union AnimCmd gUnknown_08593AD8[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_08593AE0[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08593AE8[] =
+{
+ gUnknown_08593AD8,
+ gUnknown_08593AE0,
+};
+
+const struct SpriteTemplate gUnknown_08593AF0 =
+{
+ .tileTag = ANIM_TAG_DEVIL,
+ .paletteTag = ANIM_TAG_DEVIL,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593AE8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106B54,
+};
+
+const union AnimCmd gUnknown_08593B08[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08593B1C[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593B30[] =
+{
+ gUnknown_08593B08,
+ gUnknown_08593B1C,
+};
+
+const struct SpriteTemplate gUnknown_08593B38 =
+{
+ .tileTag = ANIM_TAG_SWIPE,
+ .paletteTag = ANIM_TAG_SWIPE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593B30,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106C80,
+};
+
+const union AnimCmd gUnknown_08593B50[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08593B64[] =
+{
+ ANIMCMD_FRAME(16, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593B78[] =
+{
+ gUnknown_08593B50,
+ gUnknown_08593B64,
+};
+
+const struct SpriteTemplate gUnknown_08593B80 =
+{
+ .tileTag = ANIM_TAG_MOVEMENT_WAVES,
+ .paletteTag = ANIM_TAG_MOVEMENT_WAVES,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593B78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106CD0,
+};
+
+const union AffineAnimCmd gUnknown_08593B98[] =
+{
+ AFFINEANIMCMD_FRAME(-12, 8, 0, 4),
+ AFFINEANIMCMD_FRAME(20, -20, 0, 4),
+ AFFINEANIMCMD_FRAME(-8, 12, 0, 4),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8593BB8 =
+{
+ .tileTag = ANIM_TAG_JAGGED_MUSIC_NOTE,
+ .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106E00,
+};
+
+const union AffineAnimCmd gUnknown_08593BD0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 5),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593BE0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 16),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd gUnknown_08593BF0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 16),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593C00[] =
+{
+ gUnknown_08593BD0,
+ gUnknown_08593BE0,
+ gUnknown_08593BF0,
+};
+
+extern const union AnimCmd *const gUnknown_08592FCC[];
+const struct SpriteTemplate gUnknown_08593C0C =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES_2,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593C00,
+ .callback = sub_8106F60,
+};
+
+const struct SpriteTemplate gUnknown_08593C24 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES_2,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593C00,
+ .callback = sub_8106F00,
+};
+
+const union AffineAnimCmd gUnknown_08593C3C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593C4C[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08593C5C[] =
+{
+ gUnknown_08593C3C,
+ gUnknown_08593C4C,
+};
+
+const struct SpriteTemplate gUnknown_08593C64 =
+{
+ .tileTag = ANIM_TAG_GUARD_RING,
+ .paletteTag = ANIM_TAG_GUARD_RING,
+ .oam = &gUnknown_08524B1C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593C5C,
+ .callback = sub_81070AC,
+};
+
+void sub_8103448(struct Sprite *sprite)
+{
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = gBattleAnimArgs[5];
+ sprite->data[4] = gBattleAnimArgs[3];
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = sub_80A6450;
+ sprite->callback(sprite);
+}
+
+void sub_8103498(struct Sprite *sprite)
+{
+ u8 battler;
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ sub_810310C(battler, sprite);
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->callback = sub_81034D8;
+}
+
+static void sub_81034D8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.y -= 3;
+ if (++sprite->data[1] == 6)
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos2.y += 3;
+ if (--sprite->data[1] == 0)
+ sprite->data[0]++;
+ break;
+ case 2:
+ if (++sprite->data[1] == 64)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+static void sub_810353C(struct Sprite *sprite)
+{
+ s16 temp;
+ gSprites[sprite->data[2]].pos2.x += sprite->data[1];
+ temp = sprite->data[1];
+ sprite->data[1] = -temp;
+ if (sprite->data[0] == 0)
+ {
+ gSprites[sprite->data[2]].pos2.x = 0;
+ DestroySpriteAndMatrix(sprite);
+ }
+
+ sprite->data[0]--;
+}
+
+void sub_810358C(struct Sprite *sprite)
+{
+ u8 spriteId;
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ spriteId = gBattlerSpriteIds[gBattleAnimTarget];
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = spriteId;
+ sprite->callback = sub_810353C;
+ sprite->invisible = 1;
+}
+
+void sub_8103620(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[4];
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, sub_8103658);
+}
+
+static void sub_8103658(struct Sprite *sprite)
+{
+ sprite->data[0] = sprite->data[1];
+ sprite->data[2] = sprite->pos1.x;
+ sprite->data[4] = sprite->pos1.y + 15;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, sub_8103680);
+}
+
+static void sub_8103680(struct Sprite *sprite)
+{
+ if (sprite->data[5] == 0)
+ DestroyAnimSprite(sprite);
+ else
+ sprite->data[5]--;
+}
+
+// Rotates the attacking mon sprite downwards and then back upwards to its original position.
+// No args.
+void AnimTask_Withdraw(u8 taskId)
+{
+ PrepareBattlerSpriteForRotScale(gBattlerSpriteIds[gBattleAnimAttacker], ST_OAM_OBJ_NORMAL);
+ gTasks[taskId].func = AnimTask_WithdrawStep;
+}
+
+static void AnimTask_WithdrawStep(u8 taskId)
+{
+ u8 spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ s16 rotation;
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ rotation = -gTasks[taskId].data[0];
+ else
+ rotation = gTasks[taskId].data[0];
+
+ SetSpriteRotScale(spriteId, 0x100, 0x100, rotation);
+ if (gTasks[taskId].data[1] == 0)
+ {
+ gTasks[taskId].data[0] += 0xB0;
+ // this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation()
+ gSprites[spriteId].pos2.y++;
+ }
+ else if (gTasks[taskId].data[1] == 1)
+ {
+ if (++gTasks[taskId].data[3] == 30)
+ gTasks[taskId].data[1] = 2;
+
+ return;
+ }
+ else
+ {
+ gTasks[taskId].data[0] -= 0xB0;
+ // this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation()
+ gSprites[spriteId].pos2.y--;
+ }
+
+ SetBattlerSpriteYOffsetFromRotation(spriteId);
+ if (gTasks[taskId].data[0] == 0xF20 || gTasks[taskId].data[0] == 0)
+ {
+ if (gTasks[taskId].data[1] == 2)
+ {
+ ResetSpriteRotScale(spriteId);
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[1]++;
+ }
+ }
+}
+
+// Animates a "zap of energy" used in KINESIS.
+// arg 0: x pixel offset
+// arg 1: y pixel offset
+// arg 2: vertical flip
+void Anim_KinesisZapEnergy(struct Sprite *sprite)
+{
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->hFlip = 1;
+ if (gBattleAnimArgs[2])
+ sprite->vFlip = 1;
+ }
+ else
+ {
+ if (gBattleAnimArgs[2])
+ sprite->vFlip = 1;
+ }
+
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Animates a sword that rises into the air after a brief pause.
+// arg 0: x pixel offset
+// arg 1: y pixel offset
+void Anim_SwordsDanceBlade(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+ StoreSpriteCallbackInData6(sprite, Anim_SwordsDanceBladeStep);
+}
+
+static void Anim_SwordsDanceBladeStep(struct Sprite *sprite)
+{
+ sprite->data[0] = 6;
+ sprite->data[2] = sprite->pos1.x;
+ sprite->data[4] = sprite->pos1.y - 32;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Moves a projectile towards the target mon. The sprite is rotated to be pointing
+// in the same direction it's moving.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+void AnimSonicBoomProjectile(struct Sprite *sprite)
+{
+ s16 targetXPos;
+ s16 targetYPos;
+ u16 rotation;
+
+ if (IsContest())
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+ else if (GetBattlerSide(gBattleAnimAttacker) != 0)
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ targetXPos = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ targetYPos = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y);
+ rotation += 0xF000;
+ if (IsContest())
+ rotation -= 0x6000;
+
+ TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation);
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = targetXPos;
+ sprite->data[4] = targetYPos;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+static void sub_81039CC(struct Sprite *sprite)
+{
+ if (sprite->data[0]-- <= 0)
+ {
+ gTasks[sprite->data[7]].data[1]--;
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_8103A00(struct Sprite *sprite)
+{
+ struct Task* task = &gTasks[sprite->data[7]];
+ if (sprite->data[0] > task->data[5])
+ {
+ sprite->data[5] += sprite->data[3];
+ sprite->data[6] += sprite->data[4];
+ }
+ else
+ {
+ sprite->data[5] -= sprite->data[3];
+ sprite->data[6] -= sprite->data[4];
+ }
+
+ sprite->data[1] += sprite->data[5];
+ sprite->data[2] += sprite->data[6];
+ if (1 & task->data[7])
+ sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1;
+ else
+ sprite->pos2.x = (u16)sprite->data[1] >> 8;
+
+ if (1 & task->data[8])
+ sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1;
+ else
+ sprite->pos2.y = (u16)sprite->data[2] / 256u;
+
+ if (sprite->data[0]-- <= 0)
+ {
+ sprite->data[0] = 30;
+ sprite->callback = sub_81039CC;
+ }
+}
+
+void sub_8103AA4(struct Sprite *sprite)
+{
+ s16 a;
+ s16 b;
+ s16 c;
+
+ struct Task* task = &gTasks[sprite->data[7]];
+ sprite->data[1] += (-2 & task->data[7]);
+ sprite->data[2] += (-2 & task->data[8]);
+ if (1 & task->data[7])
+ sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1;
+ else
+ sprite->pos2.x = (u16)sprite->data[1] >> 8;
+
+ if (1 & task->data[8])
+ sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1;
+ else
+ sprite->pos2.y = (u16)sprite->data[2] / 256u;
+
+ if (sprite->data[0]-- <= 0)
+ {
+ sprite->data[0] = 8;
+ task->data[5] = 4;
+ a = sub_8151624(0x1000);
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ if (task->data[11] >= sprite->pos1.x)
+ b = (task->data[11] - sprite->pos1.x) << 8;
+ else
+ b = (sprite->pos1.x - task->data[11]) << 8;
+
+ if (task->data[12] >= sprite->pos1.y)
+ c = (task->data[12] - sprite->pos1.y) << 8;
+ else
+ c = (sprite->pos1.y - task->data[12]) << 8;
+
+ sprite->data[2] = 0;
+ sprite->data[1] = 0;
+ sprite->data[6] = 0;
+ sprite->data[5] = 0;
+ sprite->data[3] = sub_8151534(sub_8151534(b, a), sub_8151624(0x1C0));
+ sprite->data[4] = sub_8151534(sub_8151534(c, a), sub_8151624(0x1C0));
+ sprite->callback = sub_8103A00;
+ }
+}
+
+static void sub_8103BE4(u8 taskId)
+{
+ if (gTasks[taskId].data[1] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_8103C0C(u8 taskId)
+{
+ if (gTasks[taskId].data[0]-- <= 0)
+ {
+ u8 spriteId;
+ struct Sprite *sprite;
+ spriteId = CreateSprite(&gUnknown_085933B0, gTasks[taskId].data[9], gTasks[taskId].data[10], gTasks[taskId].data[2] - gTasks[taskId].data[1]);
+ sprite = &gSprites[spriteId];
+ switch (gTasks[taskId].data[4])
+ {
+ case 1:
+ sprite->oam.matrixNum |= 24;
+ break;
+ case 2:
+ sprite->oam.matrixNum = 8;
+ break;
+ }
+
+ sprite->data[0] = gTasks[taskId].data[5] - gTasks[taskId].data[6];
+ sprite->data[7] = taskId;
+ gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId;
+ gTasks[taskId].data[0] = gTasks[taskId].data[3];
+ gTasks[taskId].data[1]++;
+ PlaySE12WithPanning(SE_W059B, BattleAnimAdjustPanning(-63));
+ if (gTasks[taskId].data[1] > 2)
+ gTasks[taskId].func = sub_8103BE4;
+ }
+}
+
+void sub_8103CF0(u8 taskId)
+{
+ s16 attackerY = 0;
+ s16 attackerX = 0;
+ s16 targetX = 0;
+ s16 targetY = 0;
+ s16 xDiff, yDiff;
+
+ if (IsContest())
+ {
+ gTasks[taskId].data[4] = 2;
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ if (gBattleAnimArgs[2] & 1)
+ gBattleAnimArgs[2] &= ~1;
+ else
+ gBattleAnimArgs[2] |= 1;
+ }
+ else
+ {
+ if ((gBattlerPositions[gBattleAnimTarget] & 1) == 0)
+ {
+ gTasks[taskId].data[4] = 1;
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ if (gBattleAnimArgs[2] & 1)
+ gBattleAnimArgs[2] &= ~1;
+ else
+ gBattleAnimArgs[2] |= 1;
+ }
+ }
+
+ attackerX = gTasks[taskId].data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
+ attackerY = gTasks[taskId].data[10] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)))
+ {
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &targetX, &targetY);
+ }
+ else
+ {
+ targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
+ targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
+ }
+
+ targetX = gTasks[taskId].data[11] = targetX + gBattleAnimArgs[0];
+ targetY = gTasks[taskId].data[12] = targetY + gBattleAnimArgs[1];
+ if (targetX >= attackerX)
+ xDiff = targetX - attackerX;
+ else
+ xDiff = attackerX - targetX;
+
+ gTasks[taskId].data[5] = sub_8151534(xDiff, sub_8151624(gBattleAnimArgs[2] & ~1));
+ gTasks[taskId].data[6] = sub_8151534(gTasks[taskId].data[5], 0x80);
+ gTasks[taskId].data[7] = gBattleAnimArgs[2];
+ if (targetY >= attackerY)
+ {
+ yDiff = targetY - attackerY;
+ gTasks[taskId].data[8] = sub_8151534(yDiff, sub_8151624(gTasks[taskId].data[5])) & ~1;
+ }
+ else
+ {
+ yDiff = attackerY - targetY;
+ gTasks[taskId].data[8] = sub_8151534(yDiff, sub_8151624(gTasks[taskId].data[5])) | 1;
+ }
+
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ if (gBattleAnimArgs[4] & 0x80)
+ {
+ gBattleAnimArgs[4] ^= 0x80;
+ if (gBattleAnimArgs[4] >= 64)
+ {
+ u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64);
+ gTasks[taskId].data[2] = var;
+ }
+ else
+ {
+ u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) - gBattleAnimArgs[4];
+ gTasks[taskId].data[2] = var;
+ }
+ }
+ else
+ {
+ if (gBattleAnimArgs[4] >= 64)
+ {
+ u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64);
+ gTasks[taskId].data[2] = var;
+ }
+ else
+ {
+ u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) - gBattleAnimArgs[4];
+ gTasks[taskId].data[2] = var;
+ }
+ }
+
+ if (gTasks[taskId].data[2] < 3)
+ gTasks[taskId].data[2] = 3;
+
+ gTasks[taskId].func = sub_8103C0C;
+}
+
+void sub_8103FE8(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+ sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(gUnknown_085934A0.paletteTag) << 4);
+ sprite->callback = sub_8104018;
+}
+
+#ifdef NONMATCHING
+static void sub_8104018(struct Sprite *sprite)
+{
+ u16 r7;
+ u16 r5;
+ int i;
+ if (++sprite->data[1] == 2)
+ {
+ sprite->data[1] = 0;
+ r5 = sprite->data[0];
+ r7 = gPlttBufferFaded[8 + r5];
+ for (i = 0; i < 8; i++)
+ {
+ gPlttBufferFaded[i + r5 + 8] = gPlttBufferFaded[i + r5 + 9];
+ }
+ gPlttBufferFaded[r5 + 15] = r7;
+
+ if (++sprite->data[2] == 24)
+ DestroyAnimSprite(sprite);
+ }
+}
+#else
+NAKED
+static void sub_8104018(struct Sprite *sprite)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r4, r0, 0\n\
+ ldrh r0, [r4, 0x30]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x30]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x2\n\
+ bne _0810407C\n\
+ movs r0, 0\n\
+ strh r0, [r4, 0x30]\n\
+ ldrh r5, [r4, 0x2E]\n\
+ ldr r1, =gPlttBufferFaded\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x8\n\
+ lsls r0, 1\n\
+ adds r0, r1 \n\
+ ldrh r7, [r0]\n\
+ adds r6, r1, 0\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x9\n\
+ lsls r0, r5, 1\n\
+ adds r0, r6\n\
+ adds r2, r0, 0\n\
+ adds r2, 0x10\n\
+ movs r3, 0x7\n\
+ lsls r1, 1\n\
+ adds r1, r6\n\
+_08104050:\n\
+ ldrh r0, [r1]\n\
+ strh r0, [r2]\n\
+ adds r1, 0x2\n\
+ adds r2, 0x2\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _08104050\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xF\n\
+ lsls r0, 1\n\
+ adds r0, r6\n\
+ strh r7, [r0]\n\
+ ldrh r0, [r4, 0x32]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x32]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x18\n\
+ bne _0810407C\n\
+ adds r0, r4, 0\n\
+ bl DestroyAnimSprite\n\
+_0810407C:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_8104088(struct Sprite *sprite)
+{
+ s16 r6;
+ s16 r7;
+ u16 var;
+
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ r6 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ r7 = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ r6 += gBattleAnimArgs[2];
+ var = ArcTan2Neg(r6 - sprite->pos1.x, r7 - sprite->pos1.y);
+ var += 0xC000;
+ TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, var);
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = r6;
+ sprite->data[4] = r7;
+ sprite->callback = sub_80A7000;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_810413C(struct Sprite *sprite)
+{
+ sprite->data[2] = -16;
+ sprite->pos1.y += 8;
+ sprite->callback = sub_8104154;
+}
+
+static void sub_8104154(struct Sprite *sprite)
+{
+ sprite->data[0] += 0x80;
+ sprite->pos2.x = sprite->data[0] >> 8;
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ sprite->pos2.x = -sprite->pos2.x;
+
+ sprite->pos2.y = Sin(sprite->data[1], sprite->data[2]);
+ sprite->data[1] += 5;
+ if (sprite->data[1] > 126)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2] /= 2;
+ if (++sprite->data[3] == 2)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_81041C4(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = 20;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->callback = StartAnimLinearTranslation;
+ sprite->affineAnimPaused = 1;
+ StoreSpriteCallbackInData6(sprite, sub_810421C);
+}
+
+static void sub_810421C(struct Sprite *sprite)
+{
+ int i;
+ u16 rand;
+ s16* ptr;
+ PlaySE12WithPanning(SE_W030, BattleAnimAdjustPanning(63));
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ ptr = &sprite->data[7];
+ for (i = 0; i < 8; i++)
+ ptr[i - 7] = 0;
+
+ rand = Random2();
+ sprite->data[6] = 0xFFF4 - (rand & 7);
+ rand = Random2();
+ sprite->data[7] = (rand % 0xA0) + 0xA0;
+ sprite->callback = sub_81042A0;
+ sprite->affineAnimPaused = 0;
+}
+
+static void sub_81042A0(struct Sprite *sprite)
+{
+ sprite->data[0] += sprite->data[7];
+ sprite->pos2.x = sprite->data[0] >> 8;
+ if (sprite->data[7] & 1)
+ sprite->pos2.x = -sprite->pos2.x;
+
+ sprite->pos2.y = Sin(sprite->data[1], sprite->data[6]);
+ sprite->data[1] += 8;
+ if (sprite->data[1] > 126)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2] /= 2;
+ if (++sprite->data[3] == 1)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+// Moves a tornado in a circlular motion.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: wave amplitude
+// arg 3: unused
+// arg 4: initial wave offset
+// arg 5: wave period (higher means faster wave)
+// arg 6: duration
+void Anim_RazorWindTornado(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ sprite->pos1.y += 16;
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[5];
+ sprite->data[3] = gBattleAnimArgs[6];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->callback = TranslateSpriteInCircleOverDuration;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback(sprite);
+}
+
+// Animates a single pincer line that extends towards the center of the target mon.
+// arg 0: invert
+void Anim_ViceGripPincer(struct Sprite *sprite)
+{
+ s16 startXOffset = 32;
+ s16 startYOffset = -32;
+ s16 endXOffset = 16;
+ s16 endYOffset = -16;
+ if (gBattleAnimArgs[0])
+ {
+ startXOffset = -32;
+ startYOffset = 32;
+ endXOffset = -16;
+ endYOffset = 16;
+ StartSpriteAnim(sprite, 1);
+ }
+
+ sprite->pos1.x += startXOffset;
+ sprite->pos1.y += startYOffset;
+ sprite->data[0] = 6;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, Anim_ViceGripPincerStep);
+}
+
+static void Anim_ViceGripPincerStep(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+// Animates a single pincer line that extends towards the center of the target mon, and then back out.
+// arg 0: animation id
+void Anim_GuillotinePincer(struct Sprite *sprite)
+{
+ s16 startXOffset = 32;
+ s16 startYOffset = -32;
+ s16 endXOffset = 16;
+ s16 endYOffset = -16;
+ if (gBattleAnimArgs[0])
+ {
+ startXOffset = -32;
+ startYOffset = 32;
+ endXOffset = -16;
+ endYOffset = 16;
+ StartSpriteAnim(sprite, gBattleAnimArgs[0]);
+ }
+
+ sprite->pos1.x += startXOffset;
+ sprite->pos1.y += startYOffset;
+ sprite->data[0] = 6;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset;
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset;
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5] = gBattleAnimArgs[0];
+ sprite->data[6] = sprite->data[0];
+ sprite->callback = Anim_GuillotinePincerStep1;
+}
+
+static void Anim_GuillotinePincerStep1(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite) && sprite->animEnded)
+ {
+ SeekSpriteAnim(sprite, 0);
+ sprite->animPaused = 1;
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 2;
+ sprite->pos2.y = -2;
+ sprite->data[0] = sprite->data[6];
+ sprite->data[1] ^= 1;
+ sprite->data[2] ^= 1;
+ sprite->data[4] = 0;
+ sprite->data[3] = 0;
+ sprite->callback = Anim_GuillotinePincerStep2;
+ }
+}
+
+static void Anim_GuillotinePincerStep2(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ sprite->pos2.x = -sprite->pos2.x;
+ sprite->pos2.y = -sprite->pos2.y;
+ }
+
+ sprite->data[3] ^= 1;
+ if (++sprite->data[4] == 51)
+ {
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[4] = 0;
+ sprite->data[3] = 0;
+ sprite->animPaused = 0;
+ StartSpriteAnim(sprite, sprite->data[5] ^ 1);
+ sprite->callback = Anim_GuillotinePincerStep3;
+ }
+}
+
+static void Anim_GuillotinePincerStep3(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+// Scales up the target mon sprite, and sets the palette to greyscale.
+// Used in MOVE_DISABLE.
+// No args.
+void AnimTask_GrowAndGreyscale(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
+ SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0);
+ SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE);
+ gTasks[taskId].data[0] = 80;
+ gTasks[taskId].func = AnimTask_GrowAndGreyscaleStep;
+}
+
+static void AnimTask_GrowAndGreyscaleStep(u8 taskId)
+{
+ if (--gTasks[taskId].data[0] == -1)
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
+ ResetSpriteRotScale(spriteId);
+ SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, TRUE);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+// Shrinks and grows the attacking mon several times. Also creates transparent versions of the
+// mon's sprite while it is shrinking.
+// No args.
+void AnimTask_Minimize(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ task->data[0] = spriteId;
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[4] = 0x100;
+ task->data[5] = 0;
+ task->data[6] = 0;
+ task->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
+ task->func = AnimTask_MinimizeStep1;
+}
+
+static void AnimTask_MinimizeStep1(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ switch (task->data[1])
+ {
+ case 0:
+ if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6)
+ CreateMinimizeSprite(task, taskId);
+ task->data[2]++;
+ task->data[4] += 0x28;
+ SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0);
+ SetBattlerSpriteYOffsetFromYScale(task->data[0]);
+ if (task->data[2] == 32)
+ {
+ task->data[5]++;
+ task->data[1]++;
+ }
+ break;
+ case 1:
+ if (task->data[6] == 0)
+ {
+ if (task->data[5] == 3)
+ {
+ task->data[2] = 0;
+ task->data[1] = 3;
+ }
+ else
+ {
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[4] = 0x100;
+ SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0);
+ SetBattlerSpriteYOffsetFromYScale(task->data[0]);
+ task->data[1] = 2;
+ }
+ }
+ break;
+ case 2:
+ task->data[1] = 0;
+ break;
+ case 3:
+ if (++task->data[2] > 32)
+ {
+ task->data[2] = 0;
+ task->data[1]++;
+ }
+ break;
+ case 4:
+ task->data[2] += 2;
+ task->data[4] -= 0x50;
+ SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0);
+ SetBattlerSpriteYOffsetFromYScale(task->data[0]);
+ if (task->data[2] == 32)
+ {
+ task->data[2] = 0;
+ task->data[1]++;
+ }
+ break;
+ case 5:
+ ResetSpriteRotScale(task->data[0]);
+ gSprites[task->data[15]].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void CreateMinimizeSprite(struct Task* task, u8 taskId)
+{
+ u16 matrixNum;
+ s16 spriteId = CloneBattlerSpriteWithBlend(ANIM_ATTACKER);
+ if (spriteId >= 0)
+ {
+ if ((matrixNum = AllocOamMatrix()) == 0xFF)
+ {
+ obj_delete_but_dont_free_vram(&gSprites[spriteId]);
+ }
+ else
+ {
+ gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ gSprites[spriteId].affineAnimPaused = TRUE;
+ gSprites[spriteId].oam.matrixNum = matrixNum;
+ gSprites[spriteId].subpriority = task->data[7] - task->data[3];
+ task->data[3]++;
+ task->data[6]++;
+ gSprites[spriteId].data[0] = 16;
+ gSprites[spriteId].data[1] = taskId;
+ gSprites[spriteId].data[2] = 6;
+ gSprites[spriteId].callback = ClonedMinizeSprite_Step;
+ SetSpriteRotScale(spriteId, task->data[4], task->data[4], 0);
+ gSprites[spriteId].oam.affineMode = 1;
+ CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
+ }
+ }
+}
+
+static void ClonedMinizeSprite_Step(struct Sprite *sprite)
+{
+ if (--sprite->data[0] == 0)
+ {
+ gTasks[sprite->data[1]].data[sprite->data[2]]--;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ obj_delete_but_dont_free_vram(sprite);
+ }
+}
+
+// Task to facilitate expanding and hopping effect seen in Splash.
+// arg 0: anim battler
+// arg 1: num hops
+void AnimTask_Splash(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (gBattleAnimArgs[1] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ task->data[0] = spriteId;
+ task->data[1] = 0;
+ task->data[2] = gBattleAnimArgs[1];
+ task->data[3] = 0;
+ task->data[4] = 0;
+ PrepareAffineAnimInTaskData(task, spriteId, gSplashEffectAffineAnimCmds);
+ task->func = AnimTask_SplashStep;
+ }
+}
+
+static void AnimTask_SplashStep(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ switch (task->data[1])
+ {
+ case 0:
+ RunAffineAnimFromTaskData(task);
+ task->data[4] += 3;
+ gSprites[task->data[0]].pos2.y += task->data[4];
+ if (++task->data[3] > 7)
+ {
+ task->data[3] = 0;
+ task->data[1]++;
+ }
+ break;
+ case 1:
+ RunAffineAnimFromTaskData(task);
+ gSprites[task->data[0]].pos2.y += task->data[4];
+ if (++task->data[3] > 7)
+ {
+ task->data[3] = 0;
+ task->data[1]++;
+ }
+ break;
+ case 2:
+ if (task->data[4] != 0)
+ {
+ gSprites[task->data[0]].pos2.y -= 2;
+ task->data[4] -= 2;
+ }
+ else
+ task->data[1]++;
+ break;
+ case 3:
+ if (!RunAffineAnimFromTaskData(task))
+ {
+ if (--task->data[2] == 0)
+ {
+ gSprites[task->data[0]].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ PrepareAffineAnimInTaskData(task, task->data[0], gSplashEffectAffineAnimCmds);
+ task->data[1] = 0;
+ }
+ }
+ break;
+ }
+}
+
+// Grows, pauses, then shrinks the attacking mon.
+// Used by MOVE_SWAGGER and MOVE_BULK_UP
+// No args.
+void AnimTask_GrowAndShrink(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ PrepareAffineAnimInTaskData(task, spriteId, gGrowAndShrinkAffineAnimCmds);
+ task->func = AnimTask_GrowAndShrinkStep;
+}
+
+static void AnimTask_GrowAndShrinkStep(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (!RunAffineAnimFromTaskData(task))
+ DestroyAnimVisualTask(taskId);
+}
+
+// Animates a little puff of the mon's breath.
+// Used by MOVE_SWAGGER and MOVE_BULK_UP
+// No args.
+void Anim_BreathPuff(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ StartSpriteAnim(sprite, 0);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + 32;
+ sprite->data[1] = 64;
+ }
+ else
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - 32;
+ sprite->data[1] = -64;
+ }
+
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->data[0] = 52;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = AnimTranslateLinearSimple;
+}
+
+// Animates an "angry" mark above a mon's head.
+// arg 0: target mon (0 = attacker, 1 = target)
+// arg 1: x pixel offset
+// arg 2: y pixel offset
+void Anim_AngerMark(struct Sprite *sprite)
+{
+ u8 battler;
+ if (!gBattleAnimArgs[0])
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
+ gBattleAnimArgs[1] *= -1;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
+ if (sprite->pos1.y < 8)
+ sprite->pos1.y = 8;
+
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+}
+
+// left/right movements
+void sub_8104C38(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ task->data[0] = spriteId;
+ task->data[1] = 0;
+ PrepareAffineAnimInTaskData(task, spriteId, gUnknown_085936A4);
+ task->func = sub_8104C78;
+}
+
+static void sub_8104C78(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (!RunAffineAnimFromTaskData(task))
+ DestroyAnimVisualTask(taskId);
+}
+
+// up/down movements
+void sub_8104CA4(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ task->data[1] = 0;
+ task->data[2] = 4;
+ task->data[3] = 7;
+ task->data[4] = 3;
+ task->data[5] = gSprites[task->data[0]].pos1.x;
+ task->data[6] = gSprites[task->data[0]].pos1.y;
+ task->data[7] = 0;
+ task->data[8] = 0;
+ task->data[9] = 2;
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ task->data[2] *= -1;
+
+ task->func = sub_8104D28;
+}
+
+static void sub_8104D28(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (++task->data[7] > 2)
+ {
+ task->data[7] = 0;
+ task->data[8]++;
+ if (task->data[8] & 1)
+ gSprites[task->data[0]].pos1.y += task->data[9];
+ else
+ gSprites[task->data[0]].pos1.y -= task->data[9];
+ }
+ switch (task->data[1])
+ {
+ case 0:
+ gSprites[task->data[0]].pos1.x += task->data[2];
+ if (--task->data[3] == 0)
+ {
+ task->data[3] = 14;
+ task->data[1] = 1;
+ }
+ break;
+ case 1:
+ gSprites[task->data[0]].pos1.x -= task->data[2];
+ if (--task->data[3] == 0)
+ {
+ task->data[3] = 7;
+ task->data[1] = 2;
+ }
+ break;
+ case 2:
+ gSprites[task->data[0]].pos1.x += task->data[2];
+ if (--task->data[3] == 0)
+ {
+ if (--task->data[4] != 0)
+ {
+ task->data[3] = 7;
+ task->data[1] = 0;
+ }
+ else
+ {
+ if ((task->data[8] & 1) != 0)
+ gSprites[task->data[0]].pos1.y -= task->data[9];
+
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+void sub_8104E74(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ struct ScanlineEffectParams params;
+
+ s16 i;
+ task->data[0] = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 32;
+ task->data[1] = 4;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[4] = 0;
+ task->data[5] = 0;
+ task->data[15] = sub_80A861C(gBattleAnimTarget, 0);
+
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimTarget) == 1)
+ {
+ task->data[6] = gBattle_BG1_X;
+ params.dmaDest = (u16 *)REG_ADDR_BG1HOFS;
+ }
+ else
+ {
+ task->data[6] = gBattle_BG2_X;
+ params.dmaDest = (u16 *)REG_ADDR_BG2HOFS;
+ }
+
+ for (i = task->data[0] - 0x40; i <= task->data[0]; i++)
+ {
+ if (i >= 0)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[6] + 0xF0;
+ gScanlineEffectRegBuffers[1][i] = task->data[6] + 0xF0;
+ }
+ }
+
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
+ task->func = sub_8104F54;
+}
+
+static void sub_8104F54(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+
+ switch (task->data[4])
+ {
+ case 0:
+ if (++task->data[5] > 20)
+ task->data[4]++;
+ break;
+ case 1:
+ if (++task->data[1] > 3)
+ {
+ task->data[1] = 0;
+ task->data[2] = task->data[3] & 3;
+ task->data[5] = task->data[0] - task->data[3];
+ switch (task->data[2])
+ {
+ case 0:
+ break;
+ case 1:
+ task->data[5] -= 2;
+ break;
+ case 2:
+ task->data[5] += 1;
+ break;
+ case 3:
+ task->data[5] += 1;
+ break;
+ }
+
+ if (task->data[5] >= 0)
+ {
+ gScanlineEffectRegBuffers[0][task->data[5]] = task->data[6];
+ gScanlineEffectRegBuffers[1][task->data[5]] = task->data[6];
+ }
+
+ if (++task->data[3] >= task->data[15])
+ {
+ gScanlineEffect.state = 3;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+void sub_810501C(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) - 16;
+ sprite->pos1.y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16;
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[3] = 16;
+ sprite->data[4] = 0;
+ sprite->data[5] = sub_80A861C(gBattleAnimTarget, 0) + 2;
+ sprite->data[6] = BattleAnimAdjustPanning(63);
+ sprite->callback = sub_8105078;
+}
+
+static void sub_8105078(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[2] > 1)
+ {
+ sprite->data[2] = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+ if (++sprite->data[1] > 16)
+ {
+ sprite->invisible = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 3 && sprite->data[2] < sprite->data[5])
+ {
+ sprite->data[1] = 0;
+ sprite->pos1.y -= 1;
+ sprite->data[2]++;
+ if (sprite->data[2] % 10 == 0)
+ PlaySE12WithPanning(SE_W166, sprite->data[6]);
+ }
+ sprite->data[4] += sprite->data[3];
+ if (sprite->data[4] > 31)
+ {
+ sprite->data[4] = 0x40 - sprite->data[4];
+ sprite->data[3] *= -1;
+ }
+ else if (sprite->data[4] <= -32)
+ {
+ sprite->data[4] = -0x40 - sprite->data[4];
+ sprite->data[3] *= -1;
+ }
+ sprite->pos2.x = sprite->data[4];
+ if (sprite->data[5] == sprite->data[2])
+ {
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (++sprite->data[2] > 1)
+ {
+ sprite->data[2] = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+ if (++sprite->data[1] > 16)
+ {
+ sprite->invisible = 0;
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_81051C4(struct Sprite *sprite)
+{
+ u8 battler = 0;
+ u16 sp0 = 0;
+ u16 sp1 = 0;
+ u8 r4;
+
+ if (gBattleAnimArgs[2] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ r4 = gBattleAnimArgs[3] ^ 1;
+ if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler)))
+ {
+ SetAverageBattlerPositions(battler, r4, &sp0, &sp1);
+ if (r4 == 0)
+ r4 = GetBattlerSpriteCoord(battler, 0);
+ else
+ r4 = GetBattlerSpriteCoord(battler, 2);
+
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
+ gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird.
+ else
+ gBattleAnimArgs[0] = sp0 - r4;
+ }
+
+ sprite->callback = sub_80A77C8;
+ sprite->callback(sprite);
+}
+
+void sub_8105284(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ {
+ FreeSpriteOamMatrix(sprite);
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_81052A4(struct Sprite *sprite)
+{
+ u16 r9 = 0;
+ u16 r6 = 0;
+ s16 sp0 = 0;
+ s16 sp1 = 0;
+ u8 sp4;
+ u8 battler1;
+ u8 battler2;
+ u8 r10;
+
+ if (gBattleAnimArgs[5] == 0)
+ {
+ battler1 = gBattleAnimAttacker;
+ battler2 = gBattleAnimTarget;
+ }
+ else
+ {
+ battler1 = gBattleAnimTarget;
+ battler2 = gBattleAnimAttacker;
+ }
+
+ if (!gBattleAnimArgs[6])
+ {
+ r10 = 0;
+ sp4 = 1;
+ }
+ else
+ {
+ r10 = 2;
+ sp4 = 3;
+ }
+
+ if (GetBattlerSide(battler1) != B_SIDE_PLAYER)
+ {
+ r9 = GetBattlerSpriteCoord(battler1, r10) + gBattleAnimArgs[0];
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(battler2)))
+ sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler2)]].subpriority - 1;
+ else
+ sprite->subpriority = gSprites[gBattlerSpriteIds[battler2]].subpriority - 1;
+ }
+ else
+ {
+ r9 = GetBattlerSpriteCoord(battler1, r10) - gBattleAnimArgs[0];
+ if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler1)))
+ {
+ if (gSprites[gBattlerSpriteIds[battler1]].pos1.x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].pos1.x)
+ sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].subpriority + 1;
+ else
+ sprite->subpriority = gSprites[gBattlerSpriteIds[battler1]].subpriority - 1;
+ }
+ else
+ {
+ sprite->subpriority = gSprites[gBattlerSpriteIds[battler1]].subpriority - 1;
+ }
+
+ }
+
+ r6 = GetBattlerSpriteCoord(battler1, sp4) + gBattleAnimArgs[1];
+ if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler2)))
+ {
+ SetAverageBattlerPositions(battler2, gBattleAnimArgs[6], &sp0, &sp1);
+ }
+ else
+ {
+ sp0 = GetBattlerSpriteCoord(battler2, r10);
+ sp1 = GetBattlerSpriteCoord(battler2, sp4);
+ }
+
+ if (GetBattlerSide(battler2))
+ sp0 += gBattleAnimArgs[3];
+ else
+ sp0 -= gBattleAnimArgs[3];
+
+ sp1 += gBattleAnimArgs[4];
+ sprite->pos1.x = sprite->data[1] = r9;
+ sprite->pos1.y = sprite->data[3] = r6;
+ sprite->data[2] = sp0;
+ sprite->data[4] = sp1;
+ sprite->data[0] = gBattleAnimArgs[0];
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = sub_8105284;
+ sprite->callback(sprite);
+}
+
+void sub_81054E8(struct Sprite *sprite)
+{
+ u8 index = IndexOfSpritePaletteTag(ANIM_TAG_THIN_RING);
+ if (index != 0xFF)
+ {
+ BlendPalette(((index << 20) + 0x1010000) >> 16, 15, gBattleAnimArgs[5], gBattleAnimArgs[4]);
+ }
+
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_80A77C8;
+ sprite->callback(sprite);
+}
+
+void sub_8105538(struct Sprite *sprite)
+{
+ s16 r1;
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+ r1 = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160;
+ sprite->data[0] = 0x380;
+ sprite->data[1] = r1;
+ sprite->data[7] = gBattleAnimArgs[2];
+ sprite->callback = sub_810557C;
+}
+
+static void sub_810557C(struct Sprite *sprite)
+{
+ s16 add;
+ sprite->pos2.y -= (sprite->data[0] >> 8);
+ sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->data[0] -= 32;
+ add = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160;
+ sprite->data[1] += add;
+ if (sprite->pos2.y > 0)
+ {
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[0] = 0;
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_81055F4;
+ }
+}
+
+static void sub_81055F4(struct Sprite *sprite)
+{
+ if (sprite->data[0]++ > 19)
+ {
+ StartSpriteAffineAnim(sprite, 2);
+ sprite->callback = sub_810561C;
+ }
+}
+
+static void sub_810561C(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->data[0] = 0;
+ if (sprite->data[7] == 0)
+ {
+ sprite->oam.tileNum += 16;
+ sprite->callback = sub_8105694;
+ }
+ else
+ {
+ sprite->oam.tileNum += 32;
+ sprite->callback = sub_810571C;
+ }
+ }
+}
+
+static void sub_8105694(struct Sprite *sprite)
+{
+ sprite->pos2.y -= 2;
+ if (++sprite->data[0] == 9)
+ {
+ sprite->data[0] = 16;
+ sprite->data[1] = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND((u16)sprite->data[0], 0));
+ sprite->callback = sub_81056D4;
+ }
+}
+
+static void sub_81056D4(struct Sprite *sprite)
+{
+ if (sprite->data[1]++ % 3 == 0)
+ {
+ sprite->data[0]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0]));
+ if (sprite->data[0] == 0)
+ sprite->callback = sub_810571C;
+ }
+}
+
+static void sub_810571C(struct Sprite *sprite)
+{
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ {
+ sprite->invisible = 1;
+ if (sprite->data[7] == 0)
+ sprite->callback = sub_810575C;
+ else
+ sprite->callback = DestroyAnimSprite;
+ }
+}
+
+static void sub_810575C(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810577C(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ task->data[0] = spriteId;
+ PrepareAffineAnimInTaskData(task, spriteId, gUnknown_085938B0);
+ task->func = sub_81057B8;
+}
+
+static void sub_81057B8(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (!RunAffineAnimFromTaskData(task))
+ {
+ gSprites[task->data[0]].pos2.y = 0;
+ gSprites[task->data[0]].invisible = 1;
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_8105810(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[12] = 3;
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ {
+ task->data[13] = 0xFFFF;
+ task->data[14] = 8;
+ }
+ else
+ {
+ task->data[13] = 1;
+ task->data[14] = -8;
+ }
+
+ task->data[15] = GetAnimBattlerSpriteId(ANIM_TARGET);
+ task->func = sub_8105878;
+}
+
+static void sub_8105878(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ gSprites[task->data[15]].pos2.x += task->data[14];
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ if (task->data[2] & 1)
+ gSprites[task->data[15]].pos2.x += 6;
+ else
+ gSprites[task->data[15]].pos2.x -= 6;
+
+ if (++task->data[3] > 4)
+ {
+ if (task->data[2] & 1)
+ gSprites[task->data[15]].pos2.x -= 6;
+
+ task->data[0]++;
+ }
+ }
+ break;
+ case 2:
+ if (--task->data[12] != 0)
+ task->data[0] = 0;
+ else
+ task->data[0]++;
+ break;
+ case 3:
+ gSprites[task->data[15]].pos2.x += task->data[13];
+ if (gSprites[task->data[15]].pos2.x == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_810599C(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[4] = 1;
+ task->data[13] = 14;
+ task->data[14] = 2;
+ task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ task->func = sub_81059E0;
+}
+
+static void sub_81059E0(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (task->data[0] == 0 && ++task->data[1] > task->data[4])
+ {
+ task->data[1] = 0;
+ if (++task->data[2] & 1)
+ gSprites[task->data[15]].invisible = 0;
+ else
+ gSprites[task->data[15]].invisible = 1;
+
+ if (++task->data[3] >= task->data[13])
+ {
+ if (++task->data[4] < task->data[14])
+ {
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ }
+ else
+ {
+ gSprites[task->data[15]].invisible = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ }
+}
+
+void sub_8105AAC(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ task->data[0] = 0;
+ task->data[1] = 4;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[4] = 0;
+ task->data[5] = 0;
+ task->data[6] = 0;
+ task->data[7] = 0;
+ task->data[8] = 0;
+ task->data[13] = 0;
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, ANIM_ATTACKER);
+ task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, ANIM_TARGET);
+ task->func = sub_8105B08;
+}
+
+static void sub_8105B08(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ switch (task->data[8])
+ {
+ case 0:
+ if (++task->data[4] > 1)
+ {
+ task->data[4] = 0;
+ task->data[5] = (task->data[5] + 1) & 1;
+ if (++task->data[6] > 20)
+ {
+ if (task->data[7] == 0)
+ {
+ task->data[6] = 0;
+ task->data[8] = 1;
+ }
+ else
+ task->data[8] = 2;
+ }
+ }
+ break;
+ case 1:
+ task->data[5] = 0;
+ if (++task->data[4] > 20)
+ {
+ task->data[7] = 1;
+ task->data[8] = 0;
+ }
+ break;
+ case 2:
+ task->data[5] = 1;
+ break;
+ }
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 4)
+ {
+ u8 spriteId;
+ task->data[1] = 0;
+ spriteId = CreateSprite(&gUnknown_085938DC, task->data[14], task->data[15], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = 13;
+ gSprites[spriteId].pos2.x = gUnknown_085938F4[task->data[2]][0];
+ gSprites[spriteId].pos2.y = gUnknown_085938F4[task->data[2]][1];
+ task->data[13]++;
+ if (++task->data[2] > 3)
+ {
+ task->data[2] = 0;
+ if (++task->data[3] > 5)
+ task->data[0]++;
+ }
+ }
+ }
+ break;
+ case 1:
+ if (task->data[13] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8105C48(struct Sprite *sprite)
+{
+ sprite->invisible = gTasks[sprite->data[0]].data[5];
+ if (sprite->animEnded)
+ {
+ gTasks[sprite->data[0]].data[sprite->data[1]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_8105CB4(u8 taskId)
+{
+ int i;
+ u8 paletteNums[3];
+
+ paletteNums[0] = IndexOfSpritePaletteTag(ANIM_TAG_MUSIC_NOTES_2);
+ for (i = 1; i < 3; i++)
+ paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i);
+
+ gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
+ LZDecompressWram(gBattleAnimSpritePalette_206, gMonSpritesGfxPtr->field_17C);
+ for (i = 0; i < 3; i++)
+ LoadPalette(&gMonSpritesGfxPtr->field_17C[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32);
+
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8105D60(u8 taskId)
+{
+ int i;
+ for (i = 0; i < 3; i++)
+ FreeSpritePaletteByTag(gUnknown_08593950[i]);
+
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_8105D88(struct Sprite *sprite, u8 a, u8 b)
+{
+ u8 tile;
+ tile = (b & 1);
+ tile = ((-tile | tile) >> 31) & 32;
+ sprite->oam.tileNum += tile + (a << 2);
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_08593950[b >> 1]);
+}
+
+void sub_8105DE8(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sub_8105D88(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]);
+}
+
+void sub_8105E60(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 1)
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+
+ sprite->pos2.x = Sin(sprite->data[1], 8);
+ sprite->pos2.y = sprite->data[2] >> 8;
+ sprite->data[1] = (sprite->data[1] + 7) & 0xFF;
+ sprite->data[2] -= 0x80;
+ if (sprite->data[0] == 60)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8105EB0(u8 taskId)
+{
+ u16 win0h = IsContest() ? 0x98 : 0xF0;
+ u16 win0v = 0;
+
+ gBattle_WIN0H = win0h;
+ gBattle_WIN0V = 0xA0;
+ SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H);
+ SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V);
+ SetGpuReg(REG_OFFSET_WININ, 0x3F1F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x3F3F);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0xC8);
+ SetGpuReg(REG_OFFSET_BLDY, 0x10);
+ gTasks[taskId].data[0] = win0v;
+ gTasks[taskId].data[1] = win0h;
+ gTasks[taskId].func = sub_8105F30;
+}
+
+static void sub_8105F30(u8 taskId)
+{
+ gTasks[taskId].data[0] += 13;
+ gTasks[taskId].data[1] -= 13;
+ if (gTasks[taskId].data[0] >= gTasks[taskId].data[1])
+ {
+ gBattle_WIN0H = 0;
+ gTasks[taskId].func = sub_8105F84;
+ }
+ else
+ {
+ gBattle_WIN0H = gTasks[taskId].data[1] | (gTasks[taskId].data[0] << 8);
+ }
+}
+
+static void sub_8105F84(u8 taskId)
+{
+ if (++gTasks[taskId].data[10] == 5)
+ {
+ gTasks[taskId].data[11] = 0x88;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN);
+ BlendPalettes(sub_80A75AC(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31));
+ }
+ else if (gTasks[taskId].data[10] > 4)
+ {
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_8106020(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
+ if (++gTasks[taskId].data[0] == 1)
+ {
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(1), gUnknown_08593988);
+ gSprites[spriteId].pos2.x = 4;
+ }
+ else
+ {
+ gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ {
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_81060B0(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ if (++gTasks[taskId].data[0] == 1)
+ {
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), gUnknown_08593988);
+ gSprites[spriteId].pos2.x = 4;
+ }
+ else
+ {
+ gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ {
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_8106140(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = 95;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = sub_810618C;
+}
+
+static void sub_810618C(struct Sprite *sprite)
+{
+ if (!AnimTranslateLinear(sprite))
+ {
+ sprite->pos2.y += Sin(sprite->data[5], 14);
+ sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_81061C4(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->data[4] += sprite->data[1];
+ sprite->pos2.x = sprite->data[4] >> 8;
+ sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
+ if (sprite->data[3] > 100)
+ sprite->invisible = sprite->data[3] % 2;
+
+ if (sprite->data[3] > 120)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_810624C(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = 160;
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, sub_810627C);
+}
+
+static void sub_810627C(struct Sprite *sprite)
+{
+ s16 y;
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.y = -((u16)sprite->data[2] >> 8);
+ sprite->pos2.x = Sin(sprite->data[3], 4);
+ sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
+ y = sprite->pos1.y + sprite->pos2.y;
+ if (y <= 72)
+ {
+ sprite->invisible = sprite->data[3] % 2;
+ if (y <= 64)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_81062E8(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 3);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
+ SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
+ sub_80A6B30(&unknownStruct);
+ sub_80A6CC0(unknownStruct.bgId, &gUnknown_08C232E0, unknownStruct.tilesOffset);
+ sub_80A6D60(&unknownStruct, &gUnknown_08C23D78, 0);
+ LoadCompressedPalette(&gUnknown_08C23D50, unknownStruct.unk8 << 4, 32);
+ gTasks[taskId].func = sub_81063A8;
+}
+
+static void sub_81063A8(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+
+ switch (gTasks[taskId].data[12])
+ {
+ case 0:
+ if (++gTasks[taskId].data[10] == 4)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
+ if (gTasks[taskId].data[11] == 16)
+ {
+ gTasks[taskId].data[12]++;
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[11] == 141)
+ {
+ gTasks[taskId].data[11] = 16;
+ gTasks[taskId].data[12]++;
+ }
+ break;
+ case 2:
+ if (++gTasks[taskId].data[10] == 4)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
+ if (gTasks[taskId].data[11] == 0)
+ {
+ gTasks[taskId].data[12]++;
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 3:
+ sub_80A6B30(&unknownStruct);
+ sub_80A6C68(unknownStruct.bgId);
+ gTasks[taskId].data[12]++;
+ break;
+ case 4:
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_81064F8(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
+ SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
+ sub_80A6B30(&unknownStruct);
+ if (IsContest())
+ sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFaceContest, 0);
+ else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
+ sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFacePlayer, 0);
+ else
+ sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFaceOpponent, 0);
+
+ sub_80A6CC0(unknownStruct.bgId, &gUnknown_08C249F8, unknownStruct.tilesOffset);
+ LoadCompressedPalette(&gUnknown_08C249D0, unknownStruct.unk8 << 4, 32);
+ gTasks[taskId].func = sub_81065EC;
+}
+
+static void sub_81065EC(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+
+ switch (gTasks[taskId].data[12])
+ {
+ case 0:
+ if (++gTasks[taskId].data[10] == 2)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
+ if (gTasks[taskId].data[11] == 14)
+ {
+ gTasks[taskId].data[12]++;
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[11] == 21)
+ {
+ gTasks[taskId].data[11] = 14;
+ gTasks[taskId].data[12]++;
+ }
+ break;
+ case 2:
+ if (++gTasks[taskId].data[10] == 2)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
+ if (gTasks[taskId].data[11] == 0)
+ {
+ gTasks[taskId].data[12]++;
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 3:
+ sub_80A6B30(&unknownStruct);
+ sub_80A6C68(1);
+ sub_80A6C68(2);
+ gTasks[taskId].data[12]++;
+ // fall through
+ case 4:
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+// Orbits a sphere in an ellipse around the mon.
+// Used by MOVE_HIDDEN_POWER
+// arg 0: duration
+// arg 1: initial wave offset
+void AnimOrbitFast(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->affineAnimPaused = 1;
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
+ sprite->callback = AnimOrbitFastStep;
+ sprite->callback(sprite);
+}
+
+static void AnimOrbitFastStep(struct Sprite *sprite)
+{
+ if ((u16)(sprite->data[1] - 64) < 128)
+ sprite->subpriority = sprite->data[7] + 1;
+ else
+ sprite->subpriority = sprite->data[7] - 1;
+
+ sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
+ sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
+ switch (sprite->data[5])
+ {
+ case 1:
+ sprite->data[2] -= 0x400;
+ sprite->data[3] -= 0x100;
+ if (++sprite->data[4] == sprite->data[0])
+ {
+ sprite->data[5] = 2;
+ return;
+ }
+ break;
+ case 0:
+ sprite->data[2] += 0x400;
+ sprite->data[3] += 0x100;
+ if (++sprite->data[4] == sprite->data[0])
+ {
+ sprite->data[4] = 0;
+ sprite->data[5] = 1;
+ }
+ break;
+ }
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ DestroyAnimSprite(sprite);
+}
+
+// Moves orbs away from the mon, based on where they are in their orbit.
+// Used in MOVE_HIDDEN_POWER.
+// arg 0: initial wave offset
+void AnimOrbitScatter(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
+ sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
+ sprite->callback = AnimOrbitScatterStep;
+}
+
+static void AnimOrbitScatterStep(struct Sprite *sprite)
+{
+ sprite->pos2.x += sprite->data[0];
+ sprite->pos2.y += sprite->data[1];
+ if (sprite->pos1.x + sprite->pos2.x + 16 > 272u || sprite->pos1.y + sprite->pos2.y > 160 || sprite->pos1.y + sprite->pos2.y < -16)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_8106914(struct Sprite *sprite)
+{
+ sprite->pos2.x += sprite->data[0];
+ sprite->pos2.y += sprite->data[1];
+ if (sprite->data[3]++ >= sprite->data[2])
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8106944(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
+ sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->callback = sub_8106914;
+}
+
+static void sub_810699C(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81069B8(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->callback = sub_810699C;
+}
+
+void sub_81069D0(struct Sprite *sprite)
+{
+ s16 var0;
+ if (!sprite->data[0])
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+
+ sprite->data[0]++;
+ var0 = (sprite->data[0] * 10) & 0xFF;
+ sprite->pos2.x = Sin(var0, 80) >> 8;
+ if (sprite->data[0] < 80)
+ sprite->pos2.y = (sprite->data[0] / 2) + (Cos(var0, 80) >> 8);
+
+ if (sprite->data[0] > 90)
+ {
+ sprite->data[2]++;
+ sprite->pos2.x -= sprite->data[2] / 2;
+ }
+
+ if (sprite->data[0] > 100)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_8106A64(struct Sprite *sprite)
+{
+ sprite->data[5]++;
+ sprite->pos2.x = Sin(sprite->data[3], 5);
+ sprite->pos2.y = sprite->data[5] / 2;
+ sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
+ if (sprite->data[5] > 20)
+ sprite->invisible = sprite->data[5] % 2;
+
+ if (sprite->data[5] > 30)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8106AD0(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->data[4] += sprite->data[1];
+ sprite->pos2.x = sprite->data[4] >> 8;
+ sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
+ if (sprite->data[3] > 70)
+ {
+ sprite->callback = sub_8106A64;
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[3] = Random2() % 180;
+ }
+ }
+}
+
+void sub_8106B54(struct Sprite *sprite)
+{
+ if (sprite->data[3] == 0)
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ StartSpriteAnim(sprite, 0);
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1;
+ sprite->data[2] = 1;
+ }
+ sprite->data[0] += sprite->data[2];
+ sprite->data[1] = (sprite->data[0] * 4) % 256;
+ if (sprite->data[1] < 0)
+ sprite->data[1] = 0;
+ sprite->pos2.x = Cos(sprite->data[1], 30 - sprite->data[0] / 4);
+ sprite->pos2.y = Sin(sprite->data[1], 10 - sprite->data[0] / 8);
+ if (sprite->data[1] > 128 && sprite->data[2] > 0)
+ sprite->data[2] = -1;
+ if (sprite->data[1] == 0 && sprite->data[2] < 0)
+ sprite->data[2] = 1;
+ sprite->data[3]++;
+ if (sprite->data[3] < 10 || sprite->data[3] > 80)
+ sprite->invisible = sprite->data[0] % 2;
+ else
+ sprite->invisible = FALSE;
+ if (sprite->data[3] > 90)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8106C80(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ StartSpriteAnim(sprite, gBattleAnimArgs[2]);
+ sprite->data[0]++;
+ }
+ else if (sprite->animEnded)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_8106CD0(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[2])
+ {
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ if (!gBattleAnimArgs[0])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ }
+
+ if (!gBattleAnimArgs[1])
+ sprite->pos1.x += 32;
+ else
+ sprite->pos1.x -= 32;
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[1];
+ StartSpriteAnim(sprite, sprite->data[1]);
+ sprite->callback = sub_8106D5C;
+ }
+}
+
+static void sub_8106D5C(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ if (--sprite->data[0])
+ StartSpriteAnim(sprite, sprite->data[1]);
+ else
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_8106D90(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+
+ PrepareAffineAnimInTaskData(&gTasks[taskId], spriteId, gUnknown_08593B98);
+ gTasks[taskId].func = sub_8106DD4;
+}
+
+static void sub_8106DD4(u8 taskId)
+{
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8106E00(struct Sprite *sprite)
+{
+ int var1;
+ u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget;
+
+ if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
+ gBattleAnimArgs[1] *= -1;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[2];
+ sprite->data[0] = 0;
+ sprite->data[1] = (u16)sprite->pos1.x << 3;
+ sprite->data[2] = (u16)sprite->pos1.y << 3;
+
+ var1 = gBattleAnimArgs[1] << 3;
+ if (var1 < 0)
+ var1 += 7;
+ sprite->data[3] = var1 >> 3;
+
+ var1 = gBattleAnimArgs[2] << 3;
+ if (var1 < 0)
+ var1 += 7;
+ sprite->data[4] = var1 >> 3;
+
+ sprite->oam.tileNum += gBattleAnimArgs[3] * 16;
+ sprite->callback = sub_8106EC8;
+}
+
+static void sub_8106EC8(struct Sprite *sprite)
+{
+ sprite->data[1] += sprite->data[3];
+ sprite->data[2] += sprite->data[4];
+ sprite->pos1.x = sprite->data[1] >> 3;
+ sprite->pos1.y = sprite->data[2] >> 3;
+ if (++sprite->data[0] > 16)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8106F00(struct Sprite *sprite)
+{
+ if (!sprite->data[0])
+ {
+ sprite->data[1] = 120 - gBattleAnimArgs[0];
+ sprite->invisible = 1;
+ }
+
+ if (++sprite->data[0] == sprite->data[1])
+ SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0);
+
+ if (sprite->data[0] == sprite->data[1] + 80)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8106F60(struct Sprite *sprite)
+{
+ int index;
+ int var2;
+
+ if (!sprite->data[0])
+ {
+ sprite->pos1.x = 120;
+ sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15;
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[1]);
+
+ sprite->data[5] = 120;
+ sprite->data[3] = gBattleAnimArgs[2];
+ }
+
+ sprite->data[0]++;
+
+ sprite->data[1] = (sprite->data[0] + ((u16)sprite->data[0] >> 31)) / 2;
+ index = ((sprite->data[0] * 3) + (u16)sprite->data[3]);
+ var2 = 0xFF;
+ sprite->data[6] = (sprite->data[6] + 10) & 0xFF;
+
+ index &= var2;
+ sprite->pos2.x = Cos(index, 100);
+
+ sprite->pos2.y = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4);
+
+ if (sprite->data[0] > sprite->data[5])
+ {
+ sprite->callback = sub_8107018;
+
+ sprite->data[0] = 0;
+ oamt_add_pos2_onto_pos1(sprite);
+ sprite->data[2] = 5;
+ sprite->data[4] = 0;
+ sprite->data[3] = 0;
+
+ StartSpriteAffineAnim(sprite, 1);
+ }
+}
+
+static void sub_8107018(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 10)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_810703C;
+ }
+}
+
+static void sub_810703C(struct Sprite *sprite)
+{
+ sprite->data[3] += sprite->data[2];
+ sprite->pos2.y = sprite->data[3];
+
+ sprite->data[2]++;
+
+ if (sprite->data[3] > 48 && sprite->data[2] > 0)
+ {
+ sprite->data[2] = sprite->data[4] - 5;
+ sprite->data[4]++;
+ }
+
+ if (sprite->data[4] > 3)
+ {
+ int var1 = sprite->data[2];
+ sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1);
+ DestroyAnimSprite(sprite);
+ }
+
+ if (sprite->data[4] == 4)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_81070AC(struct Sprite *sprite)
+{
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
+ {
+ SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->pos1.y += 40;
+
+ StartSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40;
+ }
+
+ sprite->data[0] = 13;
+ sprite->data[2] = sprite->pos1.x;
+ sprite->data[4] = sprite->pos1.y - 72;
+
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void AnimTask_IsFuryCutterHitRight(u8 taskId)
+{
+ gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter & 1;
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_GetFuryCutterHitCount(u8 taskId)
+{
+ gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter;
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
new file mode 100755
index 000000000..d887eeabf
--- /dev/null
+++ b/src/battle_anim_effects_3.c
@@ -0,0 +1,4889 @@
+#include "global.h"
+#include "alloc.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "bg.h"
+#include "contest.h"
+#include "data2.h"
+#include "decompress.h"
+#include "dma3.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "palette.h"
+#include "pokemon_icon.h"
+#include "random.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "util.h"
+#include "constants/battle_anim.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+
+extern u8 sub_807521C(s16 x, s16 y, u8 a3);
+extern void sub_810E2C8(struct Sprite *);
+
+extern const struct SpriteTemplate gUnknown_08593114;
+extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
+extern const union AffineAnimCmd *const gUnknown_082FF694[];
+
+void sub_815A0D4(struct Sprite *);
+void sub_815A1B0(struct Sprite *);
+void sub_815A254(struct Sprite *);
+void sub_815A2F0(struct Sprite *);
+void sub_815A6C4(struct Sprite *);
+void sub_815A7B0(struct Sprite *);
+void sub_815A7EC(struct Sprite *);
+void sub_815A8AC(struct Sprite *);
+void sub_815A934(struct Sprite *);
+void sub_815AAA4(struct Sprite *);
+void sub_815ABD0(struct Sprite *);
+void sub_815ACD0(struct Sprite *);
+void sub_815B27C(struct Sprite *);
+void sub_815B394(struct Sprite *);
+void sub_815B49C(struct Sprite *);
+void sub_815B570(struct Sprite *);
+void sub_815B70C(struct Sprite *);
+void sub_815BE04(struct Sprite *);
+void sub_815C400(struct Sprite *);
+void sub_815C6B0(struct Sprite *);
+void sub_815C95C(struct Sprite *);
+void sub_815CB88(struct Sprite *);
+void sub_815CC94(struct Sprite *);
+void sub_815CDB4(struct Sprite *);
+void sub_815D7B4(struct Sprite *);
+void sub_815D870(struct Sprite *);
+void sub_815DEBC(struct Sprite *);
+void sub_815E01C(struct Sprite *);
+void sub_815E404(struct Sprite *);
+void sub_815E444(struct Sprite *);
+void sub_815E6D8(struct Sprite *);
+void sub_815E954(struct Sprite *);
+void sub_815EA14(struct Sprite *);
+void sub_815EE84(struct Sprite *);
+void sub_815F18C(struct Sprite *);
+void sub_815F48C(struct Sprite *);
+void sub_815FE80(struct Sprite *);
+void sub_81061C4(struct Sprite *);
+void sub_8160338(struct Sprite *);
+void sub_81603A8(struct Sprite *);
+static void sub_815A114(struct Sprite *);
+static void sub_815A1F4(struct Sprite *);
+static void sub_815A234(struct Sprite *);
+static void sub_815A31C(struct Sprite *);
+static void sub_815A3AC(struct Sprite *);
+static void sub_815A3F0(struct Sprite *);
+static void sub_815A49C(struct Sprite *);
+static void sub_815A52C(u8);
+static void sub_815A5F0(u8);
+static void sub_815A73C(struct Sprite *);
+static void sub_815A76C(struct Sprite *);
+static void sub_815A9A0(struct Sprite *);
+static void sub_815AA6C(struct Sprite *);
+static void sub_815AB5C(struct Sprite *);
+static void sub_815AD4C(struct Sprite *);
+static void sub_815AED8(u8);
+static void sub_815B054(u8);
+static void sub_815B23C(struct Sprite *);
+static void sub_815B4D4(struct Sprite *);
+static void sub_815B5D0(struct Sprite *);
+static void sub_815BF44(struct Sprite *);
+static void sub_815BFF4(struct Sprite *);
+static void sub_815C050(struct Sprite *);
+static void sub_815C548(u8);
+static void sub_815C700(struct Sprite *);
+static void sub_815C7C4(u8);
+static void sub_815CC34(struct Sprite *);
+static void sub_815CD0C(struct Sprite *);
+static void sub_815CDFC(struct Sprite *);
+static void sub_815D1BC(u8);
+static void sub_815D398(u8);
+static void sub_815D694(u8);
+static void sub_815D804(struct Sprite *);
+static void sub_815DD48(u8);
+static void sub_815DDE0(u8, bool8);
+static void sub_815DF64(u8);
+static void sub_815E0DC(struct Sprite *);
+static void sub_815E20C(u8);
+static void sub_815E34C(s16, s16, s16, s16, u8, u8, s16 *, s16 *);
+static void sub_815E5CC(u8);
+static void sub_815E784(struct Sprite *);
+static void sub_815E898(u8);
+static void sub_815E9BC(struct Sprite *);
+static void sub_815EA60(struct Sprite *);
+static void sub_815ECE4(u8);
+static void sub_815EF08(struct Sprite *);
+static void sub_815F330(u8);
+static void sub_815F4F0(struct Sprite *);
+static void sub_815F79C(u8);
+static void sub_815F7C4(struct Sprite *);
+
+const union AnimCmd gUnknown_085CE004[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE01C[] =
+{
+ gUnknown_085CE004,
+};
+
+const struct SpriteTemplate gUnknown_085CE020 =
+{
+ .tileTag = ANIM_TAG_SCRATCH,
+ .paletteTag = ANIM_TAG_SCRATCH,
+ .oam = &gUnknown_08524A34,
+ .anims = gUnknown_085CE01C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const struct SpriteTemplate gUnknown_085CE038 =
+{
+ .tileTag = ANIM_TAG_BLACK_SMOKE,
+ .paletteTag = ANIM_TAG_BLACK_SMOKE,
+ .oam = &gUnknown_08524934,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815A0D4,
+};
+
+const struct SpriteTemplate gUnknown_085CE050 =
+{
+ .tileTag = ANIM_TAG_BLACK_BALL,
+ .paletteTag = ANIM_TAG_BLACK_BALL,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A78AC,
+};
+
+const union AnimCmd gUnknown_085CE068[] =
+{
+ ANIMCMD_FRAME(0, 40),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(32, 40),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE078[] =
+{
+ gUnknown_085CE068,
+};
+
+const struct SpriteTemplate gUnknown_085CE07C =
+{
+ .tileTag = ANIM_TAG_OPENING_EYE,
+ .paletteTag = ANIM_TAG_OPENING_EYE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085CE078,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const struct SpriteTemplate gUnknown_085CE094 =
+{
+ .tileTag = ANIM_TAG_ROUND_WHITE_HALO,
+ .paletteTag = ANIM_TAG_ROUND_WHITE_HALO,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815A1B0,
+};
+
+const struct SpriteTemplate gUnknown_085CE0AC =
+{
+ .tileTag = ANIM_TAG_TEAL_ALERT,
+ .paletteTag = ANIM_TAG_TEAL_ALERT,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815A254,
+};
+
+const union AffineAnimCmd gUnknown_085CE0C4[] =
+{
+ AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0),
+ AFFINEANIMCMD_FRAME(-0x20, 0x18, 0, 5),
+ AFFINEANIMCMD_FRAME(0x18, -0x20, 0, 5),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gUnknown_085CE0E4[] =
+{
+ AFFINEANIMCMD_FRAME(0x30, 0x30, 0, 0),
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085CE0FC[] =
+{
+ gUnknown_085CE0C4,
+ gUnknown_085CE0E4,
+};
+
+const struct SpriteTemplate gUnknown_085CE104 =
+{
+ .tileTag = ANIM_TAG_EYE,
+ .paletteTag = ANIM_TAG_EYE,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE0FC,
+ .callback = sub_815A2F0,
+};
+
+const struct SpriteTemplate gUnknown_085CE11C =
+{
+ .tileTag = ANIM_TAG_SPIKES,
+ .paletteTag = ANIM_TAG_SPIKES,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815A6C4,
+};
+
+const union AnimCmd gUnknown_085CE134[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE14C[] =
+{
+ gUnknown_085CE134,
+};
+
+const struct SpriteTemplate gUnknown_085CE150 =
+{
+ .tileTag = ANIM_TAG_LEER,
+ .paletteTag = ANIM_TAG_LEER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085CE14C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815A7B0,
+};
+
+const union AnimCmd gUnknown_085CE168[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE170[] =
+{
+ gUnknown_085CE168,
+};
+
+const union AffineAnimCmd gUnknown_085CE174[] =
+{
+ AFFINEANIMCMD_FRAME(-7, -7, -3, 16),
+ AFFINEANIMCMD_FRAME(7, 7, 3, 16),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085CE18C[] =
+{
+ gUnknown_085CE174,
+};
+
+const struct SpriteTemplate gUnknown_085CE190 =
+{
+ .tileTag = ANIM_TAG_LETTER_Z,
+ .paletteTag = ANIM_TAG_LETTER_Z,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085CE170,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE18C,
+ .callback = sub_815A7EC,
+};
+
+const union AnimCmd gUnknown_085CE1A8[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 16),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE1BC[] =
+{
+ gUnknown_085CE1A8,
+};
+
+const union AffineAnimCmd gUnknown_085CE1C0[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_FRAME(-0x20, -0x20, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085CE1D8[] =
+{
+ gUnknown_085CE1C0,
+};
+
+const struct SpriteTemplate gUnknown_085CE1DC =
+{
+ .tileTag = ANIM_TAG_FANG_ATTACK,
+ .paletteTag = ANIM_TAG_FANG_ATTACK,
+ .oam = &gUnknown_085249D4,
+ .anims = gUnknown_085CE1BC,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE1D8,
+ .callback = sub_815A8AC,
+};
+
+const union AffineAnimCmd gUnknown_085CE1F4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x180, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x0, 0, 20),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085CE20C[] =
+{
+ AFFINEANIMCMD_FRAME(0x140, 0x180, 0, 0),
+ AFFINEANIMCMD_FRAME(-0x10, 0x0, 0, 19),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085CE224[] =
+{
+ gUnknown_085CE1F4,
+ gUnknown_085CE20C,
+};
+
+const struct SpriteTemplate gUnknown_085CE22C =
+{
+ .tileTag = ANIM_TAG_SPOTLIGHT,
+ .paletteTag = ANIM_TAG_SPOTLIGHT,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE224,
+ .callback = sub_815A934,
+};
+
+const struct SpriteTemplate gUnknown_085CE244 =
+{
+ .tileTag = ANIM_TAG_TAG_HAND,
+ .paletteTag = ANIM_TAG_TAG_HAND,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815AAA4,
+};
+
+const struct SpriteTemplate gUnknown_085CE25C =
+{
+ .tileTag = ANIM_TAG_TAG_HAND,
+ .paletteTag = ANIM_TAG_TAG_HAND,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815ABD0,
+};
+
+const union AnimCmd gUnknown_085CE274[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(8, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085CE284[] =
+{
+ gUnknown_085CE274,
+};
+
+const struct SpriteTemplate gUnknown_085CE288 =
+{
+ .tileTag = ANIM_TAG_RAPID_SPIN,
+ .paletteTag = ANIM_TAG_RAPID_SPIN,
+ .oam = &gUnknown_08524934,
+ .anims = gUnknown_085CE284,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815ACD0,
+};
+
+const union AffineAnimCmd gUnknown_085CE2A0[] =
+{
+ AFFINEANIMCMD_FRAME(-12, 8, 0, 4),
+ AFFINEANIMCMD_FRAME(20, -20, 0, 4),
+ AFFINEANIMCMD_FRAME(-8, 12, 0, 4),
+ AFFINEANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085CE2C0[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE2C8[] =
+{
+ gUnknown_085CE2C0,
+};
+
+const union AffineAnimCmd gUnknown_085CE2CC[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 5, 40),
+ AFFINEANIMCMD_FRAME(0, 0, 10, 10),
+ AFFINEANIMCMD_FRAME(0, 0, 15, 10),
+ AFFINEANIMCMD_FRAME(0, 0, 20, 40),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085CE2F4[] =
+{
+ gUnknown_085CE2CC,
+};
+
+const struct SpriteTemplate gUnknown_085CE2F8 =
+{
+ .tileTag = ANIM_TAG_TRI_FORCE_TRIANGLE,
+ .paletteTag = ANIM_TAG_TRI_FORCE_TRIANGLE,
+ .oam = &gUnknown_085249DC,
+ .anims = gUnknown_085CE2C8,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE2F4,
+ .callback = sub_815B27C,
+};
+
+const union AnimCmd gUnknown_085CE310[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(32, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE334[] =
+{
+ gUnknown_085CE310,
+};
+
+const struct SpriteTemplate gUnknown_085CE338 =
+{
+ .tileTag = ANIM_TAG_ECLIPSING_ORB,
+ .paletteTag = ANIM_TAG_ECLIPSING_ORB,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085CE334,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const union AffineAnimCmd gUnknown_085CE350[] =
+{
+ AFFINEANIMCMD_FRAME(-12, 20, 0, 8),
+ AFFINEANIMCMD_FRAME(12, -20, 0, 8),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gUnknown_085CE370 =
+{
+ .tileTag = ANIM_TAG_POKEBALL,
+ .paletteTag = ANIM_TAG_POKEBALL,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815B394,
+};
+
+const struct SpriteTemplate gUnknown_085CE388 =
+{
+ .tileTag = ANIM_TAG_GOLD_STARS,
+ .paletteTag = ANIM_TAG_GOLD_STARS,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815B49C,
+};
+
+const struct SpriteTemplate gUnknown_085CE3A0 =
+{
+ .tileTag = ANIM_TAG_GOLD_STARS,
+ .paletteTag = ANIM_TAG_GOLD_STARS,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815B570,
+};
+
+const union AffineAnimCmd gUnknown_085CE3B8[] =
+{
+ AFFINEANIMCMD_FRAME(8, -8, 0, 12),
+ AFFINEANIMCMD_FRAME(-16, 16, 0, 12),
+ AFFINEANIMCMD_FRAME(8, -8, 0, 12),
+ AFFINEANIMCMD_LOOP(1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085CE3E0[] =
+{
+ AFFINEANIMCMD_FRAME(0, 6, 0, 20),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 20),
+ AFFINEANIMCMD_FRAME(0, -18, 0, 6),
+ AFFINEANIMCMD_FRAME(-18, -18, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 15),
+ AFFINEANIMCMD_FRAME(4, 4, 0, 13),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gUnknown_085CE418 =
+{
+ .tileTag = ANIM_TAG_BLUE_ORB,
+ .paletteTag = ANIM_TAG_BLUE_ORB,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815B70C,
+};
+
+const union AffineAnimCmd gUnknown_085CE430[] =
+{
+ AFFINEANIMCMD_FRAME(0, 6, 0, 20),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 20),
+ AFFINEANIMCMD_FRAME(7, -30, 0, 6),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 20),
+ AFFINEANIMCMD_FRAME(-2, 3, 0, 20),
+ AFFINEANIMCMD_END,
+};
+
+const s8 gUnknown_085CE460[] =
+{
+ 0xE8,
+ 0x18,
+ 0xFC,
+ 0x00,
+};
+
+const union AnimCmd gUnknown_085CE464[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(4, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_085CE470[] =
+{
+ ANIMCMD_FRAME(8, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085CE478[] =
+{
+ ANIMCMD_FRAME(12, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE480[] =
+{
+ gUnknown_085CE464,
+ gUnknown_085CE470,
+ gUnknown_085CE478,
+};
+
+const struct SpriteTemplate gUnknown_085CE48C =
+{
+ .tileTag = ANIM_TAG_GREEN_STAR,
+ .paletteTag = ANIM_TAG_GREEN_STAR,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_085CE480,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815BE04,
+};
+
+const s8 gUnknown_085CE4A4[] =
+{
+ 0x78,
+ 0x50,
+ 0x28,
+ 0x00,
+};
+
+const u8 gUnknown_085CE4A8[] =
+{
+ 0,
+ 0,
+ 0,
+ 0,
+ 50,
+};
+
+const union AffineAnimCmd gUnknown_085CE4B0[] =
+{
+ AFFINEANIMCMD_FRAME(0, -15, 0, 7),
+ AFFINEANIMCMD_FRAME(0, 15, 0, 7),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gUnknown_085CE4D0 =
+{
+ .tileTag = ANIM_TAG_ANGER,
+ .paletteTag = ANIM_TAG_ANGER,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815C400,
+};
+
+const union AnimCmd gUnknown_085CE4E8[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(3, 8, .vFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .vFlip = TRUE),
+ ANIMCMD_FRAME(0, 8, .vFlip = TRUE),
+ ANIMCMD_FRAME(1, 8, .vFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_085CE50C[] =
+{
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 8, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 8, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 8, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_085CE530[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE538[] =
+{
+ gUnknown_085CE4E8,
+ gUnknown_085CE50C,
+ gUnknown_085CE530,
+};
+
+const struct SpriteTemplate gUnknown_085CE544 =
+{
+ .tileTag = ANIM_TAG_PINK_PETAL,
+ .paletteTag = ANIM_TAG_PINK_PETAL,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085CE538,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815C6B0,
+};
+
+const u16 gUnknown_085CE55C[] = INCBIN_U16("graphics/unknown/unknown_85CE55C.gbapal");
+
+const union AnimCmd gUnknown_085CE57C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 9),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE58C[] =
+{
+ gUnknown_085CE57C,
+};
+
+const struct SpriteTemplate gUnknown_085CE590 =
+{
+ .tileTag = ANIM_TAG_PAIN_SPLIT,
+ .paletteTag = ANIM_TAG_PAIN_SPLIT,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_085CE58C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815C95C,
+};
+
+const struct SpriteTemplate gUnknown_085CE5A8 =
+{
+ .tileTag = ANIM_TAG_CONFETTI,
+ .paletteTag = ANIM_TAG_CONFETTI,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815CB88,
+};
+
+const struct SpriteTemplate gUnknown_085CE5C0 =
+{
+ .tileTag = ANIM_TAG_SPOTLIGHT,
+ .paletteTag = ANIM_TAG_SPOTLIGHT,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE224,
+ .callback = sub_815CC94,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85CE5D8 =
+{
+ .tileTag = ANIM_TAG_BLUE_ORB,
+ .paletteTag = ANIM_TAG_BLUE_ORB,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815CDB4,
+};
+
+const union AffineAnimCmd gUnknown_085CE5F0[] =
+{
+ AFFINEANIMCMD_FRAME(16, 0, 0, 4),
+ AFFINEANIMCMD_FRAME(0, -3, 0, 16),
+ AFFINEANIMCMD_FRAME(4, 0, 0, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 24),
+ AFFINEANIMCMD_FRAME(-5, 3, 0, 16),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085CE620[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(-8, -8, 0, 8),
+ AFFINEANIMCMD_FRAME(8, 8, 0, 8),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_085CE640[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0),
+ AFFINEANIMCMD_FRAME(8, 8, 0, 8),
+ AFFINEANIMCMD_FRAME(-8, -8, 0, 8),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_085CE660[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(8, 8, 0, 8),
+ AFFINEANIMCMD_FRAME(-8, -8, 0, 8),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085CE680[] =
+{
+ gUnknown_085CE620,
+ gUnknown_085CE640,
+ gUnknown_085CE660,
+};
+
+const struct SpriteTemplate gUnknown_085CE68C =
+{
+ .tileTag = ANIM_TAG_PINK_CLOUD,
+ .paletteTag = ANIM_TAG_PINK_CLOUD,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE680,
+ .callback = sub_815D7B4,
+};
+
+const union AffineAnimCmd gUnknown_085CE6A4[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(-4, -6, 0, 16),
+ AFFINEANIMCMD_FRAME(4, 6, 0, 16),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_085CE6C4[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0),
+ AFFINEANIMCMD_FRAME(4, 6, 0, 16),
+ AFFINEANIMCMD_FRAME(-4, -6, 0, 16),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_085CE6E4[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(4, 6, 0, 16),
+ AFFINEANIMCMD_FRAME(-4, -6, 0, 16),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_085CE704[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(8, 10, 0, 30),
+ AFFINEANIMCMD_FRAME(-8, -10, 0, 16),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085CE724[] =
+{
+ gUnknown_085CE6A4,
+ gUnknown_085CE6C4,
+ gUnknown_085CE6E4,
+ gUnknown_085CE704,
+};
+
+const struct SpriteTemplate gUnknown_085CE734 =
+{
+ .tileTag = ANIM_TAG_PINK_CLOUD,
+ .paletteTag = ANIM_TAG_PINK_CLOUD,
+ .oam = &gUnknown_085249D4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE724,
+ .callback = sub_815D870,
+};
+
+const union AffineAnimCmd gUnknown_085CE74C[] =
+{
+ AFFINEANIMCMD_FRAME(-16, 16, 0, 6),
+ AFFINEANIMCMD_FRAME(16, -16, 0, 12),
+ AFFINEANIMCMD_FRAME(-16, 16, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gUnknown_085CE76C =
+{
+ .tileTag = ANIM_TAG_SWEAT_DROP,
+ .paletteTag = ANIM_TAG_SWEAT_DROP,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815DEBC,
+};
+
+const u16 gUnknown_085CE784[] = INCBIN_U16("graphics/battle_anims/sprites/effect.gbapal");
+
+const union AnimCmd gUnknown_085CE7B4[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_085CE7C0[] =
+{
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085CE7CC[] =
+{
+ gUnknown_085CE7B4,
+ gUnknown_085CE7C0,
+};
+
+const struct SpriteTemplate gUnknown_085CE7D4 =
+{
+ .tileTag = ANIM_TAG_NOISE_LINE,
+ .paletteTag = ANIM_TAG_NOISE_LINE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085CE7CC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815E01C,
+};
+
+const struct SpriteTemplate gUnknown_085CE7EC =
+{
+ .tileTag = ANIM_TAG_SMALL_RED_EYE,
+ .paletteTag = ANIM_TAG_SMALL_RED_EYE,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815E404,
+};
+
+const struct SpriteTemplate gUnknown_085CE804 =
+{
+ .tileTag = ANIM_TAG_PAW_PRINT,
+ .paletteTag = ANIM_TAG_PAW_PRINT,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815E444,
+};
+
+const union AffineAnimCmd gUnknown_085CE81C[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, -4, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085CE82C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085CE844[] =
+{
+ gUnknown_085CE81C,
+ gUnknown_085CE82C,
+};
+
+const struct SpriteTemplate gUnknown_085CE84C =
+{
+ .tileTag = ANIM_TAG_RED_BALL,
+ .paletteTag = ANIM_TAG_RED_BALL,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE844,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct SpriteTemplate gUnknown_085CE864 =
+{
+ .tileTag = ANIM_TAG_TAG_HAND,
+ .paletteTag = ANIM_TAG_TAG_HAND,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815E6D8,
+};
+
+const union AffineAnimCmd gUnknown_085CE87C[] =
+{
+ AFFINEANIMCMD_FRAME(0, -16, 0, 6),
+ AFFINEANIMCMD_FRAME(0, 16, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gUnknown_085CE894 =
+{
+ .tileTag = ANIM_TAG_SMELLINGSALT_EFFECT,
+ .paletteTag = ANIM_TAG_SMELLINGSALT_EFFECT,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815E954,
+};
+
+const struct SpriteTemplate gUnknown_085CE8AC =
+{
+ .tileTag = ANIM_TAG_TAG_HAND,
+ .paletteTag = ANIM_TAG_TAG_HAND,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815EA14,
+};
+
+const struct SpriteTemplate gUnknown_085CE8C4 =
+{
+ .tileTag = ANIM_TAG_MAGNIFYING_GLASS,
+ .paletteTag = ANIM_TAG_MAGNIFYING_GLASS,
+ .oam = &gUnknown_08524A34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815EE84,
+};
+
+const struct SpriteTemplate gUnknown_085CE8DC =
+{
+ .tileTag = ANIM_TAG_GOLD_STARS,
+ .paletteTag = ANIM_TAG_GOLD_STARS,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815F18C,
+};
+
+const struct SpriteTemplate gUnknown_085CE8F4 =
+{
+ .tileTag = ANIM_TAG_GOLD_STARS,
+ .paletteTag = ANIM_TAG_GOLD_STARS,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81061C4,
+};
+
+const struct SpriteTemplate gUnknown_085CE90C =
+{
+ .tileTag = ANIM_TAG_X_SIGN,
+ .paletteTag = ANIM_TAG_X_SIGN,
+ .oam = &gUnknown_0852491C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815F48C,
+};
+
+const struct SpriteTemplate gUnknown_085CE924 =
+{
+ .tileTag = ANIM_TAG_ITEM_BAG,
+ .paletteTag = ANIM_TAG_ITEM_BAG,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_815FE80,
+};
+
+const union AnimCmd gUnknown_085CE93C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085CE948[] =
+{
+ gUnknown_085CE93C,
+};
+
+const union AffineAnimCmd gUnknown_085CE94C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085CE964[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085CE97C[] =
+{
+ gUnknown_085CE94C,
+ gUnknown_085CE964,
+};
+
+const struct SpriteTemplate gUnknown_085CE984 =
+{
+ .tileTag = ANIM_TAG_SLAM_HIT_2,
+ .paletteTag = ANIM_TAG_SLAM_HIT_2,
+ .oam = &gUnknown_0852497C,
+ .anims = gUnknown_085CE948,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE97C,
+ .callback = sub_8160338,
+};
+
+const union AffineAnimCmd gUnknown_085CE99C[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, -4, 64),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085CE9AC[] =
+{
+ gUnknown_085CE99C,
+};
+
+const struct SpriteTemplate gUnknown_085CE9B0 =
+{
+ .tileTag = ANIM_TAG_RECYCLE,
+ .paletteTag = ANIM_TAG_RECYCLE,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085CE9AC,
+ .callback = sub_81603A8,
+};
+
+const union AffineAnimCmd gUnknown_085CE9C8[] =
+{
+ AFFINEANIMCMD_FRAME(0, 16, 0, 4),
+ AFFINEANIMCMD_FRAME(-2, 0, 0, 8),
+ AFFINEANIMCMD_FRAME(0, 4, 0, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 24),
+ AFFINEANIMCMD_FRAME(1, -5, 0, 16),
+ AFFINEANIMCMD_END,
+};
+
+void sub_815A0D4(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ if (!gBattleAnimArgs[3])
+ sprite->data[0] = gBattleAnimArgs[2];
+ else
+ sprite->data[0] = -gBattleAnimArgs[2];
+
+ sprite->data[1] = gBattleAnimArgs[4];
+ sprite->callback = sub_815A114;
+}
+
+static void sub_815A114(struct Sprite *sprite)
+{
+ if (sprite->data[1] > 0)
+ {
+ sprite->pos2.x = sprite->data[2] >> 8;
+ sprite->data[2] += sprite->data[0];
+ sprite->invisible ^= 1;
+ sprite->data[1]--;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_815A160(u8 taskId)
+{
+ sub_807521C(
+ GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 8,
+ GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 8,
+ 0);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_815A1B0(struct Sprite *sprite)
+{
+ sprite->data[0] = 90;
+ sprite->callback = WaitAnimForDuration;
+ sprite->data[1] = 7;
+ StoreSpriteCallbackInData6(sprite, sub_815A1F4);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[1], 16 - sprite->data[1]));
+}
+
+static void sub_815A1F4(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[1], 16 - sprite->data[1]));
+ if (--sprite->data[1] < 0)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_815A234;
+ }
+}
+
+static void sub_815A234(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimSprite(sprite);
+}
+
+void sub_815A254(struct Sprite *sprite)
+{
+ u16 rotation;
+ u8 x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ u8 y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+
+ InitSpritePosToAnimTarget(sprite, TRUE);
+
+ rotation = ArcTan2Neg(sprite->pos1.x - x, sprite->pos1.y - y);
+ rotation += 0x6000;
+ if (IsContest())
+ rotation += 0x4000;
+
+ TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation);
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = x;
+ sprite->data[4] = y;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_815A2F0(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ sprite->data[0] = 4;
+ sprite->callback = sub_815A31C;
+}
+
+static void sub_815A31C(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0]));
+
+ if (sprite->data[1])
+ sprite->data[0]--;
+ else
+ sprite->data[0]++;
+
+ if (sprite->data[0] == 15 || sprite->data[0] == 4)
+ sprite->data[1] ^= 1;
+
+ if (sprite->data[2]++ > 70)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->data[2] = 0;
+ sprite->invisible = 1;
+ sprite->affineAnimPaused = 1;
+ sprite->callback = sub_815A3AC;
+ }
+}
+
+static void sub_815A3AC(struct Sprite *sprite)
+{
+ if (sprite->data[2]++ > 9)
+ {
+ sprite->invisible = 0;
+ sprite->affineAnimPaused = 0;
+ if (sprite->affineAnimEnded)
+ sprite->callback = sub_815A3F0;
+ }
+}
+
+static void sub_815A3F0(struct Sprite *sprite)
+{
+ switch (sprite->data[3])
+ {
+ case 0:
+ case 1:
+ sprite->pos2.x = 1;
+ sprite->pos2.y = 0;
+ break;
+ case 2:
+ case 3:
+ sprite->pos2.x = -1;
+ sprite->pos2.y = 0;
+ break;
+ case 4:
+ case 5:
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 1;
+ break;
+ case 6:
+ default:
+ sprite->pos2.x = 0;
+ sprite->pos2.y = -1;
+ break;
+ }
+
+ if (++sprite->data[3] > 7)
+ sprite->data[3] = 0;
+
+ if (sprite->data[4]++ > 15)
+ {
+ sprite->data[0] = 16;
+ sprite->data[1] = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 0));
+ sprite->callback = sub_815A49C;
+ }
+}
+
+static void sub_815A49C(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0]));
+
+ if (sprite->data[1]++ > 1)
+ {
+ sprite->data[0]--;
+ sprite->data[1] = 0;
+ }
+
+ if (sprite->data[0] == 0)
+ sprite->invisible = 1;
+
+ if (sprite->data[0] < 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_815A504(u8 taskId)
+{
+ gTasks[taskId].func = sub_815A52C;
+ gAnimVisualTaskCount--;
+}
+
+static void sub_815A52C(u8 taskId)
+{
+ int i;
+ u16 lastColor;
+ u8 paletteIndex = sub_80A6D94();
+
+ if (++gTasks[taskId].data[5] == 4)
+ {
+ lastColor = gPlttBufferFaded[paletteIndex * 16 + 11];
+ for (i = 10; i > 0; i--)
+ gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i];
+
+ gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor;
+ gTasks[taskId].data[5] = 0;
+ }
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ DestroyTask(taskId);
+}
+
+void sub_815A5C8(u8 taskId)
+{
+ gTasks[taskId].func = sub_815A5F0;
+ gAnimVisualTaskCount--;
+}
+
+static void sub_815A5F0(u8 taskId)
+{
+ int i;
+ u16 lastColor;
+ u8 paletteIndex = sub_80A6D94();
+
+ if (++gTasks[taskId].data[5] == 4)
+ {
+ lastColor = gPlttBufferFaded[paletteIndex * 16 + 11];
+ for (i = 10; i > 0; i--)
+ gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i];
+ gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor;
+
+ lastColor = gPlttBufferUnfaded[paletteIndex * 16 + 11];
+ for (i = 10; i > 0; i--)
+ gPlttBufferUnfaded[paletteIndex * 16 + i + 1] = gPlttBufferUnfaded[paletteIndex * 16 + i];
+ gPlttBufferUnfaded[paletteIndex * 16 + 1] = lastColor;
+
+ gTasks[taskId].data[5] = 0;
+ }
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ DestroyTask(taskId);
+}
+
+void sub_815A6C4(struct Sprite *sprite)
+{
+ u16 x;
+ u16 y;
+
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &x, &y);
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = x + gBattleAnimArgs[2];
+ sprite->data[4] = y + gBattleAnimArgs[3];
+ sprite->data[5] = -50;
+
+ InitAnimArcTranslation(sprite);
+ sprite->callback = sub_815A73C;
+}
+
+static void sub_815A73C(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ {
+ sprite->data[0] = 30;
+ sprite->data[1] = 0;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, sub_815A76C);
+ }
+}
+
+static void sub_815A76C(struct Sprite *sprite)
+{
+ if (sprite->data[1] & 1)
+ sprite->invisible ^= 1;
+
+ if (++sprite->data[1] == 16)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_815A7B0(struct Sprite *sprite)
+{
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// This is likely fakematching due to some strange type casting behavior.
+void sub_815A7EC(struct Sprite *sprite)
+{
+ int var0;
+ int var1;
+ if (sprite->data[0] == 0)
+ {
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
+ if (!IsContest())
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[3];
+ }
+ else
+ {
+ var1 = -gBattleAnimArgs[2];
+ sprite->data[1] = var1;
+ var1 = -gBattleAnimArgs[3];
+ sprite->data[2] = var1;
+ }
+ }
+ else
+ {
+ var1 = -gBattleAnimArgs[2];
+ sprite->data[1] = var1;
+ sprite->data[2] = gBattleAnimArgs[3];
+ }
+ }
+
+ sprite->data[0]++;
+ var0 = (sprite->data[0] * 20) & 0xFF;
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = (sprite->data[3] + (s32)((u32)sprite->data[3] >> 31)) >> 1;
+ sprite->pos2.y = Sin(var0 & 0xFF, 5) + ((s32)(sprite->data[4] + ((u32)sprite->data[4] >> 31)) >> 1);
+
+ if ((u16)(sprite->pos1.x + sprite->pos2.x) > 240)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_815A8AC(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+void AnimTask_IsTargetPlayerSide(u8 taskId)
+{
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
+ gBattleAnimArgs[7] = 0;
+ else
+ gBattleAnimArgs[7] = 1;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_IsHealingMove(u8 taskId)
+{
+ if (gAnimMoveDmg > 0)
+ gBattleAnimArgs[7] = 0;
+ else
+ gBattleAnimArgs[7] = 1;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_815A934(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H);
+ SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V);
+
+ InitSpritePosToAnimTarget(sprite, FALSE);
+
+ sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
+ sprite->invisible = 1;
+ sprite->callback = sub_815A9A0;
+}
+
+static void sub_815A9A0(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->invisible = 0;
+ if (sprite->affineAnimEnded)
+ sprite->data[0]++;
+ break;
+ case 1:
+ case 3:
+ sprite->data[1] += 117;
+ sprite->pos2.x = sprite->data[1] >> 8;
+ if (++sprite->data[2] == 21)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[1] -= 117;
+ sprite->pos2.x = sprite->data[1] >> 8;
+ if (++sprite->data[2] == 41)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 4:
+ ChangeSpriteAffineAnim(sprite, 1);
+ sprite->data[0]++;
+ break;
+ case 5:
+ if (sprite->affineAnimEnded)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_815AA6C;
+ }
+ break;
+ }
+}
+
+static void sub_815AA6C(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
+ DestroyAnimSprite(sprite);
+}
+
+void sub_815AAA4(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[3] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ }
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->oam.tileNum += 16;
+
+ if (gBattleAnimArgs[2] == 0)
+ {
+ sprite->oam.matrixNum = 8;
+ sprite->pos2.x = -12;
+ sprite->data[1] = 2;
+ }
+ else
+ {
+ sprite->pos2.x = 12;
+ sprite->data[1] = -2;
+ }
+
+ sprite->data[0] = gBattleAnimArgs[4];
+
+ if (sprite->data[3] != 255)
+ sprite->data[3] = gBattleAnimArgs[2];
+
+ sprite->callback = sub_815AB5C;
+}
+
+static void sub_815AB5C(struct Sprite *sprite)
+{
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos2.x += sprite->data[1];
+ if (sprite->pos2.x == 0)
+ {
+ sprite->data[2]++;
+ if (sprite->data[3] == 0)
+ {
+ PlaySE1WithPanning(SE_W227, BattleAnimAdjustPanning(-64));
+ }
+ }
+ }
+ else
+ {
+ sprite->pos2.x -= sprite->data[1];
+ if (abs(sprite->pos2.x) == 12)
+ {
+ sprite->data[0]--;
+ sprite->data[2]--;
+ }
+
+ }
+
+ if (sprite->data[0] == 0)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_815ABD0(struct Sprite *sprite)
+{
+ sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
+ sprite->data[3] = 255;
+ sub_815AAA4(sprite);
+}
+
+void sub_815ABEC(u8 taskId)
+{
+ if (IsContest())
+ {
+ SetGpuReg(REG_OFFSET_WININ, 0x1F3F);
+ gBattle_WIN1H = 0x98F0;
+ gBattle_WIN1V = 0x00A0;
+ SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN0H);
+ SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN0V);
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ);
+ gBattle_WIN1H = 0x00F0;
+ gBattle_WIN1V = 0x78A0;
+ SetGpuReg(REG_OFFSET_WIN1H, 0x00F0);
+ SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON);
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_815AC8C(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ gBattle_WIN1H = 0;
+ gBattle_WIN1V = 0;
+ if (!IsContest())
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON);
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_815ACD0(struct Sprite *sprite)
+{
+ int var0;
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ }
+
+ sprite->pos2.y = gBattleAnimArgs[2];
+ var0 = 0;
+ if (sprite->pos2.y > gBattleAnimArgs[3])
+ var0 = 1;
+
+ sprite->data[0] = var0;
+ sprite->data[1] = 0;
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = gBattleAnimArgs[5];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->callback = sub_815AD4C;
+}
+
+static void sub_815AD4C(struct Sprite *sprite)
+{
+ sprite->data[1] = (sprite->data[1] + sprite->data[2]) & 0xFF;
+ sprite->pos2.x = gSineTable[sprite->data[1]] >> 4;
+ sprite->pos2.y += sprite->data[3];
+
+ if (sprite->data[0])
+ {
+ if (sprite->pos2.y < sprite->data[4])
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ if (sprite->pos2.y > sprite->data[4])
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_815ADB0(u8 taskId)
+{
+ s16 var0;
+ u8 toBG2;
+ s16 var2;
+ int var3;
+ int var4;
+ s16 i;
+ struct ScanlineEffectParams scanlineParams;
+ struct Task *task = &gTasks[taskId];
+
+ if (!gBattleAnimArgs[0])
+ {
+ var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
+ toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
+ }
+ else
+ {
+ var0 = GetBattlerYCoordWithElevation(gBattleAnimTarget);
+ toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
+ }
+
+ task->data[0] = var0 + 36;
+ task->data[1] = task->data[0];
+ task->data[2] = var0 - 33;
+ if (task->data[2] < 0)
+ task->data[2] = 0;
+
+ task->data[3] = task->data[0];
+ task->data[4] = 8;
+ task->data[5] = gBattleAnimArgs[1];
+ task->data[6] = 0;
+ task->data[7] = 0;
+
+ if (toBG2 == 1)
+ {
+ var3 = gBattle_BG1_X;
+ task->data[8] = var3;
+ var4 = var3 + 240;
+ }
+ else
+ {
+ var3 = gBattle_BG2_X;
+ task->data[8] = var3;
+ var4 = var3 + 240;
+ }
+
+ task->data[9] = var4;
+ task->data[10] = gBattleAnimArgs[2];
+
+ if (!gBattleAnimArgs[2])
+ {
+ task->data[11] = var4;
+ var2 = task->data[8];
+ }
+ else
+ {
+ task->data[11] = var3;
+ var2 = task->data[9];
+ }
+
+ task->data[15] = 0;
+
+ i = task->data[2];
+ while (i <= task->data[3])
+ {
+ gScanlineEffectRegBuffers[0][i] = var2;
+ gScanlineEffectRegBuffers[1][i] = var2;
+ i++;
+ }
+
+ if (toBG2 == 1)
+ scanlineParams.dmaDest = &REG_BG1HOFS;
+ else
+ scanlineParams.dmaDest = &REG_BG2HOFS;
+
+ scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ ScanlineEffect_SetParams(scanlineParams);
+
+ task->func = sub_815AED8;
+}
+
+static void sub_815AED8(u8 taskId)
+{
+ s16 i;
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] -= task->data[5];
+ if (task->data[0] < task->data[2])
+ task->data[0] = task->data[2];
+
+ if (task->data[4] == 0)
+ {
+ task->data[1] -= task->data[5];
+ if (task->data[1] < task->data[2])
+ {
+ task->data[1] = task->data[2];
+ task->data[15] = 1;
+ }
+ }
+ else
+ {
+ task->data[4]--;
+ }
+
+ if (++task->data[6] > 1)
+ {
+ task->data[6] = 0;
+ task->data[7] = task->data[7] == 0 ? 1 : 0;
+
+ if (task->data[7])
+ task->data[12] = task->data[8];
+ else
+ task->data[12] = task->data[9];
+ }
+
+ i = task->data[0];
+ while (i < task->data[1])
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[12];
+ gScanlineEffectRegBuffers[1][i] = task->data[12];
+ i++;
+ }
+
+ i = task->data[1];
+ while (i <= task->data[3])
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[11];
+ gScanlineEffectRegBuffers[1][i] = task->data[11];
+ i++;
+ }
+
+ if (task->data[15])
+ {
+ if (task->data[10])
+ gScanlineEffect.state = 3;
+
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_815AFF0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ task->data[4] = 32;
+ task->data[5] = -20;
+ task->data[6] = 0;
+ task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ task->func = sub_815B054;
+}
+
+static void sub_815B054(u8 taskId)
+{
+ int var0, var1;
+ s16 x, y;
+ u16 i, j;
+ u8 spriteId;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ var0 = task->data[2];
+ if (task->data[1] & 1)
+ {
+ var1 = task->data[4];
+ x = var0 - var1;
+ }
+ else
+ {
+ var1 = task->data[4];
+ x = var0 + var1;
+ }
+
+ y = task->data[3] + task->data[5];
+ spriteId = CreateSprite(&gUnknown_08593114, x, y, 6 - task->data[1]);
+ PlaySE12WithPanning(SE_W118, BattleAnimAdjustPanning(-64));
+
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].hFlip = task->data[1] & 1;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ }
+
+ if (task->data[1] & 1)
+ {
+ task->data[4] -= 6;
+ task->data[5] -= 6;
+ }
+
+ PrepareAffineAnimInTaskData(task, task->data[15], gUnknown_085CE2A0);
+ task->data[1]++;
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (!RunAffineAnimFromTaskData(task))
+ {
+ if (task->data[1] == 6)
+ {
+ task->data[6] = 8;
+ task->data[0] = 3;
+ }
+ else
+ {
+ if (task->data[1] <= 2)
+ task->data[6] = 10;
+ else
+ task->data[6] = 0;
+
+ task->data[0] = 2;
+ }
+ }
+ break;
+ case 2:
+ if (task->data[6] != 0)
+ task->data[6]--;
+ else
+ task->data[0] = 0;
+ break;
+ case 3:
+ if (task->data[6] != 0)
+ task->data[6]--;
+ else
+ task->data[0] = 4;
+ break;
+ case 4:
+ for (i = 0, j = 0; i < MAX_SPRITES; i++)
+ {
+ if (gSprites[i].template == &gUnknown_08593114)
+ {
+ gSprites[i].data[0] = taskId;
+ gSprites[i].data[1] = 6;
+ StartSpriteAnim(&gSprites[i], 2);
+ gSprites[i].callback = sub_815B23C;
+
+ if (++j == 6)
+ break;
+ }
+ }
+
+ task->data[6] = j;
+ task->data[0] = 5;
+ break;
+ case 5:
+ if (task->data[6] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_815B23C(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ gTasks[sprite->data[0]].data[sprite->data[1]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_815B27C(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+
+ if (++sprite->data[0] < 40)
+ {
+ u16 var = sprite->data[0];
+ if ((var & 1) == 0)
+ sprite->invisible = 1;
+ else
+ sprite->invisible = 0;
+ }
+
+ if (sprite->data[0] > 30)
+ sprite->invisible = 0;
+
+ if (sprite->data[0] == 61)
+ {
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0] = 20;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->callback = StartAnimLinearTranslation;
+ }
+}
+
+void sub_815B338(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gUnknown_085CE350);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_815B394(struct Sprite *sprite)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
+ sprite->data[1] = 256;
+ sprite->data[2] = 256;
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->data[1] += 96;
+ sprite->data[2] -= 26;
+ SetSpriteRotScale(spriteId, sprite->data[1], sprite->data[2], 0);
+
+ if (++sprite->data[3] == 5)
+ sprite->data[0]++;
+ // fall through
+ case 2:
+ sprite->data[1] += 96;
+ sprite->data[2] += 48;
+ SetSpriteRotScale(spriteId, sprite->data[1], sprite->data[2], 0);
+
+ if (++sprite->data[3] == 9)
+ {
+ sprite->data[3] = 0;
+ gSprites[spriteId].invisible = 1;
+ ResetSpriteRotScale(spriteId);
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->pos2.y -= 6;
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_815B49C(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x = -16;
+ else
+ sprite->pos1.x = 256;
+
+ sprite->pos1.y = 0;
+ sprite->callback = sub_815B4D4;
+}
+
+static void sub_815B4D4(struct Sprite *sprite)
+{
+ u32 newX;
+
+ sprite->data[0] += 72;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos2.x = sprite->data[0] >> 4;
+ else
+ sprite->pos2.x = -(sprite->data[0] >> 4);
+
+ sprite->data[1] += 16;
+ sprite->pos2.y += sprite->data[1] >> 8;
+
+ if (++sprite->data[2] % 3 == 0)
+ {
+ CreateSpriteAndAnimate(
+ &gUnknown_085CE3A0,
+ sprite->pos1.x + sprite->pos2.x,
+ sprite->pos1.y + sprite->pos2.y,
+ sprite->subpriority + 1);
+ }
+
+ newX = sprite->pos1.x + sprite->pos2.x + 32;
+ if (newX > 304)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_815B570(struct Sprite *sprite)
+{
+ u8 rand;
+ s8 y;
+
+ rand = Random2() & 3;
+ if (rand == 0)
+ sprite->oam.tileNum += 4;
+ else
+ sprite->oam.tileNum += 5;
+
+ y = Random2() & 7;
+ if (y > 3)
+ y = -y;
+
+ sprite->pos2.y = y;
+ sprite->callback = sub_815B5D0;
+}
+
+static void sub_815B5D0(struct Sprite *sprite)
+{
+ if (++sprite->data[0] < 30)
+ {
+ if (++sprite->data[1] == 2)
+ {
+ sprite->invisible ^= 1;
+ sprite->data[1] = 0;
+ }
+ }
+ else
+ {
+ if (sprite->data[1] == 2)
+ sprite->invisible = 0;
+
+ if (sprite->data[1] == 3)
+ {
+ sprite->invisible = 1;
+ sprite->data[1] = -1;
+ }
+
+ sprite->data[1]++;
+ }
+
+ if (sprite->data[0] > 60)
+ DestroySprite(sprite);
+}
+
+void sub_815B65C(u8 taskId)
+{
+ if (!gTasks[taskId].data[0])
+ {
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gUnknown_085CE3B8);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_815B6B4(u8 taskId)
+{
+ if (!gTasks[taskId].data[0])
+ {
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gUnknown_085CE3E0);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_815B70C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ InitSpritePosToAnimAttacker(sprite, FALSE);
+ sprite->data[1] = 0x900;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->data[1] -= 96;
+ if (sprite->pos1.y + sprite->pos2.y > sprite->data[2])
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_815B778(u8 taskId)
+{
+ if (!gTasks[taskId].data[0])
+ {
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gUnknown_085CE430);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_815B7D0(u8 taskId)
+{
+ int i, j;
+ u8 position;
+ struct UnknownAnimStruct2 unknownStruct;
+ u8 *dest;
+ u8 *src;
+ u16 *unk4;
+ u16 stretch;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
+ SetAnimBgAttribute(1, BG_ANIM_MOSAIC, 1);
+ else
+ SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 1);
+
+ gTasks[taskId].data[10] = gBattleAnimArgs[0];
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (gTasks[taskId].data[2]++ > 1)
+ {
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[1]++;
+ stretch = gTasks[taskId].data[1];
+ SetGpuReg(REG_OFFSET_MOSAIC, (stretch << 4) | stretch);
+ if (stretch == 15)
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10]);
+ sub_80A6BFC(&unknownStruct, gBattleAnimAttacker);
+
+ if (IsContest())
+ position = 0;
+ else
+ position = GetBattlerPosition(gBattleAnimAttacker);
+
+ src = gMonSpritesGfxPtr->sprites[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
+ dest = unknownStruct.bgTiles;
+ CpuCopy32(src, dest, 0x800);
+ LoadBgTiles(1, unknownStruct.bgTiles, 0x800, unknownStruct.tilesOffset);
+ if (IsContest())
+ {
+ if (IsSpeciesNotUnown(gContestResources->field_18->species) != IsSpeciesNotUnown(gContestResources->field_18->unk2))
+ {
+ unk4 = (u16 *)unknownStruct.unk4;
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ u16 temp = unk4[j + i * 0x20];
+ unk4[j + i * 0x20] = unk4[(7 - j) + i * 0x20];
+ unk4[(7 - j) + i * 0x20] = temp;
+ }
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ unk4[j + i * 0x20] ^= 0x400;
+ }
+ }
+ }
+
+ if (IsSpeciesNotUnown(gContestResources->field_18->unk2))
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gUnknown_082FF6C0;
+ else
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gUnknown_082FF694;
+
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
+ }
+
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (gTasks[taskId].data[2]++ > 1)
+ {
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[1]--;
+ stretch = gTasks[taskId].data[1];
+ SetGpuReg(REG_OFFSET_MOSAIC, (stretch << 4) | stretch);
+
+ if (stretch == 0)
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 4:
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
+ SetAnimBgAttribute(1, BG_ANIM_MOSAIC, 0);
+ else
+ SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 0);
+
+ if (!IsContest())
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ {
+ if (gTasks[taskId].data[10] == 0)
+ SetBattlerShadowSpriteCallback(gBattleAnimAttacker, gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies);
+ }
+ }
+
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_815BB18(u8 taskId)
+{
+ gBattleAnimArgs[7] = gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_815BB58(u8 taskId)
+{
+ HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, TRUE);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_815BB84(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+
+ sub_80A6B30(&unknownStruct);
+ sub_80A6D60(&unknownStruct, &gUnknown_08C2A6EC, 0);
+ if (IsContest())
+ {
+ gBattle_BG1_X = -56;
+ gBattle_BG1_Y = 0;
+ }
+ else
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattle_BG1_X = -135;
+ else
+ gBattle_BG1_X = -10;
+
+ gBattle_BG1_Y = 0;
+ }
+
+ sub_80A6CC0(unknownStruct.bgId, &gUnknown_08C2A634, unknownStruct.tilesOffset);
+ LoadCompressedPalette(&gUnknown_08C2A6D4, unknownStruct.unk8 << 4, 32);
+
+ gTasks[taskId].data[10] = gBattle_BG1_X;
+ gTasks[taskId].data[11] = gBattle_BG1_Y;
+
+ gTasks[taskId].data[0]++;
+ PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64));
+ break;
+ case 1:
+ if (gTasks[taskId].data[4]++ > 0)
+ {
+ gTasks[taskId].data[4] = 0;
+ if (++gTasks[taskId].data[1] > 12)
+ gTasks[taskId].data[1] = 12;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1]));
+
+ if (gTasks[taskId].data[1] == 12)
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ if (--gTasks[taskId].data[1] < 0)
+ gTasks[taskId].data[1] = 0;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1]));
+
+ if (!gTasks[taskId].data[1])
+ {
+ gBattle_BG1_X = gUnknown_085CE460[gTasks[taskId].data[2]] + gTasks[taskId].data[10];
+ if (++gTasks[taskId].data[2] == 4)
+ gTasks[taskId].data[0] = 4;
+ else
+ gTasks[taskId].data[0] = 3;
+ }
+ break;
+ case 3:
+ if (++gTasks[taskId].data[3] == 4)
+ {
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0] = 1;
+ PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64));
+ }
+ break;
+ case 4:
+ sub_80A6B30(&unknownStruct);
+ sub_80A6C68(unknownStruct.bgId);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_815BE04(struct Sprite *sprite)
+{
+ s16 xOffset;
+ u8 spriteId1;
+ u8 spriteId2;
+
+ xOffset = Random2();
+ xOffset &= 0x3F;
+ if (xOffset > 31)
+ xOffset = 32 - xOffset;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + xOffset;
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+
+ spriteId1 = CreateSprite(&gUnknown_085CE48C, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ spriteId2 = CreateSprite(&gUnknown_085CE48C, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ StartSpriteAnim(&gSprites[spriteId1], 1);
+ StartSpriteAnim(&gSprites[spriteId2], 2);
+
+ gSprites[spriteId1].data[1] = gBattleAnimArgs[0];
+ gSprites[spriteId1].data[2] = gBattleAnimArgs[1];
+ gSprites[spriteId2].data[1] = gBattleAnimArgs[0];
+ gSprites[spriteId2].data[2] = gBattleAnimArgs[1];
+ gSprites[spriteId1].data[7] = -1;
+ gSprites[spriteId2].data[7] = -1;
+ gSprites[spriteId1].invisible = 1;
+ gSprites[spriteId2].invisible = 1;
+ gSprites[spriteId1].callback = sub_815C050;
+ gSprites[spriteId2].callback = sub_815C050;
+
+ sprite->data[6] = spriteId1;
+ sprite->data[7] = spriteId2;
+ sprite->callback = sub_815BF44;
+}
+
+static void sub_815BF44(struct Sprite *sprite)
+{
+ int var0;
+ s8 var1;
+
+ var0 = (u16)sprite->data[2] + (u16)sprite->data[3];
+ var1 = var0 >> 8;
+ sprite->pos2.y -= var1;
+ sprite->data[3] = var0 & 0xFF;
+ if (sprite->data[4] == 0 && sprite->pos2.y < -8)
+ {
+ gSprites[sprite->data[6]].invisible = 0;
+ sprite->data[4]++;
+ }
+
+ if (sprite->data[4] == 1 && sprite->pos2.y < -16)
+ {
+ gSprites[sprite->data[7]].invisible = 0;
+ sprite->data[4]++;
+ }
+
+ if (--sprite->data[1] == -1)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_815BFF4;
+ }
+}
+
+static void sub_815BFF4(struct Sprite *sprite)
+{
+ if (gSprites[sprite->data[6]].callback == SpriteCallbackDummy
+ && gSprites[sprite->data[7]].callback == SpriteCallbackDummy)
+ {
+ DestroySprite(&gSprites[sprite->data[6]]);
+ DestroySprite(&gSprites[sprite->data[7]]);
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_815C050(struct Sprite *sprite)
+{
+ u16 d2;
+ register u16 d3 asm("r1");
+ int var0;
+ s8 var1;
+
+ if (!sprite->invisible)
+ {
+ d2 = sprite->data[2];
+ d3 = sprite->data[3];
+ var0 = d2 + d3;
+ var1 = var0 >> 8;
+ sprite->pos2.y -= var1;
+ sprite->data[3] = var0 & 0xFF;
+ if (--sprite->data[1] == -1)
+ {
+ sprite->invisible = 1;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ }
+}
+
+void sub_815C0A4(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(3, 13));
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+
+ sub_80A6B30(&unknownStruct);
+ sub_80A6D60(&unknownStruct, &gUnknown_08C2A6EC, 0);
+ if (IsContest())
+ {
+ gBattle_BG1_X = -56;
+ gBattle_BG1_Y = 0;
+ }
+ else
+ {
+ u8 position = GetBattlerPosition(gBattleAnimTarget);
+ if (IsDoubleBattle() == TRUE)
+ {
+ if (position == B_POSITION_OPPONENT_LEFT)
+ gBattle_BG1_X = -155;
+ if (position == B_POSITION_OPPONENT_RIGHT)
+ gBattle_BG1_X = -115;
+ if (position == B_POSITION_PLAYER_LEFT)
+ gBattle_BG1_X = 14;
+ if (position == B_POSITION_PLAYER_RIGHT)
+ gBattle_BG1_X = -20;
+ }
+ else
+ {
+ if (position == B_POSITION_OPPONENT_LEFT)
+ gBattle_BG1_X = -135;
+ if (position == B_POSITION_PLAYER_LEFT)
+ gBattle_BG1_X = -10;
+ }
+
+ gBattle_BG1_Y = 0;
+ }
+
+ sub_80A6CC0(unknownStruct.bgId, &gUnknown_08C2A634, unknownStruct.tilesOffset);
+ LoadCompressedPalette(&gUnknown_08C2A6D4, unknownStruct.unk8 << 4, 32);
+ gTasks[taskId].data[10] = gBattle_BG1_X;
+ gTasks[taskId].data[11] = gBattle_BG1_Y;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gTasks[taskId].data[3] = 0;
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
+ gBattle_BG1_X = gTasks[taskId].data[10] + gUnknown_085CE4A4[gTasks[taskId].data[2]];
+ else
+ gBattle_BG1_X = gTasks[taskId].data[10] - gUnknown_085CE4A4[gTasks[taskId].data[2]];
+
+ if (++gTasks[taskId].data[2] == 5)
+ gTasks[taskId].data[0] = 5;
+ else
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ if (--gTasks[taskId].data[1] <= 4)
+ gTasks[taskId].data[1] = 5;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(3, gTasks[taskId].data[1]));
+ if (gTasks[taskId].data[1] == 5)
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (++gTasks[taskId].data[3] > gUnknown_085CE4A8[gTasks[taskId].data[2]])
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ if (++gTasks[taskId].data[1] > 13)
+ gTasks[taskId].data[1] = 13;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(3, gTasks[taskId].data[1]));
+ if (gTasks[taskId].data[1] == 13)
+ gTasks[taskId].data[0] = 1;
+ break;
+ case 5:
+ sub_80A6B30(&unknownStruct);
+ sub_80A6C68(unknownStruct.bgId);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_815C3A8(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), gUnknown_085CE4B0);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_815C400(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ InitSpritePosToAnimAttacker(sprite, 0);
+ sprite->data[0]++;
+ }
+ else if (sprite->data[0]++ > 20)
+ {
+ sprite->data[1] += 160;
+ sprite->data[2] += 128;
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos2.x = -(sprite->data[1] >> 8);
+ else
+ sprite->pos2.x = sprite->data[1] >> 8;
+
+ sprite->pos2.y += sprite->data[2] >> 8;
+ if (sprite->pos2.y > 64)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_815C478(u8 taskId)
+{
+ u8 side;
+ struct Task *task = &gTasks[taskId];
+
+ if (!gBattleAnimArgs[1])
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ if (gBattleAnimArgs[2] < 0)
+ gBattleAnimArgs[2] = 0;
+ if (gBattleAnimArgs[2] > 2)
+ gBattleAnimArgs[2] = 2;
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 8 - (2 * gBattleAnimArgs[2]);
+ task->data[4] = 0x100 + (gBattleAnimArgs[2] * 128);
+ task->data[5] = gBattleAnimArgs[2] + 2;
+ task->data[6] = gBattleAnimArgs[1] - 1;
+ task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+
+ if (!gBattleAnimArgs[0])
+ side = GetBattlerSide(gBattleAnimAttacker);
+ else
+ side = GetBattlerSide(gBattleAnimTarget);
+
+ if (side == B_SIDE_OPPONENT)
+ {
+ task->data[4] *= -1;
+ task->data[5] *= -1;
+ }
+
+ PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
+ task->func = sub_815C548;
+}
+
+static void sub_815C548(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ gSprites[task->data[15]].pos2.x += task->data[5];
+ task->data[2] -= task->data[4];
+ SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]);
+ SetBattlerSpriteYOffsetFromRotation(task->data[15]);
+ if (++task->data[1] >= task->data[3])
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ gSprites[task->data[15]].pos2.x -= task->data[5];
+ task->data[2] += task->data[4];
+ SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]);
+ SetBattlerSpriteYOffsetFromRotation(task->data[15]);
+ if (++task->data[1] >= task->data[3] * 2)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ gSprites[task->data[15]].pos2.x += task->data[5];
+ task->data[2] -= task->data[4];
+ SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]);
+ SetBattlerSpriteYOffsetFromRotation(task->data[15]);
+ if (++task->data[1] >= task->data[3])
+ {
+ if (task->data[6])
+ {
+ task->data[6]--;
+ task->data[1] = 0;
+ task->data[0] = 0;
+ }
+ else
+ {
+ task->data[0]++;
+ }
+ }
+ break;
+ case 3:
+ ResetSpriteRotScale(task->data[15]);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_815C6B0(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 0;
+ sprite->pos1.y = gBattleAnimArgs[0];
+ }
+ else
+ {
+ sprite->pos1.x = 240;
+ sprite->pos1.y = gBattleAnimArgs[0] - 30;
+ }
+
+ sprite->data[2] = gBattleAnimArgs[2];
+ StartSpriteAnim(sprite, gBattleAnimArgs[1]);
+ sprite->callback = sub_815C700;
+}
+
+static void sub_815C700(struct Sprite *sprite)
+{
+ sprite->data[0] += 3;
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos1.x += 5;
+ sprite->pos1.y -= 1;
+
+ if (sprite->pos1.x > 240)
+ DestroyAnimSprite(sprite);
+
+ sprite->pos2.y = Sin(sprite->data[0] & 0xFF, 16);
+ }
+ else
+ {
+ sprite->pos1.x -= 5;
+ sprite->pos1.y += 1;
+
+ if (sprite->pos1.x < 0)
+ DestroyAnimSprite(sprite);
+
+ sprite->pos2.y = Cos(sprite->data[0] & 0xFF, 16);
+ }
+}
+
+void sub_815C770(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[12] = 0x20;
+ task->data[13] = 0x40;
+ task->data[14] = 0x800;
+ task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+
+ PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
+ task->func = sub_815C7C4;
+}
+
+static void sub_815C7C4(u8 taskId)
+{
+ int temp;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[2] += 0x200;
+ if (task->data[2] >= task->data[14])
+ {
+ s16 diff = task->data[14] - task->data[2];
+ s16 div = diff / (task->data[14] * 2);
+ s16 mod = diff % (task->data[14] * 2);
+
+ if ((div & 1) == 0)
+ {
+ task->data[2] = task->data[14] - mod;
+ task->data[0] = 1;
+ }
+ else
+ {
+ task->data[2] = mod - task->data[14];
+ }
+ }
+ break;
+ case 1:
+ task->data[2] -= 0x200;
+ if (task->data[2] <= -task->data[14])
+ {
+ s16 diff = task->data[14] - task->data[2];
+ s16 div = diff / (task->data[14] * 2);
+ s16 mod = diff % (task->data[14] * 2);
+
+ if ((1 & div) == 0)
+ {
+ task->data[2] = mod - task->data[14];
+ task->data[0] = 0;
+ }
+ else
+ {
+ task->data[2] = task->data[14] - mod;
+ }
+ }
+ break;
+ case 2:
+ ResetSpriteRotScale(task->data[15]);
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]);
+ SetBattlerSpriteYOffsetFromRotation(task->data[15]);
+ gSprites[task->data[15]].pos2.x = -(((temp = task->data[2]) >= 0 ? task->data[2] : temp + 63) >> 6);
+
+ if (++task->data[1] > 8)
+ {
+ if (task->data[12])
+ {
+ task->data[12]--;
+ task->data[14] -= task->data[13];
+ if (task->data[14] < 16)
+ task->data[14] = 16;
+ }
+ else
+ {
+ task->data[0] = 2;
+ }
+ }
+}
+
+void sub_815C95C(struct Sprite *sprite)
+{
+ if (!sprite->data[0])
+ {
+ if (!gBattleAnimArgs[2])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ }
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[1] = 0x80;
+ sprite->data[2] = 0x300;
+ sprite->data[3] = gBattleAnimArgs[1];
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->pos2.y += sprite->data[2] >> 8;
+ if (sprite->data[4] == 0 && sprite->pos2.y > -sprite->data[3])
+ {
+ sprite->data[4] = 1;
+ sprite->data[2] = (-sprite->data[2] / 3) * 2;
+ }
+
+ sprite->data[1] += 192;
+ sprite->data[2] += 128;
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_815CA20(u8 taskId)
+{
+ u8 spriteId;
+
+ if (gTasks[taskId].data[0] == 0)
+ {
+ if (gBattleAnimArgs[0] == 0)
+ gTasks[taskId].data[11] = gBattleAnimAttacker;
+ else
+ gTasks[taskId].data[11] = gBattleAnimTarget;
+
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ gTasks[taskId].data[10] = spriteId;
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
+
+ switch (gBattleAnimArgs[1])
+ {
+ case 0:
+ SetSpriteRotScale(spriteId, 0xE0, 0x140, 0);
+ SetBattlerSpriteYOffsetFromYScale(spriteId);
+ break;
+ case 1:
+ SetSpriteRotScale(spriteId, 0xD0, 0x130, 0xF00);
+ SetBattlerSpriteYOffsetFromYScale(spriteId);
+ if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER)
+ gSprites[spriteId].pos2.y += 16;
+ break;
+ case 2:
+ SetSpriteRotScale(spriteId, 0xD0, 0x130, 0xF100);
+ SetBattlerSpriteYOffsetFromYScale(spriteId);
+ if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER)
+ gSprites[spriteId].pos2.y += 16;
+ break;
+ }
+
+ gSprites[spriteId].pos2.x = 2;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ spriteId = gTasks[taskId].data[10];
+ if (++gTasks[taskId].data[2] == 3)
+ {
+ gTasks[taskId].data[2] = 0;
+ gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ }
+
+ if (++gTasks[taskId].data[1] == 13)
+ {
+ ResetSpriteRotScale(spriteId);
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_815CB88(struct Sprite *sprite)
+{
+ u8 tileOffset;
+ int rand1;
+ int rand2;
+
+ tileOffset = Random2() % 12;
+ sprite->oam.tileNum += tileOffset;
+ rand1 = Random2() & 0x1FF;
+ rand2 = Random2() & 0xFF;
+
+ if (rand1 & 1)
+ sprite->data[0] = 0x5E0 + rand1;
+ else
+ sprite->data[0] = 0x5E0 - rand1;
+
+ if (rand2 & 1)
+ sprite->data[1] = 0x480 + rand2;
+ else
+ sprite->data[1] = 0x480 - rand2;
+
+ sprite->data[2] = gBattleAnimArgs[0];
+ if (sprite->data[2] == 0)
+ sprite->pos1.x = -8;
+ else
+ sprite->pos1.x = 248;
+
+ sprite->pos1.y = 104;
+ sprite->callback = sub_815CC34;
+}
+
+static void sub_815CC34(struct Sprite *sprite)
+{
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos2.x += sprite->data[0] >> 8;
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ }
+ else
+ {
+ sprite->pos2.x -= sprite->data[0] >> 8;
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ }
+
+ sprite->data[0] -= 22;
+ sprite->data[1] -= 48;
+ if (sprite->data[0] < 0)
+ sprite->data[0] = 0;
+
+ if (++sprite->data[3] == 31)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_815CC94(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H);
+ SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V);
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
+ sprite->invisible = 1;
+ sprite->callback = sub_815CD0C;
+}
+
+static void sub_815CD0C(struct Sprite *sprite)
+{
+ switch (sprite->data[1])
+ {
+ case 0:
+ sprite->invisible = 0;
+ if (sprite->affineAnimEnded)
+ sprite->data[1]++;
+ break;
+ case 1:
+ if (--sprite->data[0] == 0)
+ {
+ ChangeSpriteAffineAnim(sprite, 1);
+ sprite->data[1]++;
+ }
+ break;
+ case 2:
+ if (sprite->affineAnimEnded)
+ {
+ sprite->invisible = 1;
+ sprite->data[1]++;
+ }
+ break;
+ case 3:
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_815CDB4(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->callback = sub_815CDFC;
+ sprite->callback(sprite);
+}
+
+static void sub_815CDFC(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
+ sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
+
+ if ((u16)sprite->data[1] < 64 || sprite->data[1] > 195)
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
+ else
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) + 1;
+
+ if (!sprite->data[5])
+ {
+ sprite->data[2] += 0x400;
+ sprite->data[3] += 0x100;
+ sprite->data[4]++;
+ if (sprite->data[4] == sprite->data[0])
+ {
+ sprite->data[4] = 0;
+ sprite->data[5] = 1;
+ }
+ }
+ else if (sprite->data[5] == 1)
+ {
+ sprite->data[2] -= 0x400;
+ sprite->data[3] -= 0x100;
+ sprite->data[4]++;
+ if (sprite->data[4] == sprite->data[0])
+ DestroyAnimSprite(sprite);
+ }
+}
+
+
+
+extern void sub_815D160(u8);
+
+void sub_815CED8(u8 taskId)
+{
+ u8 isBackPic;
+ u32 personality;
+ u32 otId;
+ u16 species;
+ s16 xOffset;
+ u32 priority;
+ u8 spriteId;
+ s16 coord1, coord2;
+
+ GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ if (IsContest())
+ {
+ isBackPic = 1;
+ personality = gContestResources->field_18->unk10;
+ otId = gContestResources->field_18->unkC;
+ species = gContestResources->field_18->unk2;
+ xOffset = 20;
+ priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
+ }
+ else
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ isBackPic = 0;
+ personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
+ if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
+ {
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
+ }
+ else
+ {
+ species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies;
+ }
+
+ xOffset = 20;
+ priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
+ }
+ else
+ {
+ isBackPic = 1;
+ personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
+ if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
+ {
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
+ }
+ else
+ {
+ species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies;
+ }
+
+ xOffset = -20;
+ priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
+ }
+ }
+
+ coord1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ coord2 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ spriteId = sub_80A8394(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId, gBattleAnimTarget, 1);
+
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
+ FillPalette(RGB(31, 31, 31), (gSprites[spriteId].oam.paletteNum << 4) + 0x100, 32);
+ gSprites[spriteId].oam.priority = priority;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x3F40);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1]));
+
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].func = sub_815D160;
+}
+
+void sub_815D160(u8 taskId)
+{
+ if (gTasks[taskId].data[10]++ > 1)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[1]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1]));
+ if (gTasks[taskId].data[1] == 10)
+ {
+ gTasks[taskId].data[10] = 256;
+ gTasks[taskId].data[11] = 256;
+ gTasks[taskId].func = sub_815D1BC;
+ }
+ }
+}
+
+static void sub_815D1BC(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[0];
+ gTasks[taskId].data[10] -= 16;
+ gTasks[taskId].data[11] += 128;
+ gSprites[spriteId].oam.affineMode |= ST_OAM_AFFINE_DOUBLE_MASK;
+ TrySetSpriteRotScale(&gSprites[spriteId], TRUE, gTasks[taskId].data[10], gTasks[taskId].data[11], 0);
+ if (++gTasks[taskId].data[12] == 9)
+ {
+ sub_80A749C(&gSprites[spriteId]);
+ sub_80A8610(&gSprites[spriteId]);
+ gTasks[taskId].func = sub_80A6814;
+ }
+}
+
+void sub_815D240(u8 taskId)
+{
+ u8 battler;
+ u16 bgX, bgY;
+ s16 y, i;
+ struct ScanlineEffectParams scanlineParams;
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 16;
+ task->data[4] = 0;
+ task->data[5] = battler;
+ task->data[6] = 32;
+ task->data[7] = 0;
+ task->data[8] = 24;
+
+ if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
+ task->data[8] *= -1;
+
+ task->data[13] = GetBattlerYCoordWithElevation(battler) - 34;
+ if (task->data[13] < 0)
+ task->data[13] = 0;
+
+ task->data[14] = task->data[13] + 66;
+ task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ if (GetBattlerSpriteBGPriorityRank(battler) == 1)
+ {
+ scanlineParams.dmaDest = &REG_BG1HOFS;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
+ bgX = gBattle_BG1_X;
+ bgY = gBattle_BG1_Y;
+ }
+ else
+ {
+ scanlineParams.dmaDest = &REG_BG2HOFS;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2);
+ bgX = gBattle_BG2_X;
+ bgY = gBattle_BG2_Y;
+ }
+
+ for (y = 0, i = 0; y < 160; y++, i += 2)
+ {
+ gScanlineEffectRegBuffers[0][i] = bgX;
+ gScanlineEffectRegBuffers[1][i] = bgX;
+ gScanlineEffectRegBuffers[0][i + 1] = bgY;
+ gScanlineEffectRegBuffers[1][i + 1] = bgY;
+ }
+
+ scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_32BIT;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ ScanlineEffect_SetParams(scanlineParams);
+ task->func = sub_815D398;
+}
+
+static void sub_815D398(u8 taskId)
+{
+ struct Task *task;
+ s16 var1;
+ s16 var2;
+ s16 bgX, bgY;
+ s16 offset;
+ s16 var0;
+ s16 i;
+ s16 sineIndex;
+ s16 var3;
+
+ task = &gTasks[taskId];
+ if (GetBattlerSpriteBGPriorityRank(task->data[5]) == 1)
+ {
+ bgX = gBattle_BG1_X;
+ bgY = gBattle_BG1_Y;
+ }
+ else
+ {
+ bgX = gBattle_BG2_X;
+ bgY = gBattle_BG2_Y;
+ }
+
+ switch (task->data[0])
+ {
+ case 0:
+ offset = task->data[14] * 2;
+ var1 = 0;
+ var2 = 0;
+ i = 0;
+ task->data[1] = (task->data[1] + 2) & 0xFF;
+ sineIndex = task->data[1];
+ task->data[9] = 0x7E0 / task->data[6];
+ task->data[10] = -((task->data[7] * 2) / task->data[9]);
+ task->data[11] = task->data[7];
+ var3 = task->data[11] >> 5;
+ task->data[12] = var3;
+ var0 = task->data[14];
+ while (var0 > task->data[13])
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset + 1] = (i - var2) + bgY;
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset] = bgX + var3 + (gSineTable[sineIndex] >> 5);
+ sineIndex = (sineIndex + 10) & 0xFF;
+ task->data[11] += task->data[10];
+ var3 = task->data[11] >> 5;
+ task->data[12] = var3;
+
+ i++;
+ offset -= 2;
+ var1 += task->data[6];
+ var2 = var1 >> 5;
+ var0--;
+ }
+
+ var0 *= 2;
+ while (var0 >= 0)
+ {
+ gScanlineEffectRegBuffers[0][var0] = bgX + 240;
+ gScanlineEffectRegBuffers[1][var0] = bgX + 240;
+ var0 -= 2;
+ }
+
+ if (++task->data[6] > 63)
+ {
+ task->data[6] = 64;
+ task->data[2]++;
+ if (task->data[2] & 1)
+ task->data[3]--;
+ else
+ task->data[4]++;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4]));
+ if (task->data[3] == 0 && task->data[4] == 16)
+ {
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+ }
+ else
+ {
+ task->data[7] += task->data[8];
+ }
+ break;
+ case 1:
+ if (++task->data[2] > 12)
+ {
+ gScanlineEffect.state = 3;
+ task->data[2] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ task->data[2]++;
+ if (task->data[2] & 1)
+ task->data[3]++;
+ else
+ task->data[4]--;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4]));
+ if (task->data[3] == 16 && task->data[4] == 0)
+ {
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_815D64C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ task->data[0] = 0;
+ task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], task->data[15], gUnknown_085CE5F0);
+ task->func = sub_815D694;
+}
+
+static void sub_815D694(u8 taskId)
+{
+ u16 var0;
+
+ struct Task *task = &gTasks[taskId];
+ var0 = task->data[0];
+ task->data[0]++;
+ var0 -= 20;
+ if (var0 < 23)
+ {
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ if (task->data[2] & 1)
+ gSprites[task->data[15]].pos2.x = 1;
+ else
+ gSprites[task->data[15]].pos2.x = -1;
+ }
+ }
+ else
+ {
+ gSprites[task->data[15]].pos2.x = 0;
+ }
+
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_815D72C(struct Sprite *sprite, s16 b, s16 c, s16 d, s16 e, u16 f)
+{
+ sprite->pos1.x = b;
+ sprite->pos1.y = c;
+ sprite->data[4] = b << 4;
+ sprite->data[5] = c << 4;
+ sprite->data[6] = ((d - b) << 4) / f;
+ sprite->data[7] = ((e - c) << 4) / f;
+}
+
+void sub_815D794(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+}
+
+void sub_815D7B4(struct Sprite *sprite)
+{
+ s16 x = sprite->pos1.x;
+ s16 y = sprite->pos1.y;
+
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
+ sub_815D72C(sprite, sprite->pos1.x, sprite->pos1.y, x, y, 64);
+ sprite->data[0] = 0;
+ sprite->callback = sub_815D804;
+}
+
+static void sub_815D804(struct Sprite *sprite)
+{
+ int index;
+
+ sprite->data[0]++;
+ index = (sprite->data[0] * 8) & 0xFF;
+ sub_815D794(sprite);
+ sprite->pos2.y = Sin(index, 8);
+ if (sprite->data[0] > 58)
+ {
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2]++;
+ sprite->invisible = sprite->data[2] & 1;
+ if (sprite->data[2] > 3)
+ DestroySpriteAndMatrix(sprite);
+ }
+ }
+}
+
+void sub_815D870(struct Sprite *sprite)
+{
+ sprite->data[0] = gBattleAnimArgs[3];
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
+ if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->callback = sub_810E2C8;
+}
+
+static void sub_815D8D8(u8 taskId)
+{
+ u16 var0 = 0;
+ u16 var1 = 0;
+
+ gTasks[taskId].data[0]--;
+ if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1))
+ {
+ if (gTasks[taskId].data[9] == 0)
+ {
+ gTasks[taskId].data[9] = gTasks[taskId].data[4];
+ gTasks[taskId].data[4] = -gTasks[taskId].data[4];
+ }
+ else
+ {
+ gTasks[taskId].data[9] = 0;
+ }
+
+ if (gTasks[taskId].data[10] == 0)
+ {
+ gTasks[taskId].data[10] = gTasks[taskId].data[5];
+ gTasks[taskId].data[5] = -gTasks[taskId].data[5];
+ }
+ else
+ {
+ gTasks[taskId].data[10] = 0;
+ }
+
+ gTasks[taskId].data[1] = gTasks[taskId].data[13];
+ }
+
+ var0 = gTasks[taskId].data[7];
+ var1 = gTasks[taskId].data[8];
+ if (gTasks[taskId].data[2] & 0x8000)
+ gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
+ else
+ gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
+
+ if (gTasks[taskId].data[3] & 0x8000)
+ gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
+ else
+ gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
+
+ if (gTasks[taskId].data[0] < 1)
+ {
+ DestroyTask(taskId);
+ gAnimVisualTaskCount--;
+ }
+}
+
+static void sub_815DA20(u8 taskId)
+{
+ u16 var0 = 0;
+ u16 var1 = 0;
+
+ gTasks[taskId].data[0]--;
+ if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1))
+ {
+ if (gTasks[taskId].data[9] == 0)
+ {
+ gTasks[taskId].data[9] = gTasks[taskId].data[4];
+ gTasks[taskId].data[4] = -gTasks[taskId].data[4];
+ }
+ else
+ {
+ gTasks[taskId].data[9] = var0;
+ }
+
+ if (gTasks[taskId].data[10] == 0)
+ {
+ gTasks[taskId].data[10] = gTasks[taskId].data[5];
+ gTasks[taskId].data[5] = -gTasks[taskId].data[5];
+ }
+ else
+ {
+ gTasks[taskId].data[10] = 0;
+ }
+
+ gTasks[taskId].data[1] = gTasks[taskId].data[13];
+ }
+
+ var0 = (gTasks[taskId].data[2] & 0x7FFF) + gTasks[taskId].data[7];
+ var1 = (gTasks[taskId].data[3] & 0x7FFF) + gTasks[taskId].data[8];
+ if (gTasks[taskId].data[2] & 0x8000)
+ gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
+ else
+ gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
+
+ if (gTasks[taskId].data[3] & 0x8000)
+ gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
+ else
+ gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
+
+ gTasks[taskId].data[7] = var0;
+ gTasks[taskId].data[8] = var1;
+ if (gTasks[taskId].data[0] < 1)
+ {
+ gTasks[taskId].data[0] = 30;
+ gTasks[taskId].data[13] = 0;
+ gTasks[taskId].func = sub_815D8D8;
+ }
+}
+
+void sub_815DB90(u8 taskId)
+{
+ gTasks[taskId].data[15] = gBattlerSpriteIds[gBattleAnimAttacker];
+ gTasks[taskId].data[14] = gBattleAnimArgs[0];
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[13] = gBattleAnimArgs[6];
+ if (gBattleAnimArgs[3])
+ gTasks[taskId].data[6] = gTasks[taskId].data[6] | -0x8000;
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ }
+ else
+ {
+ if (gBattleAnimArgs[1] & 0x8000)
+ gTasks[taskId].data[2] = gBattleAnimArgs[1] & 0x7FFF;
+ else
+ gTasks[taskId].data[2] = gBattleAnimArgs[1] | -0x8000;
+
+ if (gBattleAnimArgs[2] & 0x8000)
+ gTasks[taskId].data[3] = gBattleAnimArgs[2] & 0x7FFF;
+ else
+ gTasks[taskId].data[3] = gBattleAnimArgs[2] | -0x8000;
+ }
+
+ gTasks[taskId].data[8] = 0;
+ gTasks[taskId].data[7] = 0;
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].func = sub_815DA20;
+}
+
+void sub_815DCA4(u8 taskId)
+{
+ u8 battler;
+ struct Task *task = &gTasks[taskId];
+
+ if (!gBattleAnimArgs[1])
+ DestroyAnimVisualTask(taskId);
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = gBattleAnimArgs[1];
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ task->data[4] = GetBattlerSpriteCoord(battler, 0);
+ task->data[5] = GetBattlerSpriteCoord(battler, 1);
+ task->data[6] = GetBattlerSpriteSubpriority(battler);
+ task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ PrepareAffineAnimInTaskData(task, task->data[15], gUnknown_085CE74C);
+ task->func = sub_815DD48;
+}
+
+static void sub_815DD48(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] == 6)
+ sub_815DDE0(taskId, TRUE);
+
+ if (task->data[1] == 18)
+ sub_815DDE0(taskId, FALSE);
+
+ if (!RunAffineAnimFromTaskData(task))
+ {
+ if (--task->data[3] == 0)
+ {
+ task->data[0]++;
+ }
+ else
+ {
+ task->data[1] = 0;
+ PrepareAffineAnimInTaskData(task, task->data[15], gUnknown_085CE74C);
+ }
+ }
+ break;
+ case 1:
+ if (task->data[2] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_815DDE0(u8 taskId, bool8 arg1)
+{
+ u8 i;
+ s8 xOffset, yOffset;
+ struct Task *task;
+ s16 xCoords[4];
+ s16 yCoords[2];
+
+ task = &gTasks[taskId];
+ if (!arg1)
+ {
+ xOffset = 18;
+ yOffset = -20;
+ }
+ else
+ {
+ xOffset = 30;
+ yOffset = 20;
+ }
+
+ xCoords[0] = task->data[4] - xOffset;
+ xCoords[1] = task->data[4] - xOffset - 4;
+ xCoords[2] = task->data[4] + xOffset;
+ xCoords[3] = task->data[4] + xOffset + 4;
+ yCoords[0] = task->data[5] + yOffset;
+ yCoords[1] = task->data[5] + yOffset + 6;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 spriteId = CreateSprite(&gUnknown_085CE76C, xCoords[i], yCoords[i & 1], task->data[6] - 5);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 0;
+ gSprites[spriteId].data[1] = i < 2 ? -2 : 2;
+ gSprites[spriteId].data[2] = -1;
+ gSprites[spriteId].data[3] = taskId;
+ gSprites[spriteId].data[4] = 2;
+ task->data[2]++;
+ }
+ }
+}
+
+void sub_815DEBC(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->data[1];
+ sprite->pos1.y += sprite->data[2];
+ if (++sprite->data[0] > 6)
+ {
+ gTasks[sprite->data[3]].data[sprite->data[4]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_815DF0C(u8 taskId)
+{
+ u8 spriteId;
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ gTasks[taskId].data[2] = 0x100 + gSprites[spriteId].oam.paletteNum * 16;
+ gTasks[taskId].func = sub_815DF64;
+}
+
+static void sub_815DF64(u8 taskId)
+{
+ if (gTasks[taskId].data[1])
+ {
+ BlendPalette(gTasks[taskId].data[2], 16, 8, gUnknown_085CE784[gTasks[taskId].data[0]]);
+ if (++gTasks[taskId].data[0] > 23)
+ gTasks[taskId].data[0] = 0;
+
+ gTasks[taskId].data[1]--;
+ }
+ else
+ {
+ BlendPalette(gTasks[taskId].data[2], 16, 0, RGB(0, 0, 0));
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_815DFCC(u8 taskId)
+{
+ sub_8117854(
+ taskId,
+ 0,
+ 0x1A0,
+ gBattleAnimAttacker,
+ gBattleAnimArgs[0],
+ 10,
+ 2,
+ 30,
+ gUnknown_08C2DC68,
+ gUnknown_08C2DDC4,
+ gUnknown_08C2DDA4);
+}
+
+void sub_815E01C(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ if (gBattleAnimArgs[2] == 0)
+ {
+ sprite->data[0] = 640;
+ sprite->data[1] = -640;
+ }
+ else if (gBattleAnimArgs[2] == 1)
+ {
+ sprite->vFlip = 1;
+ sprite->data[0] = 640;
+ sprite->data[1] = 640;
+ }
+ else
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->data[0] = 640;
+ }
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->data[0] = -sprite->data[0];
+ sprite->hFlip = 1;
+ }
+
+ sprite->callback = sub_815E0DC;
+}
+
+static void sub_815E0DC(struct Sprite *sprite)
+{
+ sprite->data[6] += sprite->data[0];
+ sprite->data[7] += sprite->data[1];
+ sprite->pos2.x = sprite->data[6] >> 8;
+ sprite->pos2.y = sprite->data[7] >> 8;
+ if (++sprite->data[5] == 14)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_815E114(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (IsContest())
+ {
+ task->data[5] = 8;
+ task->data[6] = 3;
+ task->data[7] = 1;
+ }
+ else
+ {
+ task->data[5] = 12;
+ task->data[6] = 3;
+ task->data[7] = 0;
+ }
+
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + sub_80A861C(gBattleAnimAttacker, 0) / 4;
+ else
+ task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - sub_80A861C(gBattleAnimAttacker, 0) / 4;
+
+ task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - sub_80A861C(gBattleAnimAttacker, 0) / 4;
+ task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ task->func = sub_815E20C;
+}
+
+static void sub_815E20C(u8 taskId)
+{
+ u8 i;
+ s16 x, y;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 3)
+ {
+ task->data[1] = 0;
+ sub_815E34C(
+ task->data[11],
+ task->data[12],
+ task->data[13],
+ task->data[14],
+ task->data[5],
+ task->data[2],
+ &x,
+ &y);
+
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&gUnknown_085CE7EC, x, y, 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ if (task->data[7] == 0)
+ {
+ if (i == 0)
+ gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = -task->data[6];
+ else
+ gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = task->data[6];
+ }
+ else
+ {
+ if (i == 0)
+ {
+ gSprites[spriteId].pos2.x = -task->data[6];
+ gSprites[spriteId].pos2.y = task->data[6];
+ }
+ else
+ {
+ gSprites[spriteId].pos2.x = task->data[6];
+ gSprites[spriteId].pos2.y = -task->data[6];
+ }
+ }
+
+ gSprites[spriteId].data[0] = 0;
+ gSprites[spriteId].data[1] = taskId;
+ gSprites[spriteId].data[2] = 10;
+ task->data[10]++;
+ }
+ }
+
+ if (task->data[2] == task->data[5])
+ task->data[0]++;
+
+ task->data[2]++;
+ }
+ break;
+ case 1:
+ if (task->data[10] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_815E34C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y)
+{
+ int x2;
+ int y2;
+
+ if (arg5 == 0)
+ {
+ *x = arg0;
+ *y = arg1;
+ return;
+ }
+
+ if (arg5 >= arg4)
+ {
+ *x = arg2;
+ *y = arg3;
+ return;
+ }
+
+ arg4--;
+ x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4);
+ y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4);
+ *x = x2 >> 8;
+ *y = y2 >> 8;
+}
+
+void sub_815E404(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 36)
+ {
+ gTasks[sprite->data[1]].data[sprite->data[2]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_815E444(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->data[0] = gBattleAnimArgs[4];
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = InitAndRunAnimFastLinearTranslation;
+}
+
+void sub_815E47C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + sub_80A861C(gBattleAnimTarget, 0) / 4;
+ task->data[15] = CreateSprite(&gUnknown_085CE84C, task->data[11], task->data[12], GetBattlerSpriteSubpriority(gBattleAnimTarget) - 5);
+ if (task->data[15] != MAX_SPRITES)
+ {
+ gSprites[task->data[15]].data[0] = 16;
+ gSprites[task->data[15]].data[2] = task->data[13];
+ gSprites[task->data[15]].data[4] = task->data[14];
+ gSprites[task->data[15]].data[5] = -32;
+ InitAnimArcTranslation(&gSprites[task->data[15]]);
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ StartSpriteAffineAnim(&gSprites[task->data[15]], 1);
+
+ task->func = sub_815E5CC;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_815E5CC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ TranslateAnimArc(&gSprites[task->data[15]]);
+ if (++task->data[2] > 7)
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (TranslateAnimArc(&gSprites[task->data[15]]))
+ {
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ gSprites[task->data[15]].invisible = task->data[2] & 1;
+ if (task->data[2] == 16)
+ {
+ FreeOamMatrix(gSprites[task->data[15]].oam.matrixNum);
+ DestroySprite(&gSprites[task->data[15]]);
+ task->data[0]++;
+ }
+ }
+ break;
+ case 3:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_815E6D8(struct Sprite *sprite)
+{
+ u8 battler;
+
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ sprite->oam.tileNum += 16;
+ sprite->data[6] = gBattleAnimArgs[2];
+ sprite->data[7] = gBattleAnimArgs[1] == 0 ? -1 : 1;
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
+ if (gBattleAnimArgs[1] == 0)
+ {
+ sprite->oam.matrixNum |= 0x8;
+ sprite->pos1.x = sub_80A861C(battler, 4) - 8;
+ }
+ else
+ {
+ sprite->pos1.x = sub_80A861C(battler, 5) + 8;
+ }
+
+ sprite->callback = sub_815E784;
+}
+
+static void sub_815E784(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->pos2.x += sprite->data[7];
+ if (++sprite->data[2] == 12)
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] == 8)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->pos2.x -= sprite->data[7] * 4;
+ if (++sprite->data[1] == 6)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->pos2.x += sprite->data[7] * 3;
+ if (++sprite->data[1] == 8)
+ {
+ if (--sprite->data[6])
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]--;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+ }
+ break;
+ }
+}
+
+void sub_815E840(u8 taskId)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], gUnknown_085CE87C);
+ gTasks[taskId].func = sub_815E898;
+ }
+}
+
+static void sub_815E898(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if (!(task->data[2] & 1))
+ gSprites[task->data[15]].pos2.x = 2;
+ else
+ gSprites[task->data[15]].pos2.x = -2;
+ }
+
+ if (!RunAffineAnimFromTaskData(task))
+ {
+ gSprites[task->data[15]].pos2.x = 0;
+ if (--task->data[0])
+ {
+ PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], gUnknown_085CE87C);
+ task->data[1] = 0;
+ task->data[2] = 0;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_815E954(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = sub_80A861C(gBattleAnimAttacker, 2);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = sub_80A861C(gBattleAnimTarget, 2);
+ }
+
+ if (sprite->pos1.y < 8)
+ sprite->pos1.y = 8;
+
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = 0;
+ sprite->data[3] = gBattleAnimArgs[2];
+ sprite->callback = sub_815E9BC;
+}
+
+static void sub_815E9BC(struct Sprite *sprite)
+{
+ if (++sprite->data[0] >= sprite->data[1])
+ {
+ sprite->data[0] = 0;
+ sprite->data[2] = (sprite->data[2] + 1) & 1;
+ sprite->invisible = sprite->data[2];
+ if (sprite->data[2] && --sprite->data[3] == 0)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_815EA14(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->oam.matrixNum |= 0x8;
+ sprite->pos1.x = 100;
+ sprite->data[7] = 1;
+ }
+ else
+ {
+ sprite->pos1.x = 140;
+ sprite->data[7] = -1;
+ }
+
+ sprite->pos1.y = 56;
+ sprite->callback = sub_815EA60;
+}
+
+static void sub_815EA60(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.y -= sprite->data[7] * 2;
+ if (sprite->data[1] & 1)
+ sprite->pos1.x -= sprite->data[7] * 2;
+
+ if (++sprite->data[1] == 9)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] == 4)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[1]++;
+ sprite->pos1.y += sprite->data[7] * 3;
+ sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ if (sprite->data[1] == 12)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ if (++sprite->data[1] == 2)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 4:
+ sprite->data[1]++;
+ sprite->pos1.y -= sprite->data[7] * 3;
+ sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ if (sprite->data[1] == 12)
+ sprite->data[0]++;
+ break;
+ case 5:
+ sprite->data[1]++;
+ sprite->pos1.y += sprite->data[7] * 3;
+ sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ if (sprite->data[1] == 15)
+ sprite->oam.tileNum += 16;
+
+ if (sprite->data[1] == 18)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 6:
+ sprite->pos1.x += sprite->data[7] * 6;
+ if (++sprite->data[1] == 9)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 7:
+ sprite->pos1.x += sprite->data[7] * 2;
+ if (++sprite->data[1] == 1)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 8:
+ sprite->pos1.x -= sprite->data[7] * 3;
+ if (++sprite->data[1] == 5)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_815EC48(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ if (!IsContest())
+ {
+ if (IsDoubleBattle() == TRUE)
+ {
+ int x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ int y = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), 0);
+ if (x > y)
+ task->data[14] = 1;
+ else
+ task->data[14] = -1;
+ }
+ else
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ task->data[14] = -1;
+ else
+ task->data[14] = 1;
+ }
+ }
+ else
+ {
+ task->data[14] = 1;
+ }
+
+ task->func = sub_815ECE4;
+}
+
+static void sub_815ECE4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] == 13)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ gSprites[task->data[15]].pos2.x -= task->data[14] * 3;
+ if (++task->data[1] == 6)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ gSprites[task->data[15]].pos2.x += task->data[14] * 3;
+ if (++task->data[1] == 6)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (++task->data[1] == 2)
+ {
+ task->data[1] = 0;
+ if (task->data[2] == 0)
+ {
+ task->data[2]++;
+ task->data[0] = 1;
+ }
+ else
+ {
+ task->data[0]++;
+ }
+ }
+ break;
+ case 4:
+ gSprites[task->data[15]].pos2.x += task->data[14];
+ if (++task->data[1] == 3)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 5:
+ if (++task->data[1] == 6)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 6:
+ gSprites[task->data[15]].pos2.x -= task->data[14] * 4;
+ if (++task->data[1] == 5)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 7:
+ gSprites[task->data[15]].pos2.x += task->data[14] * 4;
+ if (++task->data[1] == 5)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 8:
+ gSprites[task->data[15]].pos2.x = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_815EE84(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[7] = gBattleAnimAttacker;
+ }
+ else
+ {
+ sprite->data[7] = gBattleAnimTarget;
+ }
+
+ if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT)
+ sprite->oam.matrixNum = 8;
+
+ sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
+ sprite->oam.objMode = ST_OAM_OBJ_BLEND;
+ sprite->callback = sub_815EF08;
+}
+
+static void sub_815EF08(struct Sprite *sprite)
+{
+ u16 x, y;
+
+ switch (sprite->data[5])
+ {
+ case 0:
+ switch (sprite->data[6])
+ {
+ default:
+ sprite->data[6] = 0;
+ case 0:
+ case 4:
+ x = sub_80A861C(sprite->data[7], 5) - 4;
+ y = sub_80A861C(sprite->data[7], 3) - 4;
+ break;
+ case 1:
+ x = sub_80A861C(sprite->data[7], 5) - 4;
+ y = sub_80A861C(sprite->data[7], 2) + 4;
+ break;
+ case 2:
+ x = sub_80A861C(sprite->data[7], 4) + 4;
+ y = sub_80A861C(sprite->data[7], 3) - 4;
+ break;
+ case 3:
+ x = sub_80A861C(sprite->data[7], 4) + 4;
+ y = sub_80A861C(sprite->data[7], 2) - 4;
+ break;
+ case 5:
+ x = GetBattlerSpriteCoord(sprite->data[7], 2);
+ y = GetBattlerSpriteCoord(sprite->data[7], 3);
+ break;
+ }
+
+ if (sprite->data[6] == 4)
+ sprite->data[0] = 24;
+ else if (sprite->data[6] == 5)
+ sprite->data[0] = 6;
+ else
+ sprite->data[0] = 12;
+
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = x;
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = y;
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5]++;
+ break;
+ case 1:
+ if (AnimTranslateLinear(sprite))
+ {
+ switch (sprite->data[6])
+ {
+ default:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[0] = 0;
+ sprite->data[5]++;
+ sprite->data[6]++;
+ break;
+ case 4:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[5] = 0;
+ sprite->data[6]++;
+ break;
+ case 5:
+ sprite->data[0] = 0;
+ sprite->data[1] = 16;
+ sprite->data[2] = 0;
+ sprite->data[5] = 3;
+ break;
+ }
+ }
+ break;
+ case 2:
+ if (++sprite->data[0] == 4)
+ sprite->data[5] = 0;
+ break;
+ case 3:
+ if (!(sprite->data[0] & 1))
+ sprite->data[1]--;
+ else
+ sprite->data[2]++;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[1], sprite->data[2]));
+ if (++sprite->data[0] == 32)
+ {
+ sprite->invisible = 1;
+ sprite->data[5]++;
+ }
+ break;
+ case 4:
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+static void sub_815F10C(struct Sprite *sprite)
+{
+ sprite->pos2.x = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4];
+ sprite->pos2.y = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4];
+ if (!(sprite->data[5] & 1))
+ {
+ CreateSprite(
+ &gUnknown_085CE3A0,
+ sprite->pos1.x + sprite->pos2.x,
+ sprite->pos1.y + sprite->pos2.y, 5);
+ }
+
+ if (sprite->data[5] == sprite->data[4])
+ DestroyAnimSprite(sprite);
+
+ sprite->data[5]++;
+}
+
+void sub_815F18C(struct Sprite *sprite)
+{
+ GetBattlerSpriteCoord(gBattleAnimTarget, 2); // unused local variable
+ GetBattlerSpriteCoord(gBattleAnimTarget, 3); // unused local variable
+
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER || IsContest())
+ {
+ sprite->data[0] = sprite->pos1.x - gBattleAnimArgs[0];
+ sprite->data[2] = sprite->pos1.x - gBattleAnimArgs[2];
+ }
+ else
+ {
+ sprite->data[0] = sprite->pos1.x + gBattleAnimArgs[0];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ }
+
+ sprite->data[1] = sprite->pos1.y + gBattleAnimArgs[1];
+ sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[4] = gBattleAnimArgs[4];
+ sprite->pos1.x = sprite->data[0];
+ sprite->pos1.y = sprite->data[1];
+ sprite->callback = sub_815F10C;
+}
+
+void AnimTask_MonToSubstitute(u8 taskId)
+{
+ int i;
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+
+ if (gTasks[taskId].data[0] == 0)
+ {
+ PrepareBattlerSpriteForRotScale(spriteId, FALSE);
+ gTasks[taskId].data[1] = 0x100;
+ gTasks[taskId].data[2] = 0x100;
+ gTasks[taskId].data[0]++;
+ }
+ else if (gTasks[taskId].data[0] == 1)
+ {
+ gTasks[taskId].data[1] += 0x60;
+ gTasks[taskId].data[2] -= 0xD;
+ SetSpriteRotScale(spriteId, gTasks[taskId].data[1], gTasks[taskId].data[2], 0);
+ if (++gTasks[taskId].data[3] == 9)
+ {
+ gTasks[taskId].data[3] = 0;
+ ResetSpriteRotScale(spriteId);
+ gSprites[spriteId].invisible = 1;
+ gTasks[taskId].data[0]++;
+ }
+ }
+ else
+ {
+ LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, 0, spriteId);
+ if (IsContest())
+ {
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gUnknown_082FF6C0;
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
+ }
+
+ for (i = 0; i < 16; i++)
+ gTasks[taskId].data[i] = 0;
+
+ gTasks[taskId].func = sub_815F330;
+ }
+}
+
+static void sub_815F330(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gSprites[spriteId].pos2.y = -200;
+ gSprites[spriteId].pos2.x = 200;
+ gSprites[spriteId].invisible = 0;
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gTasks[taskId].data[10] += 112;
+ gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
+ if (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y >= -32)
+ gSprites[spriteId].pos2.x = 0;
+
+ if (gSprites[spriteId].pos2.y > 0)
+ gSprites[spriteId].pos2.y = 0;
+
+ if (gSprites[spriteId].pos2.y == 0)
+ {
+ PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64));
+ gTasks[taskId].data[10] -= 0x800;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ gTasks[taskId].data[10] -= 112;
+ if (gTasks[taskId].data[10] < 0)
+ gTasks[taskId].data[10] = 0;
+
+ gSprites[spriteId].pos2.y -= gTasks[taskId].data[10] >> 8;
+ if (gTasks[taskId].data[10] == 0)
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ gTasks[taskId].data[10] += 112;
+ gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
+ if (gSprites[spriteId].pos2.y > 0)
+ gSprites[spriteId].pos2.y = 0;
+
+ if (gSprites[spriteId].pos2.y == 0)
+ {
+ PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64));
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_815F48C(struct Sprite *sprite)
+{
+ s16 y2;
+
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ {
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 2;
+ y2 = -144;
+ }
+ else
+ {
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + 2;
+ y2 = -96;
+ }
+
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->pos2.y = y2;
+ sprite->callback = sub_815F4F0;
+}
+
+static void sub_815F4F0(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.y += 10;
+ if (sprite->pos2.y >= 0)
+ {
+ PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(63));
+ sprite->pos2.y = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->data[1] += 4;
+ sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3);
+ if (sprite->data[1] > 127)
+ {
+ PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(63));
+ sprite->data[1] = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[1] += 6;
+ sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 4);
+ if (sprite->data[1] > 127)
+ {
+ sprite->data[1] = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ if (++sprite->data[1] > 8)
+ {
+ PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(63));
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 4:
+ if (++sprite->data[1] > 8)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2]++;
+ sprite->invisible = sprite->data[2] & 1;
+ if (sprite->data[2] == 7)
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_815F620(u8 taskId)
+{
+ s16 spriteId1, spriteId2;
+
+ if (IsContest())
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ spriteId1 = CloneBattlerSpriteWithBlend(ANIM_TARGET);
+ if (spriteId1 < 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ spriteId2 = CloneBattlerSpriteWithBlend(ANIM_TARGET);
+ if (spriteId2 < 0)
+ {
+ obj_delete_but_dont_free_vram(&gSprites[spriteId1]);
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ gSprites[spriteId2].pos2.x += 24;
+ gSprites[spriteId1].pos2.x -= 24;
+ gSprites[spriteId2].data[0] = 0;
+ gSprites[spriteId1].data[0] = 0;
+ gSprites[spriteId2].data[1] = 0;
+ gSprites[spriteId1].data[1] = 0;
+ gSprites[spriteId2].data[2] = 0;
+ gSprites[spriteId1].data[2] = 0;
+ gSprites[spriteId2].data[3] = 16;
+ gSprites[spriteId1].data[3] = -16;
+ gSprites[spriteId2].data[4] = 0;
+ gSprites[spriteId1].data[4] = 128;
+ gSprites[spriteId2].data[5] = 24;
+ gSprites[spriteId1].data[5] = 24;
+ gSprites[spriteId2].data[6] = taskId;
+ gSprites[spriteId1].data[6] = taskId;
+ gSprites[spriteId2].data[7] = 0;
+ gSprites[spriteId1].data[7] = 0;
+ gTasks[taskId].data[0] = 2;
+
+ if (!gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].invisible)
+ {
+ gSprites[spriteId2].invisible = 0;
+ gSprites[spriteId1].invisible = 1;
+ }
+ else
+ {
+ gSprites[spriteId2].invisible = 1;
+ gSprites[spriteId1].invisible = 1;
+ }
+
+
+ gSprites[spriteId2].oam.objMode = ST_OAM_OBJ_NORMAL;
+ gSprites[spriteId1].oam.objMode = ST_OAM_OBJ_NORMAL;
+ gSprites[spriteId2].callback = sub_815F7C4;
+ gSprites[spriteId1].callback = sub_815F7C4;
+ gTasks[taskId].func = sub_815F79C;
+}
+
+static void sub_815F79C(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_815F7C4(struct Sprite *sprite)
+{
+ int zero = 0;
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ if (!gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].invisible)
+ sprite->invisible ^= 1;
+ }
+
+ sprite->data[4] = sprite->data[4] + sprite->data[3];
+ sprite->data[4] &= 0xFF;
+ sprite->pos2.x = Cos(sprite->data[4], sprite->data[5]);
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[2] == 60)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[2] > 0)
+ {
+ sprite->data[2] = 0;
+ sprite->data[5] -= 2;
+ if (sprite->data[5] < 0)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ obj_delete_but_dont_free_vram(sprite);
+ }
+ }
+ break;
+ }
+}
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
index c3d0fe90f..f99b1aeac 100644
--- a/src/battle_anim_utility_funcs.c
+++ b/src/battle_anim_utility_funcs.c
@@ -40,10 +40,10 @@ static void sub_8117FD0(u8);
const u16 gUnknown_08597418 = RGB(31, 31, 31);
-// no clue what these are...
-// possibly some register offsets
-const u8 gUnknown_0859741A[] = {0x08, 0x0a, 0x0c, 0x0e};
-const u8 gUnknown_0859741E[] = {0x08, 0x0a, 0x0c, 0x0e};
+// These belong in battle_intro.c, but there putting them there causes 2 bytes of alignment padding
+// between the two .rodata segments. Perhaps battle_intro.c actually belongs in this file, too.
+const u8 gUnknown_0859741A[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT};
+const u8 gUnknown_0859741E[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT};
void sub_8116620(u8 taskId)
{
@@ -236,7 +236,7 @@ static void sub_81169F8(u8 taskId)
}
else
{
- task->data[6] = duplicate_obj_of_side_rel2move_in_transparent_mode(task->data[0]);
+ task->data[6] = CloneBattlerSpriteWithBlend(task->data[0]);
if (task->data[6] >= 0)
{
gSprites[task->data[6]].oam.priority = task->data[0] ? 1 : 2;
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 8cbc62aab..e81035fc7 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -1136,7 +1136,7 @@ static void LinkOpponentHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
@@ -1170,7 +1170,7 @@ static void sub_8066494(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSpriteSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1302,7 +1302,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
xPos,
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
- sub_80A82E4(gActiveBattler));
+ GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 0cd15f39e..533ec39de 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -1024,7 +1024,7 @@ static void LinkPartnerHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
@@ -1055,7 +1055,7 @@ static void sub_814CC98(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSpriteSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1143,7 +1143,7 @@ static void LinkPartnerHandleDrawTrainerPic(void)
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index c057e8575..30aa3217b 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -1128,7 +1128,7 @@ static void OpponentHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
@@ -1163,7 +1163,7 @@ static void sub_80613DC(u8 battlerId, bool8 dontClearSubstituteBit)
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSpriteSubpriority(battlerId));
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
@@ -1293,7 +1293,7 @@ static void OpponentHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
xPos,
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
- sub_80A82E4(gActiveBattler));
+ GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 2bd5ef365..2d8fba63a 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -2200,7 +2200,7 @@ static void sub_805B258(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSpriteSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -2314,7 +2314,7 @@ static void PlayerHandleDrawTrainerPic(void)
trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender);
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
@@ -2329,7 +2329,7 @@ static void PlayerHandleDrawTrainerPic(void)
{
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 02dd1383b..22018add4 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -1211,7 +1211,7 @@ static void PlayerPartnerHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
@@ -1242,7 +1242,7 @@ static void sub_81BD0E4(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSpriteSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1322,7 +1322,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
{
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
@@ -1333,7 +1333,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
{
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 0cf3634dc..1cf780264 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -1119,9 +1119,7 @@ static void RecordedOpponentHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
-
-
+ GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
@@ -1154,7 +1152,7 @@ static void sub_81885D8(u8 battlerId, bool8 dontClearSubstituteBit)
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSpriteSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1251,7 +1249,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
xPos,
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
- sub_80A82E4(gActiveBattler));
+ GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 4d7fdc01e..a788d6be3 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -1105,7 +1105,7 @@ static void RecordedPlayerHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
@@ -1136,7 +1136,7 @@ static void sub_818BA6C(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSpriteSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1236,7 +1236,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender);
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
@@ -1250,7 +1250,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
{
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 5d87c4f90..c0b496e47 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -1464,7 +1464,7 @@ static void sub_816AA80(u8 battlerId)
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSpriteSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 391128cb0..159d7e790 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -26,6 +26,7 @@
#include "international_string_util.h"
#include "trainer_pokemon_sprites.h"
#include "scanline_effect.h"
+#include "script_pokemon_util_80F87D8.h"
#include "graphics.h"
#include "constants/species.h"
#include "constants/moves.h"
@@ -57,19 +58,9 @@ struct UnkStruct_860DD10
};
extern void sub_81B8558(void);
-extern u16 GetFrontierBrainMonMove(u8 monId, u8 moveSlotId);
-extern u8 GetFrontierBrainMonEvs(u8, u8);
-extern u8 GetFrontierBrainMonNature(u8);
-extern void sub_81A4C30(void);
-extern u8 sub_81A3610(void);
-extern u16 GetFrontierBrainMonSpecies(u8);
-extern void ReducePlayerPartyToSelectedMons(void);
extern u8 gSelectedOrderFromParty[];
-extern const u16 gBattleFrontierHeldItems[];
-extern const struct FacilityMon gBattleFrontierMons[];
-extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
extern const struct SpriteTemplate gUnknown_0860CFA8;
// text
diff --git a/src/battle_factory.c b/src/battle_factory.c
index 1d7fbafc9..801b33ba7 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -13,11 +13,6 @@
#include "constants/trainers.h"
#include "constants/moves.h"
-extern const struct FacilityMon gBattleFrontierMons[];
-extern const struct FacilityMon gSlateportBattleTentMons[];
-extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
-extern const u16 gBattleFrontierHeldItems[];
-
// IWRAM bss
static IWRAM_DATA bool8 gUnknown_03001288;
@@ -531,7 +526,7 @@ static void sub_81A67EC(void)
}
var_40 = sub_81A6F70(factoryBattleMode, factoryLvlMode);
- currSpecies = 0;
+ currSpecies = SPECIES_NONE;
i = 0;
while (i != PARTY_SIZE)
{
@@ -551,7 +546,7 @@ static void sub_81A67EC(void)
break;
if (species[j] == gFacilityTrainerMons[monSetId].species)
{
- if (currSpecies == 0)
+ if (currSpecies == SPECIES_NONE)
currSpecies = gFacilityTrainerMons[monSetId].species;
else
break;
@@ -566,7 +561,7 @@ static void sub_81A67EC(void)
if (heldItems[j] != 0 && heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId])
{
if (gFacilityTrainerMons[monSetId].species == currSpecies)
- currSpecies = 0;
+ currSpecies = SPECIES_NONE;
break;
}
}
@@ -584,7 +579,7 @@ static void sub_81A67EC(void)
static void sub_81A6A08(void)
{
u8 i;
- u8 typesCount[18];
+ u8 typesCount[NUMBER_OF_MON_TYPES];
u8 usedType[2];
gFacilityTrainerMons = gBattleFrontierMons;
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index d9409b230..a5d2566df 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -1097,14 +1097,14 @@ void sub_805EB9C(u8 affineMode)
if (IsBattlerSpritePresent(i))
{
gSprites[gBattlerSpriteIds[i]].oam.affineMode = affineMode;
- if (affineMode == 0)
+ if (affineMode == ST_OAM_AFFINE_OFF)
{
- gBattleSpritesDataPtr->healthBoxesData[i].field_6 = gSprites[gBattlerSpriteIds[i]].oam.matrixNum;
+ gBattleSpritesDataPtr->healthBoxesData[i].matrixNum = gSprites[gBattlerSpriteIds[i]].oam.matrixNum;
gSprites[gBattlerSpriteIds[i]].oam.matrixNum = 0;
}
else
{
- gSprites[gBattlerSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].field_6;
+ gSprites[gBattlerSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].matrixNum;
}
}
}
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 0ccc7e828..736e35a87 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -1,21 +1,728 @@
#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "battle_main.h"
+#include "battle_setup.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "main.h"
+#include "scanline_effect.h"
#include "task.h"
+#include "trig.h"
+#include "constants/trainers.h"
-extern void task_battle_intro_80BC47C(u8);
-extern void task00_battle_intro_80BC6C8(u8);
-extern void task_battle_intro_80BC47C(u8);
-extern void task_battle_intro_anim(u8);
-
-const TaskFunc gUnknown_08597424[] =
-{
- task_battle_intro_80BC47C,
- task_battle_intro_80BC47C,
- task00_battle_intro_80BC6C8,
- task00_battle_intro_80BC6C8,
- task00_battle_intro_80BC6C8,
- task_battle_intro_80BC47C,
- task_battle_intro_80BC47C,
- task_battle_intro_80BC47C,
- task_battle_intro_anim,
- task_battle_intro_anim,
+static EWRAM_DATA u16 sBgCnt = 0;
+
+extern const u8 gUnknown_0859741A[];
+extern const u8 gUnknown_0859741E[];
+
+static void BattleIntroSlide1(u8);
+static void BattleIntroSlide2(u8);
+static void BattleIntroSlide3(u8);
+static void BattleIntroSlideLink(u8);
+static void BattleIntroSlidePartner(u8);
+
+static const TaskFunc sBattleIntroSlideFuncs[] =
+{
+ BattleIntroSlide1, // BATTLE_TERRAIN_GRASS
+ BattleIntroSlide1, // BATTLE_TERRAIN_LONG_GRASS
+ BattleIntroSlide2, // BATTLE_TERRAIN_SAND
+ BattleIntroSlide2, // BATTLE_TERRAIN_UNDERWATER
+ BattleIntroSlide2, // BATTLE_TERRAIN_WATER
+ BattleIntroSlide1, // BATTLE_TERRAIN_POND
+ BattleIntroSlide1, // BATTLE_TERRAIN_MOUNTAIN
+ BattleIntroSlide1, // BATTLE_TERRAIN_CAVE
+ BattleIntroSlide3, // BATTLE_TERRAIN_BUILDING
+ BattleIntroSlide3, // BATTLE_TERRAIN_PLAIN
};
+
+void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value)
+{
+ if (bgId < 4)
+ {
+ sBgCnt = GetGpuReg(gUnknown_0859741A[bgId]);
+ switch (attributeId)
+ {
+ case BG_ANIM_SCREEN_SIZE:
+ ((struct BgCnt *)&sBgCnt)->screenSize = value;
+ break;
+ case BG_ANIM_AREA_OVERFLOW_MODE:
+ ((struct BgCnt *)&sBgCnt)->areaOverflowMode = value;
+ break;
+ case BG_ANIM_MOSAIC:
+ ((struct BgCnt *)&sBgCnt)->mosaic = value;
+ break;
+ case BG_ANIM_CHAR_BASE_BLOCK:
+ ((struct BgCnt *)&sBgCnt)->charBaseBlock = value;
+ break;
+ case BG_ANIM_PRIORITY:
+ ((struct BgCnt *)&sBgCnt)->priority = value;
+ break;
+ case BG_ANIM_PALETTES_MODE:
+ ((struct BgCnt *)&sBgCnt)->palettes = value;
+ break;
+ case BG_ANIM_SCREEN_BASE_BLOCK:
+ ((struct BgCnt *)&sBgCnt)->screenBaseBlock = value;
+ break;
+ }
+
+ SetGpuReg(gUnknown_0859741A[bgId], sBgCnt);
+ }
+}
+
+int GetAnimBgAttribute(u8 bgId, u8 attributeId)
+{
+ u16 bgCnt;
+
+ if (bgId < 4)
+ {
+ bgCnt = GetGpuReg(gUnknown_0859741E[bgId]);
+ switch (attributeId)
+ {
+ case BG_ANIM_SCREEN_SIZE:
+ return ((struct BgCnt *)&bgCnt)->screenSize;
+ case BG_ANIM_AREA_OVERFLOW_MODE:
+ return ((struct BgCnt *)&bgCnt)->areaOverflowMode;
+ case BG_ANIM_MOSAIC:
+ return ((struct BgCnt *)&bgCnt)->mosaic;
+ case BG_ANIM_CHAR_BASE_BLOCK:
+ return ((struct BgCnt *)&bgCnt)->charBaseBlock;
+ case BG_ANIM_PRIORITY:
+ return ((struct BgCnt *)&bgCnt)->priority;
+ case BG_ANIM_PALETTES_MODE:
+ return ((struct BgCnt *)&bgCnt)->palettes;
+ case BG_ANIM_SCREEN_BASE_BLOCK:
+ return ((struct BgCnt *)&bgCnt)->screenBaseBlock;
+ }
+ }
+
+ return 0;
+}
+
+void HandleIntroSlide(u8 terrain)
+{
+ u8 taskId;
+
+ if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gPartnerTrainerId != TRAINER_STEVEN_PARTNER)
+ {
+ taskId = CreateTask(BattleIntroSlidePartner, 0);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ taskId = CreateTask(BattleIntroSlideLink, 0);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ taskId = CreateTask(BattleIntroSlide3, 0);
+ }
+ else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY)
+ {
+ terrain = BATTLE_TERRAIN_UNDERWATER;
+ taskId = CreateTask(BattleIntroSlide2, 0);
+ }
+ else
+ {
+ taskId = CreateTask(sBattleIntroSlideFuncs[terrain], 0);
+ }
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = terrain;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[6] = 0;
+}
+
+void sub_811828C(u8 taskId)
+{
+ DestroyTask(taskId);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+}
+
+static void BattleIntroSlide1(u8 taskId)
+{
+ int i;
+
+ gBattle_BG1_X += 6;
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gTasks[taskId].data[2] = 16;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ }
+ break;
+ case 2:
+ gBattle_WIN0V -= 0xFF;
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gTasks[taskId].data[3] = 32;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].data[3])
+ {
+ gTasks[taskId].data[3]--;
+ }
+ else
+ {
+ if (gTasks[taskId].data[1] == 1)
+ {
+ if (gBattle_BG1_Y != 0xFFB0)
+ gBattle_BG1_Y -= 2;
+ }
+ else
+ {
+ if (gBattle_BG1_Y != 0xFFC8)
+ gBattle_BG1_Y -= 1;
+ }
+ }
+
+ if (gBattle_WIN0V & 0xFF00)
+ gBattle_WIN0V -= 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ // Scanline settings have already been set in CB2_InitBattleInternal()
+ for (i = 0; i < 80; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2];
+
+ for (; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2];
+
+ if (!gTasks[taskId].data[2])
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ }
+ break;
+ case 4:
+ sub_811828C(taskId);
+ break;
+ }
+}
+
+static void BattleIntroSlide2(u8 taskId)
+{
+ int i;
+
+ switch (gTasks[taskId].data[1])
+ {
+ case 2:
+ case 4:
+ gBattle_BG1_X += 8;
+ break;
+ case 3:
+ gBattle_BG1_X += 6;
+ break;
+ }
+
+ if (gTasks[taskId].data[1] == 4)
+ {
+ gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8;
+ if (gTasks[taskId].data[6] < 180)
+ gTasks[taskId].data[6] += 4;
+ else
+ gTasks[taskId].data[6] += 6;
+
+ if (gTasks[taskId].data[6] == 360)
+ gTasks[taskId].data[6] = 0;
+ }
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gTasks[taskId].data[4] = 16;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gTasks[taskId].data[2] = 16;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ }
+ break;
+ case 2:
+ gBattle_WIN0V -= 0xFF;
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gTasks[taskId].data[3] = 32;
+ gTasks[taskId].data[5] = 1;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].data[3])
+ {
+ if (--gTasks[taskId].data[3] == 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(15, 0));
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ }
+ }
+ else
+ {
+ if ((gTasks[taskId].data[4] & 0x1F) && --gTasks[taskId].data[5] == 0)
+ {
+ gTasks[taskId].data[4] += 0xFF;
+ gTasks[taskId].data[5] = 4;
+ }
+ }
+
+ if (gBattle_WIN0V & 0xFF00)
+ gBattle_WIN0V -= 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ // Scanline settings have already been set in CB2_InitBattleInternal()
+ for (i = 0; i < 80; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2];
+
+ for (; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2];
+
+ if (!gTasks[taskId].data[2])
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ }
+ break;
+ case 4:
+ sub_811828C(taskId);
+ break;
+ }
+
+ if (gTasks[taskId].data[0] != 4)
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0));
+}
+
+static void BattleIntroSlide3(u8 taskId)
+{
+ int i;
+
+ gBattle_BG1_X += 8;
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8));
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ gTasks[taskId].data[4] = BLDALPHA_BLEND(8, 8);
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ gTasks[taskId].data[2] = 16;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ }
+ break;
+ case 2:
+ gBattle_WIN0V -= 0xFF;
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gTasks[taskId].data[3] = 32;
+ gTasks[taskId].data[5] = 1;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].data[3])
+ {
+ gTasks[taskId].data[3]--;
+ }
+ else
+ {
+ if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0)
+ {
+ gTasks[taskId].data[4] += 0xFF;
+ gTasks[taskId].data[5] = 6;
+ }
+ }
+
+ if (gBattle_WIN0V & 0xFF00)
+ gBattle_WIN0V -= 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ // Scanline settings have already been set in CB2_InitBattleInternal()
+ for (i = 0; i < 80; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2];
+
+ for (; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2];
+
+ if (!gTasks[taskId].data[2])
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ }
+ break;
+ case 4:
+ sub_811828C(taskId);
+ break;
+ }
+
+ if (gTasks[taskId].data[0] != 4)
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0));
+}
+
+static void BattleIntroSlideLink(u8 taskId)
+{
+ int i;
+
+ if (gTasks[taskId].data[0] > 1 && !gTasks[taskId].data[4])
+ {
+ u16 var0 = gBattle_BG1_X & 0x8000;
+ if (var0 || gBattle_BG1_X < 80)
+ {
+ gBattle_BG1_X += 3;
+ gBattle_BG2_X -= 3;
+ }
+ else
+ {
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(30), BG_SCREEN_SIZE);
+ gTasks[taskId].data[4] = 1;
+ }
+ }
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gTasks[taskId].data[2] = 32;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ gSprites[gBattleStruct->field_7D].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[gBattleStruct->field_7D].callback = sub_8038B74;
+ gSprites[gBattleStruct->field_7E].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[gBattleStruct->field_7E].callback = sub_8038B74;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2);
+ }
+ break;
+ case 2:
+ gBattle_WIN0V -= 0xFF;
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gTasks[taskId].data[3] = 32;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if (gBattle_WIN0V & 0xFF00)
+ gBattle_WIN0V -= 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ // Scanline settings have already been set in CB2_InitBattleInternal()
+ for (i = 0; i < 80; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2];
+
+ for (; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2];
+
+ if (!gTasks[taskId].data[2])
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ }
+ break;
+ case 4:
+ sub_811828C(taskId);
+ break;
+ }
+}
+
+static void BattleIntroSlidePartner(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT512x256);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ gBattle_BG0_Y = -48;
+ gBattle_BG1_X = 240;
+ gBattle_BG2_X = -240;
+ }
+ break;
+ case 2:
+ gBattle_WIN0V += 0x100;
+ if ((gBattle_WIN0V & 0xFF00) != 0x100)
+ gBattle_WIN0V--;
+
+ if ((gBattle_WIN0V & 0xFF00) == 0x2000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if ((gBattle_WIN0V & 0xFF00) != 0x4C00)
+ gBattle_WIN0V += 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ gBattle_BG1_X = gTasks[taskId].data[2];
+ gBattle_BG2_X = -gTasks[taskId].data[2];
+ if (!gTasks[taskId].data[2])
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ gBattle_BG0_Y += 2;
+ gBattle_BG2_Y += 2;
+ if ((gBattle_WIN0V & 0xFF00) != 0x5000)
+ gBattle_WIN0V += 0xFF;
+
+ if (!gBattle_BG0_Y)
+ {
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE * 4);
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) & ~DISPCNT_WIN1_ON);
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 5:
+ sub_811828C(taskId);
+ break;
+ }
+}
+
+void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset)
+{
+ int i, j;
+ u8 battler = GetBattlerAtPosition(battlerPosition);
+ int offset = tilesOffset;
+ CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE);
+ LoadBgTiles(bgId, arg5, 0x1000, tilesOffset);
+ for (i = arg2; i < arg2 + 8; i++)
+ {
+ for (j = arg1; j < arg1 + 8; j++)
+ {
+ arg6[i * 32 + j] = offset | (arg4 << 12);
+ offset++;
+ }
+ }
+
+ LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0);
+}
+
+#ifdef NONMATCHING
+void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
+{
+ int i, j;
+ int offset;
+ DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
+ offset = (arg5 >> 5) - (arg7 << 9);
+ for (i = arg1; i < arg1 + 8; i++)
+ {
+ for (j = arg0; j < arg0 + 8; j++)
+ {
+ ((u16 *)BG_VRAM)[i * 32 + j + (arg6 * 0x400) + arg0] = offset | (arg4 << 12);
+ offset++;
+ }
+ }
+}
+#else
+NAKED
+void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
+{
+ asm_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 r4, [sp, 0x24]\n\
+ ldr r5, [sp, 0x28]\n\
+ mov r8, r5\n\
+ ldr r5, [sp, 0x2C]\n\
+ ldr r6, [sp, 0x30]\n\
+ mov r9, r6\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r12, r0\n\
+ lsls r1, 24\n\
+ lsls r2, 24\n\
+ lsls r3, 24\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ mov r10, r4\n\
+ mov r7, r8\n\
+ lsls r7, 16\n\
+ lsrs r6, r7, 16\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ mov r0, r9\n\
+ lsls r0, 24\n\
+ mov r9, r0\n\
+ ldr r4, =0x040000d4\n\
+ ldr r0, =gMonSpritesGfxPtr\n\
+ ldr r0, [r0]\n\
+ lsrs r2, 22\n\
+ adds r0, 0x4\n\
+ adds r0, r2\n\
+ lsrs r3, 13\n\
+ ldr r0, [r0]\n\
+ adds r0, r3\n\
+ str r0, [r4]\n\
+ movs r0, 0xC0\n\
+ lsls r0, 19\n\
+ adds r6, r0\n\
+ str r6, [r4, 0x4]\n\
+ ldr r0, =0x80000400\n\
+ str r0, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ adds r2, r7, 0\n\
+ lsrs r2, 21\n\
+ mov r6, r9\n\
+ lsrs r6, 15\n\
+ subs r4, r2, r6\n\
+ lsrs r0, r1, 24\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x8\n\
+ cmp r0, r1\n\
+ bge _08119148\n\
+ mov r9, r1\n\
+ mov r7, r12\n\
+ lsls r7, 1\n\
+ mov r8, r7\n\
+ lsls r5, 11\n\
+ str r5, [sp]\n\
+_08119110:\n\
+ mov r2, r12\n\
+ adds r3, r2, 0\n\
+ adds r3, 0x8\n\
+ adds r5, r0, 0x1\n\
+ cmp r2, r3\n\
+ bge _08119142\n\
+ mov r1, r10\n\
+ lsls r6, r1, 12\n\
+ lsls r0, 6\n\
+ movs r7, 0xC0\n\
+ lsls r7, 19\n\
+ adds r0, r7\n\
+ ldr r1, [sp]\n\
+ adds r0, r1, r0\n\
+ mov r7, r8\n\
+ adds r1, r7, r0\n\
+ subs r2, r3, r2\n\
+_08119132:\n\
+ adds r0, r4, 0\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
+ adds r4, 0x1\n\
+ adds r1, 0x2\n\
+ subs r2, 0x1\n\
+ cmp r2, 0\n\
+ bne _08119132\n\
+_08119142:\n\
+ adds r0, r5, 0\n\
+ cmp r0, r9\n\
+ blt _08119110\n\
+_08119148:\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\
+ .pool");
+}
+#endif
diff --git a/src/battle_main.c b/src/battle_main.c
index 9b7f58023..42f204508 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -4,6 +4,7 @@
#include "battle_arena.h"
#include "battle_controllers.h"
#include "battle_interface.h"
+#include "battle_main.h"
#include "battle_message.h"
#include "battle_pyramid.h"
#include "battle_scripts.h"
@@ -55,20 +56,6 @@
#include "constants/species.h"
#include "constants/trainers.h"
-struct UnknownPokemonStruct4
-{
- /*0x00*/ u16 species;
- /*0x02*/ u16 heldItem;
- /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
- /*0x0F*/ u8 level;
- /*0x10*/ u16 hp;
- /*0x12*/ u16 maxhp;
- /*0x14*/ u32 status;
- /*0x18*/ u32 personality;
- /*0x1C*/ u8 gender;
- /*0x1D*/ u8 language;
-};
-
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern u8 gUnknown_0203CF00[];
@@ -81,7 +68,7 @@ extern const u8 *const gBattlescriptsForBallThrow[];
extern const u8 *const gBattlescriptsForRunningByItem[];
extern const u8 *const gBattlescriptsForUsingItem[];
extern const u8 *const gBattlescriptsForSafariActions[];
-extern const struct ScanlineEffectParams gUnknown_0831AC70;
+extern const struct ScanlineEffectParams gBattleIntroSlideScanlineEffectParams;
// strings
extern const u8 gText_LinkStandby3[];
@@ -633,7 +620,7 @@ static void CB2_InitBattleInternal(void)
gScanlineEffectRegBuffers[1][i] = 0xFF10;
}
- ScanlineEffect_SetParams(gUnknown_0831AC70);
+ ScanlineEffect_SetParams(gBattleIntroSlideScanlineEffectParams);
}
ResetPaletteFade();
@@ -2122,12 +2109,12 @@ static void sub_8038B94(u8 taskId)
if (species != SPECIES_EGG && hp != 0 && status == 0)
r7 |= 1 << i * 2;
- if (species == 0)
+ if (species == SPECIES_NONE)
continue;
if (hp != 0 && (species == SPECIES_EGG || status != 0))
r7 |= 2 << i * 2;
- if (species == 0)
+ if (species == SPECIES_NONE)
continue;
if (species != SPECIES_EGG && hp == 0)
r7 |= 3 << i * 2;
diff --git a/src/battle_pike.c b/src/battle_pike.c
index 4b2a1574d..303146f6a 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -50,8 +50,6 @@ struct PikeWildMon
u16 moves[4];
};
-extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
-
// IWRAM bss
static IWRAM_DATA u8 sRoomType;
static IWRAM_DATA u8 sStatusMon;
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index 6cc09d713..45aca91c8 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -37,9 +37,6 @@ extern void door_upload_tiles(void);
extern const struct MapLayout *const gMapLayouts[];
extern const u16 gUnknown_08D856C8[][16];
-extern const u16 gBattleFrontierHeldItems[];
-extern const struct FacilityMon gBattleFrontierMons[];
-extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
#define TOTAL_ROUNDS 20
#define PICKUP_ITEMS_PER_ROUND 10
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 475b16c98..d399cddbb 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -55,11 +55,11 @@ extern const u8* const gBattleScriptsForMoveEffects[];
extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen
extern u8 sub_81C1B94(void); // pokemon summary screen
extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s
-extern void sub_81D3640(u8 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s
-extern void sub_81D3784(u8 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s
+extern void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s
+extern void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s
extern u8* GetMonNickname(struct Pokemon* mon, u8* dst); // party_menu
extern void sub_81B8E80(u8 battlerId, u8, u8); // party menu
-extern bool8 sub_81B1250(void); // ?
+extern bool8 IsMultiBattle(void); // ?
extern u8 sub_813B21C(void);
extern u16 get_unknown_box_id(void);
@@ -7609,7 +7609,7 @@ static void atk8F_forcerandomswitch(void)
}
*(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i;
- if (!sub_81B1250())
+ if (!IsMultiBattle())
sub_803BDA0(gBattlerTarget);
if ((gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
@@ -8648,7 +8648,7 @@ static void atkAE_healpartystatus(void)
u16 species = GetMonData(&party[i], MON_DATA_SPECIES2);
u8 abilityBit = GetMonData(&party[i], MON_DATA_ALT_ABILITY);
- if (species != 0 && species != SPECIES_EGG)
+ if (species != SPECIES_NONE && species != SPECIES_EGG)
{
u8 ability;
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 5377f39b5..83ced1b7c 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -57,7 +57,7 @@ struct TrainerBattleParameter
};
extern bool32 InTrainerHill(void);
-extern bool32 FieldPoisonEffectIsRunning(void);
+extern bool32 FldEffPoison_IsActive(void);
extern void RestartWildEncounterImmunitySteps(void);
extern void ClearPoisonStepCounter(void);
extern void sub_81BE72C(void);
@@ -338,7 +338,7 @@ static void Task_BattleStart(u8 taskId)
switch (tState)
{
case 0:
- if (!FieldPoisonEffectIsRunning()) // is poison not active?
+ if (!FldEffPoison_IsActive()) // is poison not active?
{
BattleTransition_StartOnField(tTransition);
sub_81BE72C();
diff --git a/src/battle_tent.c b/src/battle_tent.c
index c7e70912c..c358deaa5 100644
--- a/src/battle_tent.c
+++ b/src/battle_tent.c
@@ -13,10 +13,7 @@
#include "string_util.h"
#include "constants/items.h"
#include "constants/region_map_sections.h"
-
-extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
-extern const struct FacilityMon gSlateportBattleTentMons[];
-extern const u16 gBattleFrontierHeldItems[];
+#include "constants/species.h"
// This file's functions.
static void sub_81B99D4(void);
@@ -296,7 +293,7 @@ static void sub_81B9EC0(void)
heldItems[i] = 0;
}
gFacilityTrainerMons = gSlateportBattleTentMons;
- currSpecies = 0;
+ currSpecies = SPECIES_NONE;
i = 0;
while (i != PARTY_SIZE)
{
@@ -309,7 +306,7 @@ static void sub_81B9EC0(void)
break;
if (species[j] == gFacilityTrainerMons[monSetId].species)
{
- if (currSpecies == 0)
+ if (currSpecies == SPECIES_NONE)
currSpecies = gFacilityTrainerMons[monSetId].species;
else
break;
@@ -324,7 +321,7 @@ static void sub_81B9EC0(void)
if (heldItems[j] != 0 && heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId])
{
if (gFacilityTrainerMons[monSetId].species == currSpecies)
- currSpecies = 0;
+ currSpecies = SPECIES_NONE;
break;
}
}
diff --git a/src/battle_tower.c b/src/battle_tower.c
index f9dfcabd1..e60783fa2 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -10,6 +10,7 @@
#include "international_string_util.h"
#include "battle.h"
#include "frontier_util.h"
+#include "strings.h"
#include "recorded_battle.h"
#include "easy_chat.h"
#include "gym_leader_rematch.h"
@@ -23,41 +24,14 @@
#include "tv.h"
#include "battle_factory.h"
#include "constants/battle_frontier.h"
+#include "constants/items.h"
#include "constants/trainers.h"
#include "constants/event_objects.h"
#include "constants/moves.h"
#include "constants/species.h"
+#include "constants/easy_chat.h"
-extern void sub_81A4C30(void);
-
-extern const u8 *const *const gUnknown_085DD690[];
-extern const u16 gBattleFrontierHeldItems[];
-extern const u8 sRubyFacilityClassToEmerald[82][2];
extern const u16 gUnknown_085DFA46[];
-extern const struct FacilityMon gSlateportBattleTentMons[];
-extern const struct FacilityMon gVerdanturfBattleTentMons[];
-extern const struct FacilityMon gFallarborBattleTentMons[];
-extern const struct FacilityMon gBattleFrontierMons[];
-extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
-extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
-extern const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[];
-extern const struct BattleFrontierTrainer gFallarborBattleTentTrainers[];
-
-struct
-{
- u32 facilityClass;
- const u8 *const *strings;
-} extern const gUnknown_085DD500[50];
-
-struct
-{
- u16 species;
- u8 fixedIV;
- u8 level;
- u8 nature;
- u8 evs[6];
- u16 moves[4];
-} extern const sStevenMons[3];
extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224157[];
extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224166[];
@@ -102,6 +76,982 @@ static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderT
static u8 SetTentPtrsGetLevel(void);
// Const rom data.
+const u16 gBattleFrontierHeldItems[] =
+{
+ ITEM_NONE,
+ ITEM_KINGS_ROCK,
+ ITEM_SITRUS_BERRY,
+ ITEM_ORAN_BERRY,
+ ITEM_CHESTO_BERRY,
+ ITEM_HARD_STONE,
+ ITEM_FOCUS_BAND,
+ ITEM_PERSIM_BERRY,
+ ITEM_MIRACLE_SEED,
+ ITEM_BERRY_JUICE,
+ ITEM_MACHO_BRACE,
+ ITEM_SILVER_POWDER,
+ ITEM_CHERI_BERRY,
+ ITEM_BLACK_GLASSES,
+ ITEM_BLACK_BELT,
+ ITEM_SOUL_DEW,
+ ITEM_CHOICE_BAND,
+ ITEM_MAGNET,
+ ITEM_SILK_SCARF,
+ ITEM_WHITE_HERB,
+ ITEM_DEEP_SEA_SCALE,
+ ITEM_DEEP_SEA_TOOTH,
+ ITEM_MYSTIC_WATER,
+ ITEM_SHARP_BEAK,
+ ITEM_QUICK_CLAW,
+ ITEM_LEFTOVERS,
+ ITEM_RAWST_BERRY,
+ ITEM_LIGHT_BALL,
+ ITEM_POISON_BARB,
+ ITEM_NEVER_MELT_ICE,
+ ITEM_ASPEAR_BERRY,
+ ITEM_SPELL_TAG,
+ ITEM_BRIGHT_POWDER,
+ ITEM_LEPPA_BERRY,
+ ITEM_SCOPE_LENS,
+ ITEM_TWISTED_SPOON,
+ ITEM_METAL_COAT,
+ ITEM_MENTAL_HERB,
+ ITEM_CHARCOAL,
+ ITEM_PECHA_BERRY,
+ ITEM_SOFT_SAND,
+ ITEM_LUM_BERRY,
+ ITEM_DRAGON_SCALE,
+ ITEM_DRAGON_FANG,
+ ITEM_IAPAPA_BERRY,
+ ITEM_WIKI_BERRY,
+ ITEM_SEA_INCENSE,
+ ITEM_SHELL_BELL,
+ ITEM_SALAC_BERRY,
+ ITEM_LANSAT_BERRY,
+ ITEM_APICOT_BERRY,
+ ITEM_STARF_BERRY,
+ ITEM_LIECHI_BERRY,
+ ITEM_STICK,
+ ITEM_LAX_INCENSE,
+ ITEM_AGUAV_BERRY,
+ ITEM_FIGY_BERRY,
+ ITEM_THICK_CLUB,
+ ITEM_MAGO_BERRY,
+ ITEM_METAL_POWDER,
+ ITEM_PETAYA_BERRY,
+ ITEM_LUCKY_PUNCH,
+ ITEM_GANLON_BERRY
+};
+
+#include "data/battle_frontier/battle_frontier_trainer_mons.h"
+#include "data/battle_frontier/battle_frontier_trainers.h"
+#include "data/battle_frontier/battle_frontier_mons.h"
+
+const u8 gTowerMaleFacilityClasses[30] =
+{
+ FACILITY_CLASS_RUIN_MANIAC,
+ FACILITY_CLASS_TUBER_M,
+ FACILITY_CLASS_COOLTRAINER_M,
+ FACILITY_CLASS_RICH_BOY,
+ FACILITY_CLASS_POKEMANIAC,
+ FACILITY_CLASS_SWIMMER_M,
+ FACILITY_CLASS_BLACK_BELT,
+ FACILITY_CLASS_GUITARIST,
+ FACILITY_CLASS_KINDLER,
+ FACILITY_CLASS_CAMPER,
+ FACILITY_CLASS_BUG_MANIAC,
+ FACILITY_CLASS_PSYCHIC_M,
+ FACILITY_CLASS_GENTLEMAN,
+ FACILITY_CLASS_SCHOOL_KID_M,
+ FACILITY_CLASS_POKEFAN_M,
+ FACILITY_CLASS_EXPERT_M,
+ FACILITY_CLASS_YOUNGSTER,
+ FACILITY_CLASS_FISHERMAN,
+ FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ FACILITY_CLASS_DRAGON_TAMER,
+ FACILITY_CLASS_BIRD_KEEPER,
+ FACILITY_CLASS_NINJA_BOY,
+ FACILITY_CLASS_SAILOR,
+ FACILITY_CLASS_COLLECTOR,
+ FACILITY_CLASS_PKMN_BREEDER_M,
+ FACILITY_CLASS_PKMN_RANGER_M,
+ FACILITY_CLASS_BUG_CATCHER,
+ FACILITY_CLASS_HIKER
+};
+
+const u8 gTowerFemaleFacilityClasses[20] =
+{
+ FACILITY_CLASS_AROMA_LADY,
+ FACILITY_CLASS_TUBER_F,
+ FACILITY_CLASS_COOLTRAINER_F,
+ FACILITY_CLASS_HEX_MANIAC,
+ FACILITY_CLASS_LADY,
+ FACILITY_CLASS_BEAUTY,
+ FACILITY_CLASS_PSYCHIC_F,
+ FACILITY_CLASS_SCHOOL_KID_F,
+ FACILITY_CLASS_POKEFAN_F,
+ FACILITY_CLASS_EXPERT_F,
+ FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ FACILITY_CLASS_BATTLE_GIRL,
+ FACILITY_CLASS_PARASOL_LADY,
+ FACILITY_CLASS_SWIMMER_F,
+ FACILITY_CLASS_PICNICKER,
+ FACILITY_CLASS_POKEMON_BREEDER_F,
+ FACILITY_CLASS_PKMN_RANGER_F,
+ FACILITY_CLASS_LASS
+};
+
+const u8 gTowerMaleTrainerGfxIds[30] =
+{
+ EVENT_OBJ_GFX_HIKER,
+ EVENT_OBJ_GFX_TUBER_M,
+ EVENT_OBJ_GFX_MAN_3,
+ EVENT_OBJ_GFX_RICH_BOY,
+ EVENT_OBJ_GFX_MANIAC,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ EVENT_OBJ_GFX_BLACK_BELT,
+ EVENT_OBJ_GFX_MAN_5,
+ EVENT_OBJ_GFX_MAN_5,
+ EVENT_OBJ_GFX_CAMPER,
+ EVENT_OBJ_GFX_MANIAC,
+ EVENT_OBJ_GFX_PSYCHIC_M,
+ EVENT_OBJ_GFX_GENTLEMAN,
+ EVENT_OBJ_GFX_SCHOOL_KID_M,
+ EVENT_OBJ_GFX_POKEFAN_M,
+ EVENT_OBJ_GFX_EXPERT_M,
+ EVENT_OBJ_GFX_YOUNGSTER,
+ EVENT_OBJ_GFX_FISHERMAN,
+ EVENT_OBJ_GFX_CYCLING_TRIATHLETE_M,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ EVENT_OBJ_GFX_MAN_3,
+ EVENT_OBJ_GFX_MAN_5,
+ EVENT_OBJ_GFX_NINJA_BOY,
+ EVENT_OBJ_GFX_SAILOR,
+ EVENT_OBJ_GFX_MANIAC,
+ EVENT_OBJ_GFX_MAN_4,
+ EVENT_OBJ_GFX_CAMPER,
+ EVENT_OBJ_GFX_BUG_CATCHER,
+ EVENT_OBJ_GFX_HIKER
+};
+
+const u8 gTowerFemaleTrainerGfxIds[20] =
+{
+ EVENT_OBJ_GFX_WOMAN_2,
+ EVENT_OBJ_GFX_TUBER_F,
+ EVENT_OBJ_GFX_WOMAN_5,
+ EVENT_OBJ_GFX_HEX_MANIAC,
+ EVENT_OBJ_GFX_WOMAN_2,
+ EVENT_OBJ_GFX_BEAUTY,
+ EVENT_OBJ_GFX_LASS,
+ EVENT_OBJ_GFX_GIRL_3,
+ EVENT_OBJ_GFX_POKEFAN_F,
+ EVENT_OBJ_GFX_EXPERT_F,
+ EVENT_OBJ_GFX_CYCLING_TRIATHLETE_F,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ EVENT_OBJ_GFX_GIRL_3,
+ EVENT_OBJ_GFX_WOMAN_5,
+ EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ EVENT_OBJ_GFX_PICNICKER,
+ EVENT_OBJ_GFX_WOMAN_2,
+ EVENT_OBJ_GFX_PICNICKER,
+ EVENT_OBJ_GFX_LASS
+};
+
+static const u8 sRubyFacilityClassToEmerald[][2] =
+{
+ {0x00, FACILITY_CLASS_AQUA_LEADER_ARCHIE},
+ {0x01, FACILITY_CLASS_AQUA_GRUNT_M},
+ {0x02, FACILITY_CLASS_AQUA_GRUNT_F},
+ {0x03, FACILITY_CLASS_AROMA_LADY},
+ {0x04, FACILITY_CLASS_RUIN_MANIAC},
+ {0x05, FACILITY_CLASS_INTERVIEWER},
+ {0x06, FACILITY_CLASS_TUBER_F},
+ {0x07, FACILITY_CLASS_TUBER_M},
+ {0x08, FACILITY_CLASS_COOLTRAINER_M},
+ {0x09, FACILITY_CLASS_COOLTRAINER_F},
+ {0x0a, FACILITY_CLASS_HEX_MANIAC},
+ {0x0b, FACILITY_CLASS_LADY},
+ {0x0c, FACILITY_CLASS_BEAUTY},
+ {0x0d, FACILITY_CLASS_RICH_BOY},
+ {0x0e, FACILITY_CLASS_POKEMANIAC},
+ {0x0f, FACILITY_CLASS_SWIMMER_M},
+ {0x10, FACILITY_CLASS_BLACK_BELT},
+ {0x11, FACILITY_CLASS_GUITARIST},
+ {0x12, FACILITY_CLASS_KINDLER},
+ {0x13, FACILITY_CLASS_CAMPER},
+ {0x14, FACILITY_CLASS_BUG_MANIAC},
+ {0x15, FACILITY_CLASS_PSYCHIC_M},
+ {0x16, FACILITY_CLASS_PSYCHIC_F},
+ {0x17, FACILITY_CLASS_GENTLEMAN},
+ {0x18, FACILITY_CLASS_ELITE_FOUR_SIDNEY},
+ {0x19, FACILITY_CLASS_ELITE_FOUR_PHOEBE},
+ {0x1a, FACILITY_CLASS_LEADER_ROXANNE},
+ {0x1b, FACILITY_CLASS_LEADER_BRAWLY},
+ {0x1c, FACILITY_CLASS_LEADER_TATE_AND_LIZA},
+ {0x1d, FACILITY_CLASS_SCHOOL_KID_M},
+ {0x1e, FACILITY_CLASS_SCHOOL_KID_F},
+ {0x1f, FACILITY_CLASS_SR_AND_JR},
+ {0x20, FACILITY_CLASS_POKEFAN_M},
+ {0x21, FACILITY_CLASS_POKEFAN_F},
+ {0x22, FACILITY_CLASS_EXPERT_M},
+ {0x23, FACILITY_CLASS_EXPERT_F},
+ {0x24, FACILITY_CLASS_YOUNGSTER},
+ {0x25, FACILITY_CLASS_CHAMPION_WALLACE},
+ {0x26, FACILITY_CLASS_FISHERMAN},
+ {0x27, FACILITY_CLASS_CYCLING_TRIATHLETE_M},
+ {0x28, FACILITY_CLASS_CYCLING_TRIATHLETE_F},
+ {0x29, FACILITY_CLASS_RUNNING_TRIATHLETE_M},
+ {0x2a, FACILITY_CLASS_RUNNING_TRIATHLETE_F},
+ {0x2b, FACILITY_CLASS_SWIMMING_TRIATHLETE_M},
+ {0x2c, FACILITY_CLASS_SWIMMING_TRIATHLETE_F},
+ {0x2d, FACILITY_CLASS_DRAGON_TAMER},
+ {0x2e, FACILITY_CLASS_BIRD_KEEPER},
+ {0x2f, FACILITY_CLASS_NINJA_BOY},
+ {0x30, FACILITY_CLASS_BATTLE_GIRL},
+ {0x31, FACILITY_CLASS_PARASOL_LADY},
+ {0x32, FACILITY_CLASS_SWIMMER_F},
+ {0x33, FACILITY_CLASS_PICNICKER},
+ {0x34, FACILITY_CLASS_TWINS},
+ {0x35, FACILITY_CLASS_SAILOR},
+ {0x38, FACILITY_CLASS_COLLECTOR},
+ {0x39, FACILITY_CLASS_WALLY},
+ {0x3a, FACILITY_CLASS_BRENDAN},
+ {0x3b, FACILITY_CLASS_BRENDAN_2},
+ {0x3c, FACILITY_CLASS_BRENDAN_3},
+ {0x3d, FACILITY_CLASS_MAY},
+ {0x3e, FACILITY_CLASS_MAY_2},
+ {0x3f, FACILITY_CLASS_MAY_3},
+ {0x40, FACILITY_CLASS_PKMN_BREEDER_M},
+ {0x41, FACILITY_CLASS_POKEMON_BREEDER_F},
+ {0x42, FACILITY_CLASS_PKMN_RANGER_M},
+ {0x43, FACILITY_CLASS_PKMN_RANGER_F},
+ {0x44, FACILITY_CLASS_MAGMA_LEADER_MAXIE},
+ {0x45, FACILITY_CLASS_MAGMA_GRUNT_M},
+ {0x46, FACILITY_CLASS_MAGMA_GRUNT_F},
+ {0x47, FACILITY_CLASS_LASS},
+ {0x48, FACILITY_CLASS_BUG_CATCHER},
+ {0x49, FACILITY_CLASS_HIKER},
+ {0x4a, FACILITY_CLASS_YOUNG_COUPLE},
+ {0x4b, FACILITY_CLASS_OLD_COUPLE},
+ {0x4c, FACILITY_CLASS_SIS_AND_BRO},
+};
+
+static const u8 *const gUnknown_085DCFD8[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244383,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2443E7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244413,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24444B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2444D6
+};
+
+static const u8 *const gUnknown_085DCFEC[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2444EF,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24451E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244549,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24459B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2445C5
+};
+
+static const u8 *const gUnknown_085DD000[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2445E8,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244618,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244643,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24468F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2446B4
+};
+
+static const u8 *const gUnknown_085DD014[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2446E5,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24474D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24479E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24480C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2448A7
+};
+
+static const u8 *const gUnknown_085DD028[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2448CD,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2448F5,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244939,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244989,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2449E6
+};
+
+static const u8 *const gUnknown_085DD03C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244A23,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244AA9,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244AD6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244B52,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244B93
+};
+
+static const u8 *const gUnknown_085DD050[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244BD2,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244C18,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244C6E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244CD6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244D07
+};
+
+static const u8 *const gUnknown_085DD064[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244D36,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244D82,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244DC6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244DFE,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244E5B
+};
+
+static const u8 *const gUnknown_085DD078[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244E7E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244ECA,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244EF4,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244F4F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244F98
+};
+
+static const u8 *const gUnknown_085DD08C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_244FD3,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245013,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24503D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245087,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2450C0
+};
+
+static const u8 *const gUnknown_085DD0A0[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2450E6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245196,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2451BD,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24522F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24529A
+};
+
+static const u8 *const gUnknown_085DD0B4[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2452EF,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2453B4,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245406,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245464,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2454A3
+};
+
+static const u8 *const gUnknown_085DD0C8[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2454D6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245535,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24555F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2455EC,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245656
+};
+
+static const u8 *const gUnknown_085DD0DC[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24568A,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2456F5,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245740,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2457D9,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24581F
+};
+
+static const u8 *const gUnknown_085DD0F0[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245851,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24589C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2458CE,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245923,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24597F
+};
+
+static const u8 *const gUnknown_085DD104[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2459BE,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2459F7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245A5F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245AB4,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245B3E
+};
+
+static const u8 *const gUnknown_085DD118[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245B79,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245B91,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245BBD,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245C05,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245C2D
+};
+
+static const u8 *const gUnknown_085DD12C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245C66,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245C7F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245CAC,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245CE6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245D07
+};
+
+static const u8 *const gUnknown_085DD140[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245D4B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245D60,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245D8D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245DC7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245DF0
+};
+
+static const u8 *const gUnknown_085DD154[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245E20,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245E41,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245E78,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245EBD,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245EEC
+};
+
+static const u8 *const gUnknown_085DD168[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245F2B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245F58,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245F87,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_245FC6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246002
+};
+
+static const u8 *const gUnknown_085DD17C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246020,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246051,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246082,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2460D5,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24610D
+};
+
+static const u8 *const gUnknown_085DD190[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24614A,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24615D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24617D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2461C7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2461F5
+};
+
+static const u8 *const gUnknown_085DD1A4[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24622A,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246244,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24626E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2462AA,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2462E4
+};
+
+static const u8 *const gUnknown_085DD1B8[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24631F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24633C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24636B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2463C5,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2463FF
+};
+
+static const u8 *const gUnknown_085DD1CC[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246449,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246478,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2464EE,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246529
+};
+
+static const u8 *const gUnknown_085DD1E0[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246571,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24658C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2465B5,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246605,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24662A
+};
+
+static const u8 *const gUnknown_085DD1F4[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246662,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246686,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2466B4,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2466E6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24670A
+};
+
+static const u8 *const gUnknown_085DD208[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246741,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246760,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246791,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2467C4,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2467E6
+};
+
+static const u8 *const gUnknown_085DD21C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2467FF,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246831,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246864,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2468A7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2468FE
+};
+
+static const u8 *const gUnknown_085DD230[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24692B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24694B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24697C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2469B4,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2469F1
+};
+
+static const u8 *const gUnknown_085DD244[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246A22,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246A4E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246A85,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246AF7
+};
+
+static const u8 *const gUnknown_085DD258[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246B2B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246B3F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246B6B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246BB2,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246BE9
+};
+
+static const u8 *const gUnknown_085DD26C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246C22,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246C35,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246C6C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246CB3,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246CE9
+};
+
+static const u8 *const gUnknown_085DD280[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246D2D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246D3F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246D6A,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246D9E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246DD3
+};
+
+static const u8 *const gUnknown_085DD294[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246E1A,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246E39,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246E64,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246EB6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246EEE
+};
+
+static const u8 *const gUnknown_085DD2A8[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246F21,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246F4C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246F7B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_246FCC,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247013
+};
+
+static const u8 *const gUnknown_085DD2BC[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24705B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24707D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2470B2,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2470FD,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24712A
+};
+
+static const u8 *const gUnknown_085DD2D0[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24716C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24718D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2471C7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2471FB,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247238
+};
+
+static const u8 *const gUnknown_085DD2E4[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247268,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247291,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2472C7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247313,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247348
+};
+
+static const u8 *const gUnknown_085DD2F8[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24737A,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24738F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2473C6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2473FB,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247438
+};
+
+static const u8 *const gUnknown_085DD30C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247470,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247484,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2474AF,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2474EC,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24751D
+};
+
+static const u8 *const gUnknown_085DD320[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24754A,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24755C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24758B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2475BC,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2475D5
+};
+
+static const u8 *const gUnknown_085DD334[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24760D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247629,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247655,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24769B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2476ED
+};
+
+static const u8 *const gUnknown_085DD348[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247724,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247749,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24777A,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2477CE,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247807
+};
+
+static const u8 *const gUnknown_085DD35C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247838,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247854,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247889,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2478DD,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24790D
+};
+
+static const u8 *const gUnknown_085DD370[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247942,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24795F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247991,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247A18
+};
+
+static const u8 *const gUnknown_085DD384[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247A51,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247A76,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247AA1,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247AE3,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247B16
+};
+
+static const u8 *const gUnknown_085DD398[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247B3E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247B62,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247B9B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247BE7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247C23
+};
+
+static const u8 *const gUnknown_085DD3AC[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247C4E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247C8C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247CB2,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247D07,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247D4E
+};
+
+static const u8 *const gUnknown_085DD3C0[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247D97,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247DC7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247DFE,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247E3E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247E7E
+};
+
+static const u8 *const gUnknown_085DD3D4[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247EA1,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247EB5,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247EE9,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247F3F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247F6D
+};
+
+static const u8 *const gUnknown_085DD3E8[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247FA3,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247FB7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_247FE9,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248031,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24805E
+};
+
+static const u8 *const gUnknown_085DD3FC[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24808D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2480AB,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2480DC,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248128,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248151
+};
+
+static const u8 *const gUnknown_085DD410[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24818E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2481A9,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2481E1,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248221,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24824F
+};
+
+static const u8 *const gUnknown_085DD424[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248297,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2482B1,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2482DC,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248321,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24833D
+};
+
+static const u8 *const gUnknown_085DD438[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248369,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24838D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2483C1,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248401,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248431
+};
+
+static const u8 *const gUnknown_085DD44C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248467,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248477,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2484AC,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2484E7,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248517
+};
+
+static const u8 *const gUnknown_085DD460[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248553,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24856A,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24857D,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2485E5,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248614
+};
+
+static const u8 *const gUnknown_085DD474[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24864E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248661,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248671,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2486C6,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2486FF
+};
+
+static const u8 *const gUnknown_085DD488[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248725,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248751,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248781,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2487C9,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2487F7
+};
+
+static const u8 *const gUnknown_085DD49C[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248829,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24885B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248892,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2488D8,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248908
+};
+
+static const u8 *const gUnknown_085DD4B0[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24894B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24895F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_24896F,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2489BD,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_2489E7
+};
+
+static const u8 *const gUnknown_085DD4C4[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248A10,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248A40,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248A72,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248AC0,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248AEB
+};
+
+static const u8 *const gUnknown_085DD4D8[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248B22,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248B39,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248B4C,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248BB4,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248BEE
+};
+
+static const u8 *const gUnknown_085DD4EC[] =
+{
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248C2E,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248C5B,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248C90,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248CCF,
+ BattleFrontier_BattleTowerMultiBattleRoom_Text_248D04
+};
+
+struct
+{
+ u32 facilityClass;
+ const u8 *const *strings;
+} const gUnknown_085DD500[] =
+{
+ {FACILITY_CLASS_LASS, gUnknown_085DD118},
+ {FACILITY_CLASS_YOUNGSTER, gUnknown_085DD12C},
+ {FACILITY_CLASS_HIKER, gUnknown_085DD140},
+ {FACILITY_CLASS_BEAUTY, gUnknown_085DD154},
+ {FACILITY_CLASS_FISHERMAN, gUnknown_085DD168},
+ {FACILITY_CLASS_LADY, gUnknown_085DD17C},
+ {FACILITY_CLASS_CYCLING_TRIATHLETE_F, gUnknown_085DD190},
+ {FACILITY_CLASS_BUG_CATCHER, gUnknown_085DD1A4},
+ {FACILITY_CLASS_SCHOOL_KID_M, gUnknown_085DD1B8},
+ {FACILITY_CLASS_RICH_BOY, gUnknown_085DD1CC},
+ {FACILITY_CLASS_BLACK_BELT, gUnknown_085DD1E0},
+ {FACILITY_CLASS_TUBER_F, gUnknown_085DD1F4},
+ {FACILITY_CLASS_HEX_MANIAC, gUnknown_085DD208},
+ {FACILITY_CLASS_PKMN_BREEDER_M, gUnknown_085DD21C},
+ {FACILITY_CLASS_RUNNING_TRIATHLETE_F, gUnknown_085DD230},
+ {FACILITY_CLASS_RUNNING_TRIATHLETE_M, gUnknown_085DD244},
+ {FACILITY_CLASS_BATTLE_GIRL, gUnknown_085DD258},
+ {FACILITY_CLASS_CYCLING_TRIATHLETE_M, gUnknown_085DD26C},
+ {FACILITY_CLASS_TUBER_M, gUnknown_085DD280},
+ {FACILITY_CLASS_GUITARIST, gUnknown_085DD294},
+ {FACILITY_CLASS_GENTLEMAN, gUnknown_085DD2A8},
+ {FACILITY_CLASS_POKEFAN_M, gUnknown_085DD2BC},
+ {FACILITY_CLASS_EXPERT_M, gUnknown_085DD2D0},
+ {FACILITY_CLASS_EXPERT_F, gUnknown_085DD2E4},
+ {FACILITY_CLASS_DRAGON_TAMER, gUnknown_085DD2F8},
+ {FACILITY_CLASS_BIRD_KEEPER, gUnknown_085DD30C},
+ {FACILITY_CLASS_NINJA_BOY, gUnknown_085DD320},
+ {FACILITY_CLASS_PARASOL_LADY, gUnknown_085DD334},
+ {FACILITY_CLASS_BUG_MANIAC, gUnknown_085DD348},
+ {FACILITY_CLASS_SAILOR, gUnknown_085DD35C},
+ {FACILITY_CLASS_COLLECTOR, gUnknown_085DD370},
+ {FACILITY_CLASS_PKMN_RANGER_M, gUnknown_085DD384},
+ {FACILITY_CLASS_PKMN_RANGER_F, gUnknown_085DD398},
+ {FACILITY_CLASS_AROMA_LADY, gUnknown_085DD3AC},
+ {FACILITY_CLASS_RUIN_MANIAC, gUnknown_085DD3C0},
+ {FACILITY_CLASS_COOLTRAINER_M, gUnknown_085DD3D4},
+ {FACILITY_CLASS_COOLTRAINER_F, gUnknown_085DD3E8},
+ {FACILITY_CLASS_POKEMANIAC, gUnknown_085DD3FC},
+ {FACILITY_CLASS_KINDLER, gUnknown_085DD410},
+ {FACILITY_CLASS_CAMPER, gUnknown_085DD424},
+ {FACILITY_CLASS_PICNICKER, gUnknown_085DD438},
+ {FACILITY_CLASS_PSYCHIC_M, gUnknown_085DD44C},
+ {FACILITY_CLASS_PSYCHIC_F, gUnknown_085DD460},
+ {FACILITY_CLASS_SCHOOL_KID_F, gUnknown_085DD474},
+ {FACILITY_CLASS_POKEMON_BREEDER_F, gUnknown_085DD488},
+ {FACILITY_CLASS_POKEFAN_F, gUnknown_085DD49C},
+ {FACILITY_CLASS_SWIMMER_F, gUnknown_085DD4B0},
+ {FACILITY_CLASS_SWIMMING_TRIATHLETE_M, gUnknown_085DD4C4},
+ {FACILITY_CLASS_SWIMMING_TRIATHLETE_F, gUnknown_085DD4D8},
+ {FACILITY_CLASS_SWIMMER_M, gUnknown_085DD4EC}
+};
+
+static const u8 *const *const gUnknown_085DD690[] =
+{
+ gUnknown_085DCFD8,
+ gUnknown_085DCFEC,
+ gUnknown_085DD000,
+ gUnknown_085DD014,
+ gUnknown_085DD028,
+ gUnknown_085DD03C,
+ gUnknown_085DD050,
+ gUnknown_085DD064,
+ gUnknown_085DD078,
+ gUnknown_085DD08C,
+ gUnknown_085DD0A0,
+ gUnknown_085DD0B4,
+ gUnknown_085DD0C8,
+ gUnknown_085DD0DC,
+ gUnknown_085DD0F0,
+ gUnknown_085DD104
+};
+
+struct
+{
+ u16 species;
+ u8 fixedIV;
+ u8 level;
+ u8 nature;
+ u8 evs[6];
+ u16 moves[4];
+} const sStevenMons[3] =
+{
+ {
+ .species = SPECIES_METANG,
+ .fixedIV = 31,
+ .level = 42,
+ .nature = NATURE_BRAVE,
+ .evs = {0, 252, 252, 0, 6, 0},
+ .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW}
+ },
+ {
+ .species = SPECIES_SKARMORY,
+ .fixedIV = 31,
+ .level = 43,
+ .nature = NATURE_IMPISH,
+ .evs = {252, 0, 0, 0, 6, 252},
+ .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING}
+ },
+ {
+ .species = SPECIES_AGGRON,
+ .fixedIV = 31,
+ .level = 44,
+ .nature = NATURE_ADAMANT,
+ .evs = {0, 252, 0, 0, 252, 6},
+ .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW}
+ }
+};
+
+#include "data/battle_frontier/battle_tent.h"
+
static void (* const gUnknown_085DF96C[])(void) =
{
sub_8161F94,
@@ -1197,7 +2147,7 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId)
void FrontierSpeechToString(const u16 *words)
{
ConvertEasyChatWordsToString(gStringVar4, words, 3, 2);
- if (GetStringWidth(1, gStringVar4, -1) > 204)
+ if (GetStringWidth(1, gStringVar4, -1) > 204u)
{
s32 i = 0;
@@ -2295,7 +3245,7 @@ static void FillPartnerParty(u16 trainerId)
for (i = 0; i < 2; i++)
{
struct EmeraldBattleTowerRecord *record = &gSaveBlock2Ptr->frontier.towerRecords[trainerId];
- struct UnknownPokemonStruct monData = record->party[gSaveBlock2Ptr->frontier.field_CB4[18 + i]];
+ struct BattleTowerPokemon monData = record->party[gSaveBlock2Ptr->frontier.field_CB4[18 + i]];
StringCopy(trainerName, record->name);
if (record->language == LANGUAGE_JAPANESE)
{
@@ -2347,12 +3297,13 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em
{
dst->lvlMode = src->lvlMode;
dst->winStreak = src->winStreak;
- for (i = 0; i < (signed) ARRAY_COUNT(sRubyFacilityClassToEmerald); i++)
+ // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
+ for (i = 0; i < FACILITY_CLASSES_COUNT; i++)
{
if (sRubyFacilityClassToEmerald[i][0] == src->facilityClass)
break;
}
- if (i != ARRAY_COUNT(sRubyFacilityClassToEmerald))
+ if (i != FACILITY_CLASSES_COUNT)
dst->facilityClass = sRubyFacilityClassToEmerald[i][1];
else
dst->facilityClass = FACILITY_CLASS_YOUNGSTER;
@@ -2395,12 +3346,13 @@ bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, stru
{
dst->lvlMode = src->lvlMode;
dst->winStreak = src->winStreak;
- for (i = 0; i < (signed) ARRAY_COUNT(sRubyFacilityClassToEmerald); i++)
+ // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
+ for (i = 0; i < FACILITY_CLASSES_COUNT; i++)
{
if (sRubyFacilityClassToEmerald[i][1] == src->facilityClass)
break;
}
- if (i != ARRAY_COUNT(sRubyFacilityClassToEmerald))
+ if (i != FACILITY_CLASSES_COUNT)
dst->facilityClass = sRubyFacilityClassToEmerald[i][0];
else
dst->facilityClass = 0x24; // FACILITY_CLASS_YOUNGSTER in Ruby/Sapphire.
diff --git a/src/battle_transition.c b/src/battle_transition.c
index f74102467..37a8cd63f 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -59,7 +59,7 @@ typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite);
extern const struct OamData gEventObjectBaseOam_32x32;
-extern void sub_80AC3D0(void);
+extern void SetWeatherScreenFadeOut(void);
// this file's functions
static void LaunchBattleTransitionTask(u8 transitionId);
@@ -981,7 +981,7 @@ static void Task_BattleTransitionMain(u8 taskId)
static bool8 Transition_Phase1(struct Task *task)
{
- sub_80AC3D0();
+ SetWeatherScreenFadeOut();
CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
if (sPhase1_Tasks[task->tTransitionId] != NULL)
{
diff --git a/src/battle_util.c b/src/battle_util.c
index 4c9ef75d9..2ddd4f550 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -17,13 +17,13 @@
#include "string_util.h"
#include "battle_message.h"
#include "constants/battle_string_ids.h"
+#include "constants/weather.h"
#include "battle_ai_script_commands.h"
#include "battle_controllers.h"
#include "event_data.h"
#include "link.h"
#include "berry.h"
-
-extern u8 weather_get_current(void);
+#include "field_weather.h"
// rom const data
static const u16 sSoundMovesTable[] =
@@ -1827,11 +1827,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
case ABILITYEFFECT_SWITCH_IN_WEATHER:
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
{
- switch (weather_get_current())
+ switch (GetCurrentWeather())
{
- case 3:
- case 5:
- case 13:
+ case WEATHER_RAIN_LIGHT:
+ case WEATHER_RAIN_MED:
+ case WEATHER_RAIN_HEAVY:
if (!(gBattleWeather & WEATHER_RAIN_ANY))
{
gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT);
@@ -1840,7 +1840,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
effect++;
}
break;
- case 8:
+ case WEATHER_SANDSTORM:
if (!(gBattleWeather & WEATHER_SANDSTORM_ANY))
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
@@ -1849,7 +1849,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
effect++;
}
break;
- case 12:
+ case WEATHER_DROUGHT:
if (!(gBattleWeather & WEATHER_SUN_ANY))
{
gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
@@ -1862,7 +1862,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
}
if (effect)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current();
+ gBattleCommunication[MULTISTRING_CHOOSER] = GetCurrentWeather();
BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts);
}
break;
diff --git a/src/battle_util2.c b/src/battle_util2.c
index a9891814c..70c722298 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -42,7 +42,7 @@ void AllocateBattleResources(void)
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
{
- u16 currSecretBaseId = VarGet(VAR_0x4054);
+ u16 currSecretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
CreateSecretBaseEnemyParty(&gSaveBlock1Ptr->secretBases[currSecretBaseId]);
}
}
diff --git a/src/birch_pc.c b/src/birch_pc.c
index 3148832be..5179b1920 100644
--- a/src/birch_pc.c
+++ b/src/birch_pc.c
@@ -66,20 +66,20 @@ const u8 *GetPokedexRatingText(u16 count)
return gBirchDexRatingText_LessThan200;
if (count == 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.
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), FLAG_GET_CAUGHT)
+ || GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), FLAG_GET_CAUGHT)) // 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 (count == HOENN_DEX_COUNT - 1)
{
- 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.
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), FLAG_GET_CAUGHT)
+ && GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), FLAG_GET_CAUGHT)) // If both of these flags are enabled, it means the actual count is less than 200.
return gBirchDexRatingText_LessThan200;
return gBirchDexRatingText_DexCompleted;
}
- if (count == 202)
- return gBirchDexRatingText_DexCompleted; // Hoenn dex is considered complete, even though the hoenn dex count is 210.
+ if (count == HOENN_DEX_COUNT)
+ return gBirchDexRatingText_DexCompleted;
return gBirchDexRatingText_LessThan10;
}
diff --git a/src/blit.c b/src/blit.c
index b4d5f7de5..26a63fe9b 100644
--- a/src/blit.c
+++ b/src/blit.c
@@ -1,12 +1,12 @@
#include "global.h"
#include "blit.h"
-void BlitBitmapRect4BitWithoutColorKey(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height)
+void BlitBitmapRect4BitWithoutColorKey(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height)
{
BlitBitmapRect4Bit(src, dst, srcX, srcY, dstX, dstY, width, height, 0xFF);
}
-void BlitBitmapRect4Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey)
+void BlitBitmapRect4Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey)
{
s32 xEnd;
s32 yEnd;
@@ -14,7 +14,7 @@ void BlitBitmapRect4Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 sr
s32 multiplierDstY;
s32 loopSrcY, loopDstY;
s32 loopSrcX, loopDstX;
- u8 *pixelsSrc;
+ const u8 *pixelsSrc;
u8 *pixelsDst;
s32 toOrr;
s32 toAnd;
@@ -103,7 +103,7 @@ void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 hei
}
}
-void BlitBitmapRect4BitTo8Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset)
+void BlitBitmapRect4BitTo8Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset)
{
s32 palOffsetBits;
s32 xEnd;
@@ -112,7 +112,7 @@ void BlitBitmapRect4BitTo8Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX,
s32 multiplierDstY;
s32 loopSrcY, loopDstY;
s32 loopSrcX, loopDstX;
- u8 *pixelsSrc;
+ const u8 *pixelsSrc;
u8 *pixelsDst;
s32 colorKeyBits;
diff --git a/src/bug.c b/src/bug.c
index 59b31b37d..31d1a9740 100644
--- a/src/bug.c
+++ b/src/bug.c
@@ -252,7 +252,7 @@ void sub_81104E4(struct Sprite *sprite)
if (IsContest())
gBattleAnimArgs[2] /= 2;
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
@@ -274,7 +274,7 @@ void sub_81104E4(struct Sprite *sprite)
static void sub_811057C(struct Sprite *sprite)
{
- if (TranslateAnimLinear(sprite))
+ if (AnimTranslateLinear(sprite))
{
DestroyAnimSprite(sprite);
return;
@@ -389,13 +389,13 @@ void AnimTranslateStinger(struct Sprite *sprite)
}
}
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
rot += 0xC000;
- sub_80A73E0(sprite, FALSE, 0x100, 0x100, rot);
+ TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot);
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = lVarX;
@@ -414,7 +414,7 @@ void AnimTranslateStinger(struct Sprite *sprite)
// arg 5: wave amplitude
void AnimMissileArc(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
if (GetBattlerSide(gBattleAnimAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
@@ -458,7 +458,7 @@ static void AnimMissileArcStep(struct Sprite *sprite)
u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
sprite->pos1.y + sprite->pos2.y - y2);
rotation += 0xC000;
- sub_80A73E0(sprite, FALSE, 0x100, 0x100, rotation);
+ TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation);
for (i = 0; i < 8; i++)
data[i] = tempData[i];
@@ -479,6 +479,6 @@ void sub_8110994(struct Sprite *sprite)
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
}
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
- sprite->callback = sub_80A67BC;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
}
diff --git a/src/cable_car.c b/src/cable_car.c
new file mode 100755
index 000000000..207a0c22d
--- /dev/null
+++ b/src/cable_car.c
@@ -0,0 +1,1006 @@
+#include "global.h"
+#include "bg.h"
+#include "decompress.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "field_weather.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "alloc.h"
+#include "main.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "random.h"
+#include "scanline_effect.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "constants/event_objects.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/weather.h"
+
+struct CableCar
+{
+ u8 taskId;
+ u8 state;
+ u8 weather;
+ u16 unk4;
+ u16 timer;
+ u8 bg0HorizontalOffset;
+ u8 bg0VerticalOffset;
+ u8 fillerA[0x2];
+ u8 bg1HorizontalOffset;
+ u8 bg1VerticalOffset;
+ u8 fillerE[0x6];
+ u8 bg3HorizontalOffset;
+ u8 bg3VerticalOffset;
+ u8 filler16[0x2];
+ u8 unk18;
+ u8 unk19;
+ u8 unk1A;
+ u8 unk1B;
+ u8 unk1C;
+ u8 unk1D;
+ u8 unk1E;
+ u8 unk1F;
+ u8 unk20;
+ u16 unk22[9][12];
+ u8 fillerFA[0x2];
+ /*0x00FC*/ u16 bgTilemapBuffers[4][0x800];
+ /*0x40FC*/ u16 *mtChimneyTilemap;
+ /*0x4100*/ u16 *treeTilemap;
+ /*0x4104*/ u16 *mountainTilemap;
+ /*0x4108*/ const u16 *pylonHookTilemapEntries;
+ /*0x410C*/ u8 *pylonStemTilemap;
+};
+
+static EWRAM_DATA struct CableCar *sCableCar = NULL;
+EWRAM_DATA u8 gUnknown_0203ABB0 = 0;
+EWRAM_DATA u8 gUnknown_0203ABB1 = 0;
+EWRAM_DATA u8 gUnknown_0203ABB2 = 0;
+EWRAM_DATA u8 gUnknown_0203ABB3 = 0;
+EWRAM_DATA u8 gUnknown_0203ABB4 = 0;
+EWRAM_DATA u8 gUnknown_0203ABB5 = 0;
+
+static void CableCarMainCallback_Setup(void);
+static void sub_8150B6C(u8);
+static void LoadCableCarSprites(void);
+static void sub_81514C8(u8);
+static void sub_81503E4(u8);
+static void sub_8150550(u8);
+static void sub_8150664(u8);
+static void CableCarVblankCallback(void);
+static void CableCarMainCallback_Run(void);
+static void sub_815115C(void);
+static void sub_81511B8(void);
+static void sub_8150868(struct Sprite *);
+static void nullsub_58(struct Sprite *);
+static void sub_8151214(void);
+static void sub_8151388(void);
+
+const struct BgTemplate gCableCarBgTemplates[4] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+};
+
+const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz");
+const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz");
+const u8 gCableCarMountainTilemap[] = INCBIN_U8("graphics/misc/cable_car_mountain_map.bin.lz");
+
+const u16 gCableCarPylonHookTilemapEntries[] = {
+ 0x3000,
+ 0x3001,
+ 0x3002,
+ 0x3003,
+ 0x3004,
+ 0x3005,
+ 0x3006,
+ 0x3007,
+ 0x3008,
+ 0x3009,
+};
+
+const u8 gCableCarPylonStemTilemap[] = INCBIN_U8("graphics/misc/cable_car_pylon_stem_map.bin.lz");
+
+const struct CompressedSpriteSheet gUnknown_085CDB54[] = {
+ { gCableCar_Gfx, 0x800, 1 },
+ { gCableCarDoor_Gfx, 0x40, 2 },
+ { gCableCarCord_Gfx, 0x80, 3 },
+ { },
+};
+
+const struct SpritePalette gUnknown_085CDB74[] = {
+ { gCableCar_Pal, 1 },
+ { }
+};
+
+const struct OamData gOamData_85CDB84 = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .size = 3,
+ .priority = 2
+};
+
+const struct OamData gOamData_85CDB8C = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .shape = ST_OAM_H_RECTANGLE,
+ .priority = 2
+};
+
+const struct OamData gOamData_85CDB94 = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .size = 1,
+ .priority = 2
+};
+
+const struct SpriteTemplate gSpriteTemplate_85CDB9C[] =
+{
+ {
+ .tileTag = 1,
+ .paletteTag = 1,
+ .oam = &gOamData_85CDB84,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8150868,
+ },
+ {
+ .tileTag = 2,
+ .paletteTag = 1,
+ .oam = &gOamData_85CDB8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8150868,
+ },
+};
+
+const struct SpriteTemplate gSpriteTemplate_85CDBCC = {
+ .tileTag = 3,
+ .paletteTag = 1,
+ .oam = &gOamData_85CDB94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_58,
+};
+
+static void CableCarTask1(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CableCarMainCallback_Setup);
+ DestroyTask(taskId);
+ }
+}
+
+void CableCar(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(CableCarTask1, 1);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+}
+
+static void CableCarMainCallback_Setup(void)
+{
+ u16 imebak;
+ u8 i = 0;
+ int sizeOut = 0;
+
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ sub_8150B6C(0);
+ ScanlineEffect_Stop();
+ DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
+ DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE);
+ sCableCar = AllocZeroed(sizeof(*sCableCar));
+ gMain.state++;
+ break;
+ case 1:
+ ResetSpriteData();
+ ResetTasks();
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ reset_temp_tile_data_buffers();
+ StartWeather();
+ for (i = 0; i < 20; i++)
+ gWeatherPtr->sprites.s2.ashSprites[i] = NULL;
+
+ InitMapMusic();
+ ResetMapMusic();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gCableCarBgTemplates, ARRAY_COUNT(gCableCarBgTemplates));
+ SetBgTilemapBuffer(0, sCableCar->bgTilemapBuffers[0]);
+ SetBgTilemapBuffer(1, sCableCar->bgTilemapBuffers[1]);
+ SetBgTilemapBuffer(2, sCableCar->bgTilemapBuffers[2]);
+ SetBgTilemapBuffer(3, sCableCar->bgTilemapBuffers[3]);
+ gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0;
+ gMain.state++;
+ break;
+ case 2:
+ for (i = 0; i < 3; i++)
+ LoadCompressedSpriteSheet(&gUnknown_085CDB54[i]);
+
+ LoadSpritePalettes(gUnknown_085CDB74);
+ sCableCar->mtChimneyTilemap = malloc_and_decompress(gCableCarMtChimneyTilemap, &sizeOut);
+ sCableCar->treeTilemap = malloc_and_decompress(gCableCarTreeTilemap, &sizeOut);
+ sCableCar->mountainTilemap = malloc_and_decompress(gCableCarMountainTilemap, &sizeOut);
+ sCableCar->pylonStemTilemap = malloc_and_decompress(gCableCarPylonStemTilemap, &sizeOut);
+ sCableCar->pylonHookTilemapEntries = gCableCarPylonHookTilemapEntries;
+ decompress_and_copy_tile_data_to_vram(0, gUnknown_08DBA5B8, 0, 0, 0);
+ gMain.state++;
+ break;
+ case 3:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ LoadPalette(gUnknown_08DBA518, 0, 0x80);
+ gMain.state++;
+ }
+ break;
+ case 4:
+ LoadCableCarSprites();
+ RunTasks();
+ gMain.state++;
+ break;
+ case 5:
+ if (sCableCar->weather == WEATHER_ASH)
+ {
+ gMain.state++;
+ }
+ else if (gWeatherPtr->sprites.s2.ashSprites[0])
+ {
+ for (i = 0; i < 20; i++)
+ {
+ if (gWeatherPtr->sprites.s2.ashSprites[i])
+ gWeatherPtr->sprites.s2.ashSprites[i]->oam.priority = 0;
+ }
+
+ gMain.state++;
+ }
+ break;
+ case 6:
+ CopyToBgTilemapBufferRect_ChangePalette(1, sCableCar->treeTilemap, 0, 17, 32, 15, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(2, sCableCar->mountainTilemap, 0, 0, 30, 20, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonHookTilemapEntries, 0, 0, 5, 2, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonStemTilemap, 0, 2, 2, 20, 17);
+ gMain.state++;
+ break;
+ case 7:
+ sub_81514C8(gSpecialVar_0x8004);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x48, 0, 14, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x6C, 12, 17, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x90, 24, 20, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x0, 0, 17, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x24, 0, 20, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x0, 12, 20, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x24, 12, 23, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x0, 24, 23, 12, 3, 17);
+ gMain.state++;
+ break;
+ case 8:
+ BeginNormalPaletteFade(0xFFFFFFFF, 3, 16, 0, RGB(0, 0, 0));
+ FadeInNewBGM(MUS_ROPEWAY, 1);
+ sub_8150B6C(1);
+ gMain.state++;
+ break;
+ case 9:
+ imebak = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = imebak;
+ SetVBlankCallback(CableCarVblankCallback);
+ SetMainCallback2(CableCarMainCallback_Run);
+ CreateTask(sub_81503E4, 0);
+ if (gSpecialVar_0x8004 == 0)
+ sCableCar->taskId = CreateTask(sub_8150550, 1);
+ else
+ sCableCar->taskId = CreateTask(sub_8150664, 1);
+ break;
+ }
+}
+
+static void CableCarMainCallback_Run(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ MapMusicMain();
+}
+
+static void CleanupCableCar(void)
+{
+ u8 i = 0;
+
+ HideBg(0);
+ HideBg(1);
+ HideBg(2);
+ HideBg(3);
+ sub_8150B6C(0);
+ gSpriteCoordOffsetX = 0;
+ sub_80AB130(WEATHER_NONE);
+ for (i = 0; i < 20; i++)
+ gWeatherPtr->sprites.s2.ashSprites[i] = NULL;
+
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade();
+ UnsetBgTilemapBuffer(0);
+ UnsetBgTilemapBuffer(1);
+ UnsetBgTilemapBuffer(2);
+ UnsetBgTilemapBuffer(3);
+ ResetBgsAndClearDma3BusyFlags(0);
+ sCableCar->pylonHookTilemapEntries = NULL;
+ FREE_AND_SET_NULL(sCableCar->pylonStemTilemap);
+ FREE_AND_SET_NULL(sCableCar->mountainTilemap);
+ FREE_AND_SET_NULL(sCableCar->treeTilemap);
+ FREE_AND_SET_NULL(sCableCar->mtChimneyTilemap);
+ FREE_AND_SET_NULL(sCableCar);
+ DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
+ DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE);
+ WarpIntoMap();
+ gFieldCallback = NULL;
+ SetMainCallback2(CB2_LoadMap);
+}
+
+static void sub_81503E4(u8 taskId)
+{
+ u8 i = 0;
+
+ sCableCar->timer++;
+ switch (sCableCar->state)
+ {
+ case 0:
+ if (sCableCar->timer == sCableCar->unk4)
+ {
+ ChangeWeather(sCableCar->weather);
+ sCableCar->state = 1;
+ }
+ break;
+ case 1:
+ switch (sCableCar->weather)
+ {
+ case WEATHER_ASH:
+ if (gWeatherPtr->sprites.s2.ashSprites[0] != NULL && gWeatherPtr->sprites.s2.ashSprites[0]->oam.priority != 0)
+ {
+ for (; i < 20; i++)
+ {
+ if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL)
+ {
+ gWeatherPtr->sprites.s2.ashSprites[i]->oam.priority = 0;
+ }
+ }
+ sCableCar->state = 2;
+ }
+ break;
+ case WEATHER_SUNNY:
+ if (gWeatherPtr->currWeather == WEATHER_SUNNY)
+ {
+ sCableCar->state = 2;
+ }
+ else if (sCableCar->timer >= sCableCar->unk4 + 8)
+ {
+ for (; i < 20; i++)
+ {
+ if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL)
+ {
+ gWeatherPtr->sprites.s2.ashSprites[i]->invisible ^= TRUE;
+ }
+ }
+ }
+ break;
+ }
+ break;
+ case 2:
+ if (sCableCar->timer == 570)
+ {
+ sCableCar->state = 3;
+ BeginNormalPaletteFade(0xFFFFFFFF, 3, 0, 16, RGB(0, 0, 0));
+ FadeOutBGM(4);
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ sCableCar->state = 0xFF;
+ }
+ break;
+ case 0xFF:
+ SetVBlankCallback(NULL);
+ DestroyTask(taskId);
+ DestroyTask(sCableCar->taskId);
+ SetMainCallback2(CleanupCableCar);
+ break;
+ }
+}
+
+static void sub_8150550(u8 taskId)
+{
+ if (sCableCar->state != 0xFF)
+ {
+ sCableCar->bg3HorizontalOffset--;
+ if ((sCableCar->timer % 2) == 0)
+ sCableCar->bg3VerticalOffset--;
+
+ if ((sCableCar->timer % 8) == 0)
+ {
+ sCableCar->bg1HorizontalOffset--;
+ sCableCar->bg1VerticalOffset--;
+ }
+
+ switch (sCableCar->bg3HorizontalOffset)
+ {
+ case 175:
+ FillBgTilemapBufferRect(3, 0, 0, 22, 2, 10, 17);
+ break;
+ case 40:
+ FillBgTilemapBufferRect(3, 0, 3, 0, 2, 2, 17);
+ break;
+ case 32:
+ FillBgTilemapBufferRect(3, 0, 2, 0, 1, 2, 17);
+ break;
+ case 16:
+ CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonHookTilemapEntries, 0, 0, 5, 2, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonStemTilemap, 0, 2, 2, 30, 17);
+ sCableCar->bg3VerticalOffset = 64;
+ break;
+ }
+ }
+
+ sub_815115C();
+ gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 1) % 128;
+}
+
+static void sub_8150664(u8 taskId)
+{
+ if (sCableCar->state != 0xFF)
+ {
+ sCableCar->bg3HorizontalOffset++;
+ if ((sCableCar->timer % 2) == 0)
+ sCableCar->bg3VerticalOffset++;
+
+ if ((sCableCar->timer % 8) == 0)
+ {
+ sCableCar->bg1HorizontalOffset++;
+ sCableCar->bg1VerticalOffset++;
+ }
+
+ switch (sCableCar->bg3HorizontalOffset)
+ {
+ case 176:
+ CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonStemTilemap, 0, 2, 2, 30, 17);
+ break;
+ case 16:
+ FillBgTilemapBufferRect(3, 0, 2, 0, 3, 2, 17);
+ FillBgTilemapBufferRect(3, 0, 0, 22, 2, 10, 17);
+ sCableCar->bg3VerticalOffset = 192;
+ break;
+ case 32:
+ FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[2], 2, 0, 1, 1, 17);
+ FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[3], 3, 0, 1, 1, 17);
+ FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[7], 2, 1, 1, 1, 17);
+ FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[8], 3, 1, 1, 1, 17);
+ break;
+ case 40:
+ FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[4], 4, 0, 1, 1, 17);
+ FillBgTilemapBufferRect(3, sCableCar->pylonHookTilemapEntries[9], 4, 1, 1, 1, 17);
+ break;
+ }
+ }
+
+ sub_81511B8();
+ if (sCableCar->timer < sCableCar->unk4)
+ gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 247) % 248;
+ else
+ gWeatherPtr->unknown_6FC = (gWeatherPtr->unknown_6FC + 247) % 248;
+}
+
+static void CableCarVblankCallback(void)
+{
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(3);
+ SetGpuReg(REG_OFFSET_BG3HOFS, sCableCar->bg3HorizontalOffset);
+ SetGpuReg(REG_OFFSET_BG3VOFS, sCableCar->bg3VerticalOffset);
+ SetGpuReg(REG_OFFSET_BG1HOFS, sCableCar->bg1HorizontalOffset);
+ SetGpuReg(REG_OFFSET_BG1VOFS, sCableCar->bg1VerticalOffset);
+ SetGpuReg(REG_OFFSET_BG0HOFS, sCableCar->bg0HorizontalOffset);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sCableCar->bg0VerticalOffset);
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void nullsub_58(struct Sprite *sprite)
+{
+}
+
+static void sub_8150868(struct Sprite *sprite)
+{
+ if (sCableCar->state != 0xFF)
+ {
+ if (gSpecialVar_0x8004 == 0)
+ {
+ sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ }
+ else
+ {
+ sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ }
+ }
+}
+
+void sub_8150948(struct Sprite *sprite)
+{
+ if (sCableCar->state != 255)
+ {
+ if (!gSpecialVar_0x8004)
+ {
+ sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ }
+ else
+ {
+ sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ }
+
+ switch (sprite->data[2])
+ {
+ case 0:
+ sprite->pos2.y = 17;
+ if (sprite->data[3] ++ > 9)
+ {
+ sprite->data[3] = 0;
+ sprite->data[2] ++;
+ }
+ break;
+ default:
+ sprite->pos2.y = 16;
+ if (sprite->data[3] ++ > 9)
+ {
+ sprite->data[3] = 0;
+ sprite->data[2] = 0;
+ }
+ break;
+ }
+ }
+}
+
+static void sub_8150A68(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->pos1.x += 2 * sprite->centerToCornerVecX;
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ }
+
+ if (++sprite->data[0] >= sprite->data[2])
+ {
+ switch (sprite->data[1])
+ {
+ case 0:
+ sprite->pos1.x++;
+ if ((sprite->data[0] % 4) == 0)
+ sprite->pos1.y++;
+ break;
+ case 1:
+ if ((sprite->data[0] % 2) != 0)
+ {
+ sprite->pos1.x++;
+ if ((sprite->pos1.x % 4) == 0)
+ sprite->pos1.y++;
+ }
+ break;
+ }
+
+ if (sprite->pos1.y > 160)
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_8150AF4(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+
+ if (++sprite->data[0] >= sprite->data[2])
+ {
+ switch (sprite->data[1])
+ {
+ case 0:
+ sprite->pos1.x--;
+ if ((sprite->data[0] % 4) == 0)
+ sprite->pos1.y--;
+ break;
+ case 1:
+ if ((sprite->data[0] % 2) != 0)
+ {
+ sprite->pos1.x--;
+ if ((sprite->pos1.x % 4) == 0)
+ sprite->pos1.y--;
+ }
+ break;
+ }
+
+ if (sprite->pos1.y < 80)
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_8150B6C(bool8 which)
+{
+ switch (which)
+ {
+ case FALSE:
+ default:
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN1H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WIN1V, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ break;
+ case TRUE:
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN1H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WIN1V, 0);
+ if (gSpecialVar_0x8004 == 0)
+ {
+ sCableCar->bg3HorizontalOffset = 176;
+ sCableCar->bg3VerticalOffset = 16;
+ sCableCar->bg1HorizontalOffset = 0;
+ sCableCar->bg1VerticalOffset = 80;
+ sCableCar->bg0VerticalOffset = 0;
+ sCableCar->bg0VerticalOffset = 0;
+ }
+ else
+ {
+ sCableCar->bg3HorizontalOffset = 96;
+ sCableCar->bg3VerticalOffset = 232;
+ sCableCar->bg1HorizontalOffset = 0;
+ sCableCar->bg1VerticalOffset = 4;
+ sCableCar->bg0VerticalOffset = 0;
+ sCableCar->bg0VerticalOffset = 0;
+ }
+
+ SetGpuReg(REG_OFFSET_BG3HOFS, sCableCar->bg3HorizontalOffset);
+ SetGpuReg(REG_OFFSET_BG3VOFS, sCableCar->bg3VerticalOffset);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, sCableCar->bg1HorizontalOffset);
+ SetGpuReg(REG_OFFSET_BG1VOFS, sCableCar->bg1VerticalOffset);
+ SetGpuReg(REG_OFFSET_BG0HOFS, sCableCar->bg0HorizontalOffset);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sCableCar->bg0VerticalOffset);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL);
+ break;
+ }
+}
+
+static void LoadCableCarSprites(void)
+{
+ u8 spriteId;
+ u8 i;
+
+ u8 playerGraphicsIds[2] = {
+ EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL,
+ EVENT_OBJ_GFX_RIVAL_MAY_NORMAL
+ };
+ u16 rval = Random();
+ u8 hikerGraphicsIds[4] = {
+ EVENT_OBJ_GFX_HIKER,
+ EVENT_OBJ_GFX_CAMPER,
+ EVENT_OBJ_GFX_PICNICKER,
+ EVENT_OBJ_GFX_ZIGZAGOON_1
+ };
+ s16 hikerCoords[2][2] = {
+ { 0, 80 },
+ { 240, 146 }
+ };
+ u8 hikerMovementDelayTable[4] = {
+ 0,
+ 60,
+ 120,
+ 170
+ };
+ void (*callbacks[2])(struct Sprite *) = {
+ sub_8150A68,
+ sub_8150AF4
+ };
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ default:
+ spriteId = AddPseudoEventObject(playerGraphicsIds[gSaveBlock2Ptr->playerGender], sub_8150948, 200, 73, 102);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = 2;
+ gSprites[spriteId].pos2.x = 8;
+ gSprites[spriteId].pos2.y = 16;
+ gSprites[spriteId].data[0] = 0xc8;
+ gSprites[spriteId].data[1] = 0x49;
+ }
+ spriteId = CreateSprite(&gSpriteTemplate_85CDB9C[0], 176, 43, 0x67);
+ gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 32;
+ gSprites[spriteId].data[0] = 176;
+ gSprites[spriteId].data[1] = 43;
+ spriteId = CreateSprite(&gSpriteTemplate_85CDB9C[1], 200, 99, 0x65);
+ gSprites[spriteId].pos2.x = 8;
+ gSprites[spriteId].pos2.y = 4;
+ gSprites[spriteId].data[0] = 200;
+ gSprites[spriteId].data[1] = 99;
+ sCableCar->weather = WEATHER_ASH;
+ sCableCar->unk4 = 0x15e;
+ sub_80AB130(WEATHER_SUNNY);
+ break;
+ case 1:
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x24, 24, 26, 12, 3, 17);
+ spriteId = AddPseudoEventObject(playerGraphicsIds[gSaveBlock2Ptr->playerGender], sub_8150948, 128, 39, 102);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = 2;
+ gSprites[spriteId].pos2.x = 8;
+ gSprites[spriteId].pos2.y = 16;
+ gSprites[spriteId].data[0] = 0x80;
+ gSprites[spriteId].data[1] = 0x27;
+ }
+ spriteId = CreateSprite(&gSpriteTemplate_85CDB9C[0], 104, 9, 0x67);
+ gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 0x20;
+ gSprites[spriteId].data[0] = 104;
+ gSprites[spriteId].data[1] = 9;
+ spriteId = CreateSprite(&gSpriteTemplate_85CDB9C[1], 128, 65, 0x65);
+ gSprites[spriteId].pos2.x = 8;
+ gSprites[spriteId].pos2.y = 4;
+ gSprites[spriteId].data[0] = 0x80;
+ gSprites[spriteId].data[1] = 0x41;
+ sCableCar->weather = WEATHER_SUNNY;
+ sCableCar->unk4 = 0x109;
+ sub_80AB130(WEATHER_ASH);
+ break;
+ }
+ for (i = 0; i < 9; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_85CDBCC, 16 * i + 96, 8 * i - 8, 0x68);
+ gSprites[spriteId].pos2.x = 8;
+ gSprites[spriteId].pos2.y = 8;
+ }
+ if ((rval % 64) == 0)
+ {
+ spriteId = AddPseudoEventObject(hikerGraphicsIds[rval % 3], callbacks[gSpecialVar_0x8004], hikerCoords[gSpecialVar_0x8004][0], hikerCoords[gSpecialVar_0x8004][1], 0x6a);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = 2;
+ gSprites[spriteId].pos2.x = -gSprites[spriteId].centerToCornerVecX;
+ gSprites[spriteId].pos2.y = -gSprites[spriteId].centerToCornerVecY;
+ if (gSpecialVar_0x8004 == 0)
+ {
+ if (rval % 2)
+ {
+ StartSpriteAnim(&gSprites[spriteId], 6);
+ gSprites[spriteId].data[1] = 1;
+ gSprites[spriteId].pos1.y += 2;
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[spriteId], 7);
+ gSprites[spriteId].data[1] = 0;
+ }
+ }
+ else
+ {
+ if (rval % 2)
+ {
+ StartSpriteAnim(&gSprites[spriteId], 7);
+ gSprites[spriteId].data[1] = 1;
+ gSprites[spriteId].pos1.y += 2;
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[spriteId], 6);
+ gSprites[spriteId].data[1] = 0;
+ }
+ }
+ gSprites[spriteId].data[2] = hikerMovementDelayTable[rval % 4];
+ }
+ }
+}
+
+void sub_8151088(void)
+{
+ u8 i;
+ u8 j;
+ u8 k;
+ u8 offset;
+
+ for (i = 0, k = 0, offset = 0x24 * (sCableCar->unk1B + 2); i < 3; i++)
+ {
+ for (j = 0; j < 12; j++)
+ {
+ sCableCar->unk22[i][j] = sCableCar->mtChimneyTilemap[offset++];
+ sCableCar->unk22[i + 3][j] = sCableCar->mtChimneyTilemap[k];
+ sCableCar->unk22[i + 6][j] = (sCableCar->mtChimneyTilemap + 0x24)[k];
+ k++;
+ }
+ }
+
+ sCableCar->unk1B = (sCableCar->unk1B + 1) % 3;
+}
+
+static void sub_815115C(void)
+{
+ sCableCar->unk1C = (sCableCar->unk1C + 1) % 0x60;
+ sCableCar->bg0HorizontalOffset = sCableCar->unk1F - sCableCar->unk1D;
+ sCableCar->bg0VerticalOffset = sCableCar->unk20 - sCableCar->unk1E;
+ sCableCar->unk1D++;
+ if ((sCableCar->unk1D % 4) == 0)
+ sCableCar->unk1E++;
+
+ if (sCableCar->unk1D > 16)
+ sub_8151214();
+}
+
+static void sub_81511B8(void)
+{
+ sCableCar->unk1C = (sCableCar->unk1C + 1) % 0x60;
+ sCableCar->bg0HorizontalOffset = sCableCar->unk1F + sCableCar->unk1D;
+ sCableCar->bg0VerticalOffset = sCableCar->unk20 + sCableCar->unk1E;
+ sCableCar->unk1D++;
+ if ((sCableCar->unk1D % 4) == 0)
+ sCableCar->unk1E++;
+
+ if (sCableCar->unk1D > 16)
+ sub_8151388();
+}
+
+static void sub_8151214(void)
+{
+ u8 i = 0;
+
+ sCableCar->unk1D = sCableCar->unk1E = 0;
+ sCableCar->unk1F = sCableCar->bg0HorizontalOffset;
+ sCableCar->unk20 = sCableCar->bg0VerticalOffset;
+ sCableCar->unk19 = (sCableCar->unk19 + 30) % 32;
+ sCableCar->unk18 -= 2;
+ gUnknown_0203ABB2 = (sCableCar->unk1A + 23) % 32;
+ for (i = 0; i < 9; i++)
+ {
+ gUnknown_0203ABB0 = sCableCar->unk19;
+ gUnknown_0203ABB1 = (gUnknown_0203ABB2 + i) % 32;
+ FillBgTilemapBufferRect(0, sCableCar->unk22[i][sCableCar->unk18], gUnknown_0203ABB0, gUnknown_0203ABB1, 1, 1, 17);
+ gUnknown_0203ABB0 = (gUnknown_0203ABB0 + 1) % 32;
+ FillBgTilemapBufferRect(0, sCableCar->unk22[i][sCableCar->unk18 + 1], gUnknown_0203ABB0, gUnknown_0203ABB1, 1, 1, 17);
+ }
+
+ gUnknown_0203ABB0 = (sCableCar->unk19 + 30) % 32;
+ FillBgTilemapBufferRect(0, 0, gUnknown_0203ABB0, 0, 2, 32, 17);
+ if (sCableCar->unk18 == 0)
+ {
+ sCableCar->unk1A = (sCableCar->unk1A + 29) % 32;
+ sCableCar->unk18 = 12;
+ sub_8151088();
+ gUnknown_0203ABB0 = (sCableCar->unk1A + 1) % 32;
+ FillBgTilemapBufferRect(0, 0, 0, gUnknown_0203ABB0, 32, 9, 17);
+ }
+}
+
+static void sub_8151388(void)
+{
+ u8 i = 0;
+
+ sCableCar->unk1D = sCableCar->unk1E = 0;
+ sCableCar->unk1F = sCableCar->bg0HorizontalOffset;
+ sCableCar->unk20 = sCableCar->bg0VerticalOffset;
+ sCableCar->unk19 = (sCableCar->unk19 + 2) % 32;
+ sCableCar->unk18 += 2;
+ gUnknown_0203ABB5 = sCableCar->unk1A;
+ for (i = 0; i < 9; i++)
+ {
+ gUnknown_0203ABB3 = sCableCar->unk19;
+ gUnknown_0203ABB4 = (gUnknown_0203ABB5 + i) % 32;
+ FillBgTilemapBufferRect(0, sCableCar->unk22[i][sCableCar->unk18], gUnknown_0203ABB3, gUnknown_0203ABB4, 1, 1, 17);
+ gUnknown_0203ABB3 = (gUnknown_0203ABB3 + 1) % 32;
+ FillBgTilemapBufferRect(0, sCableCar->unk22[i][sCableCar->unk18 + 1], gUnknown_0203ABB3, gUnknown_0203ABB4, 1, 1, 17);
+ }
+
+ gUnknown_0203ABB4 = (sCableCar->unk1A + 23) % 32;
+ FillBgTilemapBufferRect(0, 0, sCableCar->unk19, gUnknown_0203ABB4, 2, 9, 17);
+ if (sCableCar->unk18 == 10)
+ {
+ sCableCar->unk1A = (sCableCar->unk1A + 3) % 32;
+ sCableCar->unk18 = 0xfe;
+ sub_8151088();
+ }
+}
+
+static void sub_81514C8(u8 arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ default:
+ sCableCar->unk1B = 2;
+ sCableCar->unk19 = 0;
+ sCableCar->unk1A = 20;
+ sCableCar->unk18 = 12;
+ sub_8151088();
+ sub_8151214();
+ break;
+ case 1:
+ sCableCar->unk1B = 2;
+ sCableCar->unk19 = 28;
+ sCableCar->unk1A = 20;
+ sCableCar->unk18 = 4;
+ sub_8151088();
+ sub_8151388();
+ break;
+ }
+
+ sCableCar->unk1C = 0;
+}
diff --git a/src/clock.c b/src/clock.c
index 91eb5f16d..aea6c2088 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -5,7 +5,7 @@
#include "lottery_corner.h"
#include "dewford_trend.h"
#include "tv.h"
-#include "field_screen.h"
+#include "field_weather.h"
#include "berry.h"
#include "main.h"
#include "overworld.h"
diff --git a/src/contest.c b/src/contest.c
index 95c8563ed..34662b490 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -2520,7 +2520,7 @@ u8 sub_80DB174(u16 species, u32 otId, u32 personality, u32 index)
spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, GetBattlerSpriteFinal_Y(2, species, FALSE), 30);
gSprites[spriteId].oam.paletteNum = 2;
gSprites[spriteId].oam.priority = 2;
- gSprites[spriteId].subpriority = sub_80A82E4(2);
+ gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(2);
gSprites[spriteId].callback = SpriteCallbackDummy;
gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum;
gSprites[spriteId].data[2] = species;
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 7950b7cac..9de3d733d 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -1,8 +1,709 @@
#include "global.h"
+#include "alloc.h"
+#include "battle.h"
+#include "bg.h"
+#include "contest.h"
+#include "contest_painting.h"
+#include "contest_painting_effects.h"
+#include "battle_gfx_sfx_util.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "international_string_util.h"
+#include "main.h"
+#include "lilycove_lady.h"
+#include "palette.h"
+#include "random.h"
+#include "scanline_effect.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "window.h"
+#include "constants/rgb.h"
+
+extern u8 gUnknown_02039F5C;
+extern u8 gUnknown_02039F5D;
+
+extern u16 (*gUnknown_03006190)[][32];
+extern struct ContestWinner *gUnknown_030061C0;
+extern u16 *gContestPaintingMonPalette;
+extern struct Unk030061A0 gUnknown_030061A0;
// IWRAM bss
-IWRAM_DATA u8 gUnknown_030011F0;
-IWRAM_DATA u16 gUnknown_030011F2;
-IWRAM_DATA u16 gUnknown_030011F4;
-IWRAM_DATA u8 gUnknown_030011F6;
-IWRAM_DATA u8 gUnknown_030011F7;
+IWRAM_DATA u8 gContestPaintingState;
+IWRAM_DATA u16 gContestPaintingMosaicVal;
+IWRAM_DATA u16 gContestPaintingFadeCounter;
+IWRAM_DATA bool8 gUnknown_030011F6;
+IWRAM_DATA u8 gContestPaintingWindowId;
+
+static void ShowContestPainting(void);
+static void HoldContestPainting(void);
+static void InitContestPaintingWindow(void);
+static void InitContestPaintingBg(void);
+static void InitContestPaintingVars(bool8);
+static void sub_8130884(u8, u8);
+static void PrintContestPaintingCaption(u8, u8);
+static void VBlankCB_ContestPainting(void);
+static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64]);
+
+extern const u8 gUnknown_0827EA0C[];
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+extern const struct CompressedSpriteSheet gMonBackPicTable[];
+extern const u8 gContestCoolness[];
+extern const u8 gContestBeauty[];
+extern const u8 gContestCuteness[];
+extern const u8 gContestSmartness[];
+extern const u8 gContestToughness[];
+extern const u8 gContestRankNormal[];
+extern const u8 gContestRankSuper[];
+extern const u8 gContestRankHyper[];
+extern const u8 gContestRankMaster[];
+extern const u8 gContestLink[];
+extern const u8 gContestPaintingCool1[];
+extern const u8 gContestPaintingCool2[];
+extern const u8 gContestPaintingCool3[];
+extern const u8 gContestPaintingBeauty1[];
+extern const u8 gContestPaintingBeauty2[];
+extern const u8 gContestPaintingBeauty3[];
+extern const u8 gContestPaintingCute1[];
+extern const u8 gContestPaintingCute2[];
+extern const u8 gContestPaintingCute3[];
+extern const u8 gContestPaintingSmart1[];
+extern const u8 gContestPaintingSmart2[];
+extern const u8 gContestPaintingSmart3[];
+extern const u8 gContestPaintingTough1[];
+extern const u8 gContestPaintingTough2[];
+extern const u8 gContestPaintingTough3[];
+
+const u16 gPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal");
+const u8 gPictureFrameTiles_0[] = INCBIN_U8("graphics/picture_frame/frame0.4bpp.rl");
+const u8 gPictureFrameTiles_1[] = INCBIN_U8("graphics/picture_frame/frame1.4bpp.rl");
+const u8 gPictureFrameTiles_2[] = INCBIN_U8("graphics/picture_frame/frame2.4bpp.rl");
+const u8 gPictureFrameTiles_3[] = INCBIN_U8("graphics/picture_frame/frame3.4bpp.rl");
+const u8 gPictureFrameTiles_4[] = INCBIN_U8("graphics/picture_frame/frame4.4bpp.rl");
+const u8 gPictureFrameTiles_5[] = INCBIN_U8("graphics/picture_frame/frame5.4bpp.rl");
+const u8 gPictureFrameTilemap_0[] = INCBIN_U8("graphics/picture_frame/frame0_map.bin.rl");
+const u8 gPictureFrameTilemap_1[] = INCBIN_U8("graphics/picture_frame/frame1_map.bin.rl");
+const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map.bin.rl");
+const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl");
+const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl");
+const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl");
+
+const u8 *const gUnknown_085B07C0[] =
+{
+ gContestCoolness,
+ gContestBeauty,
+ gContestCuteness,
+ gContestSmartness,
+ gContestToughness,
+};
+
+const u8 *const gContestRankTextPointers[] =
+{
+ gContestRankNormal,
+ gContestRankSuper,
+ gContestRankHyper,
+ gContestRankMaster,
+ gContestLink,
+};
+
+const struct BgTemplate gUnknown_085B07E8[] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 10,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ },
+};
+
+const struct WindowTemplate gUnknown_085B07EC =
+{
+ .bg = 1,
+ .tilemapLeft = 2,
+ .tilemapTop = 14,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 1,
+};
+
+const u8 *const gContestPaintingDescriptionPointers[] =
+{
+ gContestPaintingCool1,
+ gContestPaintingCool2,
+ gContestPaintingCool3,
+ gContestPaintingBeauty1,
+ gContestPaintingBeauty2,
+ gContestPaintingBeauty3,
+ gContestPaintingCute1,
+ gContestPaintingCute2,
+ gContestPaintingCute3,
+ gContestPaintingSmart1,
+ gContestPaintingSmart2,
+ gContestPaintingSmart3,
+ gContestPaintingTough1,
+ gContestPaintingTough2,
+ gContestPaintingTough3,
+};
+
+const struct OamData gUnknown_085B0830 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 1,
+ .bpp = ST_OAM_8BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const u16 gUnknown_085B0838[] = {RGB(0, 0, 0), RGB(0, 0, 0)};
+
+void sub_812FDA8(int contestWinner)
+{
+ // probably fakematching
+ u8 *ptr1 = &gUnknown_02039F5D;
+ u8 *ptr2 = &gUnknown_02039F5C;
+ gUnknown_02039F3C = gSaveBlock1Ptr->contestWinners[contestWinner - 1];
+ *ptr1 = contestWinner - 1;
+ *ptr2 = 0;
+}
+
+void CB2_ContestPainting(void)
+{
+ ShowContestPainting();
+}
+
+static void CB2_HoldContestPainting(void)
+{
+ HoldContestPainting();
+ RunTextPrinters();
+ UpdatePaletteFade();
+}
+
+static void CB2_QuitContestPainting(void)
+{
+ SetMainCallback2(gMain.savedCallback);
+ FREE_AND_SET_NULL(gContestPaintingMonPalette);
+ FREE_AND_SET_NULL(gUnknown_03006190);
+ RemoveWindow(gContestPaintingWindowId);
+ Free(GetBgTilemapBuffer(1));
+ FreeMonSpritesGfx();
+}
+
+static void ShowContestPainting(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ ScanlineEffect_Stop();
+ SetVBlankCallback(NULL);
+ AllocateMonSpritesGfx();
+ gUnknown_030061C0 = &gUnknown_02039F3C;
+ InitContestPaintingVars(1);
+ InitContestPaintingBg();
+ gMain.state++;
+ break;
+ case 1:
+ ResetPaletteFade();
+ DmaFillLarge32(3, 0, (void *)BG_VRAM, 0x18000, 0x1000);
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 2:
+ SeedRng(gMain.vblankCounter1);
+ InitKeys();
+ InitContestPaintingWindow();
+ gMain.state++;
+ break;
+ case 3:
+ sub_8130884(gUnknown_02039F5D, gUnknown_02039F5C);
+ gMain.state++;
+ break;
+ case 4:
+ PrintContestPaintingCaption(gUnknown_02039F5D, gUnknown_02039F5C);
+ LoadPalette(gUnknown_085B0838, 0, 1 * 2);
+ DmaClear32(3, PLTT, PLTT_SIZE);
+ BeginFastPaletteFade(2);
+ SetVBlankCallback(VBlankCB_ContestPainting);
+ gContestPaintingState = 0;
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
+ SetMainCallback2(CB2_HoldContestPainting);
+ break;
+ }
+}
+
+static void HoldContestPainting(void)
+{
+ switch (gContestPaintingState)
+ {
+ case 0:
+ if (!gPaletteFade.active)
+ gContestPaintingState = 1;
+ if (gUnknown_030011F6 && gContestPaintingFadeCounter)
+ gContestPaintingFadeCounter--;
+ break;
+ case 1:
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ {
+ u8 two = 2; //needed to make the asm match
+ gContestPaintingState = two;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ }
+
+ if (gUnknown_030011F6)
+ gContestPaintingFadeCounter = 0;
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ SetMainCallback2(CB2_QuitContestPainting);
+ if (gUnknown_030011F6 && gContestPaintingFadeCounter < 30)
+ gContestPaintingFadeCounter++;
+ break;
+ }
+}
+
+static void InitContestPaintingWindow(void)
+{
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_085B07E8, ARRAY_COUNT(gUnknown_085B07E8));
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
+ gContestPaintingWindowId = AddWindow(&gUnknown_085B07EC);
+ DeactivateAllTextPrinters();
+ FillWindowPixelBuffer(gContestPaintingWindowId, 0);
+ PutWindowTilemap(gContestPaintingWindowId);
+ CopyWindowToVram(gContestPaintingWindowId, 3);
+ ShowBg(1);
+}
+
+static void PrintContestPaintingCaption(u8 contestType, u8 arg1)
+{
+ int x;
+ u8 category;
+
+ if (arg1 == TRUE)
+ return;
+
+ category = gUnknown_030061C0->contestCategory;
+ if (contestType < 8)
+ {
+ sub_818E868(gStringVar1, category);
+ StringAppend(gStringVar1, gText_Space);
+ StringAppend(gStringVar1, gContestRankTextPointers[gUnknown_030061C0->contestRank]);
+ StringCopy(gStringVar2, gUnknown_030061C0->trainerName);
+ sub_81DB5AC(gStringVar2);
+ StringCopy(gStringVar3, gUnknown_030061C0->monName);
+ StringExpandPlaceholders(gStringVar4, gUnknown_0827EA0C);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gUnknown_030061C0->monName);
+ StringExpandPlaceholders(gStringVar4, gContestPaintingDescriptionPointers[category]);
+ }
+
+ x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
+ AddTextPrinterParameterized(gContestPaintingWindowId, 1, gStringVar4, x, 1, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+}
+
+static void InitContestPaintingBg(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ REG_IE |= INTR_FLAG_VBLANK;
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+}
+
+static void InitContestPaintingVars(bool8 arg0)
+{
+ if (arg0 == FALSE)
+ {
+ gUnknown_030011F6 = FALSE;
+ gContestPaintingMosaicVal = 0;
+ gContestPaintingFadeCounter = 0;
+ }
+ else
+ {
+ gUnknown_030011F6 = TRUE;
+ gContestPaintingMosaicVal = 15;
+ gContestPaintingFadeCounter = 30;
+ }
+}
+
+static void UpdateContestPaintingMosaicEffect(void)
+{
+ if (!gUnknown_030011F6)
+ {
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
+ gContestPaintingMosaicVal = gContestPaintingFadeCounter / 2;
+ SetGpuReg(REG_OFFSET_MOSAIC, (gContestPaintingMosaicVal << 12) | (gContestPaintingMosaicVal << 8) | (gContestPaintingMosaicVal << 4) | (gContestPaintingMosaicVal << 0));
+ }
+}
+
+static void VBlankCB_ContestPainting(void)
+{
+ UpdateContestPaintingMosaicEffect();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_81302E8(u16 species, u8 arg1)
+{
+ const void *pal = GetFrontSpritePalFromSpeciesAndPersonality(species, gUnknown_030061C0->trainerId, gUnknown_030061C0->personality);
+ LZDecompressVram(pal, gContestPaintingMonPalette);
+ if (!arg1)
+ {
+ HandleLoadSpecialPokePic_DontHandleDeoxys(
+ &gMonFrontPicTable[species],
+ gMonSpritesGfxPtr->sprites[1],
+ species,
+ gUnknown_030061C0->personality);
+ sub_8130380(gMonSpritesGfxPtr->sprites[1], gContestPaintingMonPalette, (void *)gUnknown_03006190);
+ }
+ else
+ {
+ HandleLoadSpecialPokePic_DontHandleDeoxys(
+ &gMonBackPicTable[species],
+ gMonSpritesGfxPtr->sprites[0],
+ species,
+ gUnknown_030061C0->personality);
+ sub_8130380(gMonSpritesGfxPtr->sprites[0], gContestPaintingMonPalette, (void *)gUnknown_03006190);
+ }
+}
+
+#ifdef NONMATCHING
+// functionally equivalent.
+static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64])
+{
+ u16 tileY, tileX, pixelY, pixelX;
+ u8 colorIndex;
+
+ for (tileY = 0; tileY < 8; tileY++)
+ {
+ for (tileX = 0; tileX < 8; tileX++)
+ {
+ for (pixelY = 0; pixelY < 8; pixelY++)
+ {
+ for (pixelX = 0; pixelX < 8; pixelX++)
+ {
+ int offset = 32 * (8 * tileY + tileX) + (pixelY * 4 + pixelX / 2);
+ colorIndex = spritePixels[offset];
+ if (pixelX & 1)
+ colorIndex >>= 4;
+ else
+ colorIndex &= 0xF;
+
+ if (colorIndex == 0) // transparent pixel
+ (*destColorBuffer)[8 * tileY + pixelY][tileX * 8 + pixelX] = 0x8000;
+ else
+ (*destColorBuffer)[8 * tileY + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
+ }
+ }
+ }
+ }
+}
+#else
+NAKED
+static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64])
+{
+ asm_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\
+ mov r10, r0\n\
+ mov r9, r1\n\
+ str r2, [sp]\n\
+ movs r0, 0\n\
+_08130394:\n\
+ movs r3, 0\n\
+ adds r1, r0, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ lsls r0, 3\n\
+ str r0, [sp, 0x8]\n\
+_0813039E:\n\
+ movs r1, 0\n\
+ adds r2, r3, 0x1\n\
+ mov r8, r2\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r3\n\
+ lsls r0, 5\n\
+ mov r12, r0\n\
+ lsls r4, r3, 3\n\
+_081303AE:\n\
+ movs r3, 0\n\
+ lsls r0, r1, 2\n\
+ adds r6, r1, 0x1\n\
+ mov r2, r12\n\
+ adds r5, r2, r0\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r1\n\
+ lsls r0, 7\n\
+ ldr r1, [sp]\n\
+ adds r2, r0, r1\n\
+_081303C2:\n\
+ lsrs r0, r3, 1\n\
+ adds r0, r5, r0\n\
+ add r0, r10\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _081303D6\n\
+ lsrs r1, 4\n\
+ b _081303DA\n\
+_081303D6:\n\
+ movs r0, 0xF\n\
+ ands r1, r0\n\
+_081303DA:\n\
+ cmp r1, 0\n\
+ bne _081303EC\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ movs r7, 0x80\n\
+ lsls r7, 8\n\
+ adds r1, r7, 0\n\
+ b _081303F8\n\
+_081303EC:\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ lsls r1, 1\n\
+ add r1, r9\n\
+ ldrh r1, [r1]\n\
+_081303F8:\n\
+ strh r1, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _081303C2\n\
+ lsls r0, r6, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0x7\n\
+ bls _081303AE\n\
+ mov r1, r8\n\
+ lsls r0, r1, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _0813039E\n\
+ ldr r2, [sp, 0x4]\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x7\n\
+ bls _08130394\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 {r0}\n\
+ bx r0");
+}
+#endif
+
+static void sub_8130430(u8 arg0, u8 arg1)
+{
+ u8 x, y;
+
+ LoadPalette(gPictureFramePalettes, 0, 0x100);
+ if (arg1 == 1)
+ {
+ switch (gUnknown_030061C0->contestCategory / 3)
+ {
+ case CONTEST_CATEGORY_COOL:
+ RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_0, gUnknown_03006190);
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_1, gUnknown_03006190);
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_2, gUnknown_03006190);
+ break;
+ case CONTEST_CATEGORY_SMART:
+ RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_3, gUnknown_03006190);
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_4, gUnknown_03006190);
+ break;
+ }
+
+#define VRAM_PICTURE_DATA(x, y) (((u16 *)(VRAM + 0x6000))[(y) * 32 + (x)])
+
+ // Set the background
+ for (y = 0; y < 20; y++)
+ {
+ for (x = 0; x < 32; x++)
+ VRAM_PICTURE_DATA(x, y) = 0x1015;
+ }
+
+ // Copy the image frame
+ for (y = 0; y < 10; y++)
+ {
+ for (x = 0; x < 18; x++)
+ VRAM_PICTURE_DATA(x + 6, y + 2) = (*gUnknown_03006190)[y + 2][x + 6];
+ }
+
+ // Re-set the entire top row to the first top frame part
+ for (x = 0; x < 16; x++)
+ VRAM_PICTURE_DATA(x + 7, 2) = (*gUnknown_03006190)[2][7];
+
+#undef VRAM_PICTURE_DATA
+ }
+ else if (arg0 < 8)
+ {
+ RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_5, (void *)(VRAM + 0x6000));
+ }
+ else
+ {
+ switch (gUnknown_030061C0->contestCategory / 3)
+ {
+ case CONTEST_CATEGORY_COOL:
+ RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_0, (void *)(VRAM + 0x6000));
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_1, (void *)(VRAM + 0x6000));
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_2, (void *)(VRAM + 0x6000));
+ break;
+ case CONTEST_CATEGORY_SMART:
+ RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_3, (void *)(VRAM + 0x6000));
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_4, (void *)(VRAM + 0x6000));
+ break;
+ }
+ }
+}
+
+static void sub_8130688(u8 arg0)
+{
+ //Some hacks just to get the asm to match
+#ifndef NONMATCHING
+ asm(""::"r"(arg0));
+#endif
+
+ gMain.oamBuffer[0] = gUnknown_085B0830;
+ gMain.oamBuffer[0].tileNum = 0;
+
+#ifndef NONMATCHING
+ if (arg0) arg0 = gMain.oamBuffer[0].tileNum;
+#endif
+
+ gMain.oamBuffer[0].x = 88;
+ gMain.oamBuffer[0].y = 24;
+}
+
+static u8 sub_81306CC(u8 arg0)
+{
+ u8 contestCategory;
+
+ if (arg0 < 8)
+ contestCategory = gUnknown_030061C0->contestCategory;
+ else
+ contestCategory = gUnknown_030061C0->contestCategory / 3;
+
+ switch (contestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ return CONTESTRESULT_COOL;
+ case CONTEST_CATEGORY_BEAUTY:
+ return CONTESTRESULT_BEAUTY;
+ case CONTEST_CATEGORY_CUTE:
+ return CONTESTRESULT_CUTE;
+ case CONTEST_CATEGORY_SMART:
+ return CONTESTRESULT_SMART;
+ case CONTEST_CATEGORY_TOUGH:
+ return CONTESTRESULT_TOUGH;
+ }
+
+ return contestCategory;
+}
+
+static void sub_8130738(void)
+{
+ gContestPaintingMonPalette = AllocZeroed(0x200);
+ gUnknown_03006190 = AllocZeroed(0x2000);
+}
+
+static void sub_8130760(u8 contestResult)
+{
+ gUnknown_030061A0.var_4 = gUnknown_03006190;
+ gUnknown_030061A0.var_8 = gContestPaintingMonPalette;
+ gUnknown_030061A0.var_18 = 0;
+ gUnknown_030061A0.var_1F = gUnknown_030061C0->personality % 256;
+ gUnknown_030061A0.var_19 = 0;
+ gUnknown_030061A0.var_1A = 0;
+ gUnknown_030061A0.var_1B = 64;
+ gUnknown_030061A0.var_1C = 64;
+ gUnknown_030061A0.var_1D = 64;
+ gUnknown_030061A0.var_1E = 64;
+
+ switch (contestResult)
+ {
+ case CONTESTRESULT_SMART:
+ case CONTESTRESULT_TOUGH:
+ gUnknown_030061A0.var_14 = 3;
+ break;
+ case CONTESTRESULT_COOL:
+ case CONTESTRESULT_BEAUTY:
+ case CONTESTRESULT_CUTE:
+ default:
+ gUnknown_030061A0.var_14 = 1;
+ break;
+ }
+
+ gUnknown_030061A0.var_16 = 2;
+ gUnknown_030061A0.var_0 = contestResult;
+ gUnknown_030061A0.var_10 = 0x6010000;
+
+ sub_8124F2C(&gUnknown_030061A0);
+ sub_81261A4(&gUnknown_030061A0);
+ sub_8126058(&gUnknown_030061A0);
+
+ LoadPalette(gContestPaintingMonPalette, 0x100, 0x200);
+}
+
+static void sub_8130884(u8 arg0, u8 arg1)
+{
+ sub_8130738();
+ sub_81302E8(gUnknown_030061C0->species, 0);
+ sub_8130760(sub_81306CC(arg0));
+ sub_8130688(arg0);
+ sub_8130430(arg0, arg1);
+}
diff --git a/src/credits.c b/src/credits.c
index ca82217cd..42bdbf454 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -135,7 +135,7 @@ struct Unk201C000
u16 unk90;
u16 unk92;
u16 unk94;
- u16 unk96[386];
+ u16 unk96[NATIONAL_DEX_COUNT];
u16 unk39A;
u16 unk39C[7];
};
@@ -2254,12 +2254,12 @@ static void sub_8177050(struct Sprite *sprite)
}
}
-static u8 sub_8177224(u16 species, s16 x, s16 y, u16 position)
+static u8 sub_8177224(u16 nationalDexNum, s16 x, s16 y, u16 position)
{
u8 spriteId;
u8 spriteId2;
- spriteId = sub_80C0E9C(species, x, y, position);
+ spriteId = CreateMonSpriteFromNationalDexNumber(nationalDexNum, x, y, position);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].data[1] = position + 1;
gSprites[spriteId].invisible = TRUE;
@@ -2297,16 +2297,16 @@ static void sub_8177388(void)
u16 dexNum;
u16 j;
- for (dexNum = 1, j = 0; dexNum < 386; dexNum++)
+ for (dexNum = 1, j = 0; dexNum < NATIONAL_DEX_COUNT; dexNum++)
{
- if (GetSetPokedexFlag(dexNum, 1))
+ if (GetSetPokedexFlag(dexNum, FLAG_GET_CAUGHT))
{
gUnknown_0203BCE8->unk96[j] = dexNum;
j++;
}
}
- for (dexNum = j; dexNum < 386; dexNum++)
+ for (dexNum = j; dexNum < NATIONAL_DEX_COUNT; dexNum++)
gUnknown_0203BCE8->unk96[dexNum] = 0;
gUnknown_0203BCE8->unk39A = j;
diff --git a/src/data/battle_frontier/battle_frontier_mons.h b/src/data/battle_frontier/battle_frontier_mons.h
new file mode 100644
index 000000000..44cfb8036
--- /dev/null
+++ b/src/data/battle_frontier/battle_frontier_mons.h
@@ -0,0 +1,6177 @@
+const struct FacilityMon gBattleFrontierMons[] =
+{
+ [0] = {
+ .species = SPECIES_SUNKERN,
+ .moves = {MOVE_MEGA_DRAIN, MOVE_HELPING_HAND, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [1] = {
+ .species = SPECIES_AZURILL,
+ .moves = {MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RASH
+ },
+ [2] = {
+ .species = SPECIES_CATERPIE,
+ .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [3] = {
+ .species = SPECIES_WEEDLE,
+ .moves = {MOVE_POISON_STING, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [4] = {
+ .species = SPECIES_WURMPLE,
+ .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_POISON_STING, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [5] = {
+ .species = SPECIES_RALTS,
+ .moves = {MOVE_CONFUSION, MOVE_IMPRISON, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [6] = {
+ .species = SPECIES_MAGIKARP,
+ .moves = {MOVE_FLAIL, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [7] = {
+ .species = SPECIES_FEEBAS,
+ .moves = {MOVE_FLAIL, MOVE_MIRROR_COAT, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [8] = {
+ .species = SPECIES_METAPOD,
+ .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BASHFUL
+ },
+ [9] = {
+ .species = SPECIES_KAKUNA,
+ .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BASHFUL
+ },
+ [10] = {
+ .species = SPECIES_PICHU,
+ .moves = {MOVE_SWEET_KISS, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SHOCK_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RASH
+ },
+ [11] = {
+ .species = SPECIES_SILCOON,
+ .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BASHFUL
+ },
+ [12] = {
+ .species = SPECIES_CASCOON,
+ .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BASHFUL
+ },
+ [13] = {
+ .species = SPECIES_IGGLYBUFF,
+ .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_SEISMIC_TOSS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [14] = {
+ .species = SPECIES_WOOPER,
+ .moves = {MOVE_YAWN, MOVE_DIG, MOVE_WATER_PULSE, MOVE_RAIN_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [15] = {
+ .species = SPECIES_TYROGUE,
+ .moves = {MOVE_MACH_PUNCH, MOVE_PROTECT, MOVE_DOUBLE_TEAM, MOVE_FACADE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [16] = {
+ .species = SPECIES_SENTRET,
+ .moves = {MOVE_QUICK_ATTACK, MOVE_FOLLOW_ME, MOVE_HELPING_HAND, MOVE_ASSIST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [17] = {
+ .species = SPECIES_CLEFFA,
+ .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_METRONOME},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_SERIOUS
+ },
+ [18] = {
+ .species = SPECIES_SEEDOT,
+ .moves = {MOVE_BULLET_SEED, MOVE_BIDE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [19] = {
+ .species = SPECIES_LOTAD,
+ .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_SUNNY_DAY, MOVE_MEGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [20] = {
+ .species = SPECIES_POOCHYENA,
+ .moves = {MOVE_CRUNCH, MOVE_SWAGGER, MOVE_ROAR, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [21] = {
+ .species = SPECIES_SHEDINJA,
+ .moves = {MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_SILVER_WIND, MOVE_GRUDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_NAIVE
+ },
+ [22] = {
+ .species = SPECIES_MAKUHITA,
+ .moves = {MOVE_FAKE_OUT, MOVE_SEISMIC_TOSS, MOVE_DETECT, MOVE_WHIRLWIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [23] = {
+ .species = SPECIES_WHISMUR,
+ .moves = {MOVE_UPROAR, MOVE_SWAGGER, MOVE_BODY_SLAM, MOVE_SMELLING_SALT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [24] = {
+ .species = SPECIES_ZIGZAGOON,
+ .moves = {MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_SWIFT, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_TIMID
+ },
+ [25] = {
+ .species = SPECIES_ZUBAT,
+ .moves = {MOVE_POISON_FANG, MOVE_WHIRLWIND, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [26] = {
+ .species = SPECIES_TOGEPI,
+ .moves = {MOVE_RETURN, MOVE_YAWN, MOVE_WISH, MOVE_SWEET_KISS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [27] = {
+ .species = SPECIES_SPINARAK,
+ .moves = {MOVE_SIGNAL_BEAM, MOVE_NIGHT_SHADE, MOVE_SPIDER_WEB, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [28] = {
+ .species = SPECIES_MARILL,
+ .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_RETURN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_GENTLE
+ },
+ [29] = {
+ .species = SPECIES_HOPPIP,
+ .moves = {MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_LAX
+ },
+ [30] = {
+ .species = SPECIES_SLUGMA,
+ .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_YAWN, MOVE_BODY_SLAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [31] = {
+ .species = SPECIES_SWINUB,
+ .moves = {MOVE_ICY_WIND, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_ENDURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_GENTLE
+ },
+ [32] = {
+ .species = SPECIES_SMEARGLE,
+ .moves = {MOVE_EXTREME_SPEED, MOVE_FAKE_OUT, MOVE_QUICK_ATTACK, MOVE_MACH_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [33] = {
+ .species = SPECIES_PIDGEY,
+ .moves = {MOVE_GUST, MOVE_SAND_ATTACK, MOVE_WHIRLWIND, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [34] = {
+ .species = SPECIES_RATTATA,
+ .moves = {MOVE_HYPER_FANG, MOVE_PURSUIT, MOVE_QUICK_ATTACK, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [35] = {
+ .species = SPECIES_WYNAUT,
+ .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_JOLLY
+ },
+ [36] = {
+ .species = SPECIES_SKITTY,
+ .moves = {MOVE_SING, MOVE_ATTRACT, MOVE_CHARM, MOVE_DOUBLE_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [37] = {
+ .species = SPECIES_SPEAROW,
+ .moves = {MOVE_FURY_ATTACK, MOVE_PURSUIT, MOVE_MIRROR_MOVE, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [38] = {
+ .species = SPECIES_HOOTHOOT,
+ .moves = {MOVE_CONFUSION, MOVE_HYPNOSIS, MOVE_SUPERSONIC, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [39] = {
+ .species = SPECIES_DIGLETT,
+ .moves = {MOVE_MAGNITUDE, MOVE_SLASH, MOVE_ROCK_TOMB, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAIVE
+ },
+ [40] = {
+ .species = SPECIES_LEDYBA,
+ .moves = {MOVE_PSYBEAM, MOVE_AGILITY, MOVE_BATON_PASS, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BASHFUL
+ },
+ [41] = {
+ .species = SPECIES_NINCADA,
+ .moves = {MOVE_MUD_SLAP, MOVE_DIG, MOVE_TOXIC, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [42] = {
+ .species = SPECIES_SURSKIT,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_RAIN_DANCE, MOVE_SWEET_SCENT, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [43] = {
+ .species = SPECIES_JIGGLYPUFF,
+ .moves = {MOVE_SING, MOVE_WISH, MOVE_MIMIC, MOVE_DOUBLE_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [44] = {
+ .species = SPECIES_TAILLOW,
+ .moves = {MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_ENDEAVOR, MOVE_FOCUS_ENERGY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_GENTLE
+ },
+ [45] = {
+ .species = SPECIES_WINGULL,
+ .moves = {MOVE_WATER_PULSE, MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_STEEL_WING},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [46] = {
+ .species = SPECIES_NIDORAN_M,
+ .moves = {MOVE_DOUBLE_KICK, MOVE_POISON_STING, MOVE_DISABLE, MOVE_HELPING_HAND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [47] = {
+ .species = SPECIES_NIDORAN_F,
+ .moves = {MOVE_CRUNCH, MOVE_DOUBLE_KICK, MOVE_FLATTER, MOVE_HELPING_HAND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [48] = {
+ .species = SPECIES_KIRLIA,
+ .moves = {MOVE_CONFUSION, MOVE_WILL_O_WISP, MOVE_FUTURE_SIGHT, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [49] = {
+ .species = SPECIES_MAREEP,
+ .moves = {MOVE_SHOCK_WAVE, MOVE_FLASH, MOVE_REFLECT, MOVE_COTTON_SPORE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [50] = {
+ .species = SPECIES_MEDITITE,
+ .moves = {MOVE_HI_JUMP_KICK, MOVE_MEDITATE, MOVE_SWAGGER, MOVE_PSYCH_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [51] = {
+ .species = SPECIES_SLAKOTH,
+ .moves = {MOVE_YAWN, MOVE_SCRATCH, MOVE_ENCORE, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [52] = {
+ .species = SPECIES_PARAS,
+ .moves = {MOVE_SPORE, MOVE_LEECH_LIFE, MOVE_SLASH, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [53] = {
+ .species = SPECIES_EKANS,
+ .moves = {MOVE_ACID, MOVE_DIG, MOVE_SCREECH, MOVE_TORMENT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [54] = {
+ .species = SPECIES_DITTO,
+ .moves = {MOVE_TRANSFORM, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_METAL_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [55] = {
+ .species = SPECIES_BARBOACH,
+ .moves = {MOVE_MAGNITUDE, MOVE_WATER_PULSE, MOVE_SPARK, MOVE_FUTURE_SIGHT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_BASHFUL
+ },
+ [56] = {
+ .species = SPECIES_MEOWTH,
+ .moves = {MOVE_SLASH, MOVE_BITE, MOVE_SCREECH, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [57] = {
+ .species = SPECIES_PINECO,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_TAKE_DOWN, MOVE_REFLECT, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [58] = {
+ .species = SPECIES_TRAPINCH,
+ .moves = {MOVE_TOXIC, MOVE_DIG, MOVE_SANDSTORM, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_SERIOUS
+ },
+ [59] = {
+ .species = SPECIES_SPHEAL,
+ .moves = {MOVE_ICE_BALL, MOVE_WATER_PULSE, MOVE_HAIL, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [60] = {
+ .species = SPECIES_HORSEA,
+ .moves = {MOVE_WATER_GUN, MOVE_AGILITY, MOVE_ICY_WIND, MOVE_TWISTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [61] = {
+ .species = SPECIES_SHROOMISH,
+ .moves = {MOVE_SPORE, MOVE_BULLET_SEED, MOVE_LEECH_SEED, MOVE_HEADBUTT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [62] = {
+ .species = SPECIES_SHUPPET,
+ .moves = {MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_GRUDGE, MOVE_KNOCK_OFF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RASH
+ },
+ [63] = {
+ .species = SPECIES_DUSKULL,
+ .moves = {MOVE_SKILL_SWAP, MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [64] = {
+ .species = SPECIES_ELECTRIKE,
+ .moves = {MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_ROAR, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [65] = {
+ .species = SPECIES_VULPIX,
+ .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [66] = {
+ .species = SPECIES_PIKACHU,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_DOUBLE_TEAM, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIGHT_BALL,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [67] = {
+ .species = SPECIES_SANDSHREW,
+ .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [68] = {
+ .species = SPECIES_POLIWAG,
+ .moves = {MOVE_HYPNOSIS, MOVE_ICY_WIND, MOVE_WATER_GUN, MOVE_RAIN_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [69] = {
+ .species = SPECIES_BELLSPROUT,
+ .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_STUN_SPORE, MOVE_WRAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_LAX
+ },
+ [70] = {
+ .species = SPECIES_GEODUDE,
+ .moves = {MOVE_MAGNITUDE, MOVE_ROCK_BLAST, MOVE_STRENGTH, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [71] = {
+ .species = SPECIES_DRATINI,
+ .moves = {MOVE_OUTRAGE, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_WATER_PULSE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [72] = {
+ .species = SPECIES_SNUBBULL,
+ .moves = {MOVE_BITE, MOVE_CHARM, MOVE_SWAGGER, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [73] = {
+ .species = SPECIES_REMORAID,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [74] = {
+ .species = SPECIES_LARVITAR,
+ .moves = {MOVE_THRASH, MOVE_ROCK_SLIDE, MOVE_DIG, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [75] = {
+ .species = SPECIES_BALTOY,
+ .moves = {MOVE_PSYBEAM, MOVE_ANCIENT_POWER, MOVE_LIGHT_SCREEN, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAUGHTY
+ },
+ [76] = {
+ .species = SPECIES_SNORUNT,
+ .moves = {MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_LEER, MOVE_BITE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [77] = {
+ .species = SPECIES_BAGON,
+ .moves = {MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [78] = {
+ .species = SPECIES_BELDUM,
+ .moves = {MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [79] = {
+ .species = SPECIES_GULPIN,
+ .moves = {MOVE_TOXIC, MOVE_YAWN, MOVE_PAIN_SPLIT, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SERIOUS
+ },
+ [80] = {
+ .species = SPECIES_VENONAT,
+ .moves = {MOVE_PSYBEAM, MOVE_SUPERSONIC, MOVE_STUN_SPORE, MOVE_SKILL_SWAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [81] = {
+ .species = SPECIES_MANKEY,
+ .moves = {MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SCREECH, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [82] = {
+ .species = SPECIES_MACHOP,
+ .moves = {MOVE_SEISMIC_TOSS, MOVE_REVENGE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [83] = {
+ .species = SPECIES_SHELLDER,
+ .moves = {MOVE_ICICLE_SPEAR, MOVE_SUPERSONIC, MOVE_CLAMP, MOVE_WITHDRAW},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [84] = {
+ .species = SPECIES_SMOOCHUM,
+ .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_MUD_SLAP, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [85] = {
+ .species = SPECIES_NUMEL,
+ .moves = {MOVE_EMBER, MOVE_MAGNITUDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [86] = {
+ .species = SPECIES_CARVANHA,
+ .moves = {MOVE_BITE, MOVE_SCREECH, MOVE_SCARY_FACE, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [87] = {
+ .species = SPECIES_CORPHISH,
+ .moves = {MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [88] = {
+ .species = SPECIES_CHARMANDER,
+ .moves = {MOVE_FIRE_SPIN, MOVE_METAL_CLAW, MOVE_SMOKESCREEN, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [89] = {
+ .species = SPECIES_CYNDAQUIL,
+ .moves = {MOVE_EMBER, MOVE_SWIFT, MOVE_QUICK_ATTACK, MOVE_SMOKESCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [90] = {
+ .species = SPECIES_ABRA,
+ .moves = {MOVE_MIMIC, MOVE_METRONOME, MOVE_FLASH, MOVE_SEISMIC_TOSS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [91] = {
+ .species = SPECIES_DODUO,
+ .moves = {MOVE_FURY_ATTACK, MOVE_UPROAR, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [92] = {
+ .species = SPECIES_GASTLY,
+ .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_NIGHT_SHADE, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [93] = {
+ .species = SPECIES_SWABLU,
+ .moves = {MOVE_TAKE_DOWN, MOVE_DREAM_EATER, MOVE_SING, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [94] = {
+ .species = SPECIES_TREECKO,
+ .moves = {MOVE_BULLET_SEED, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_LONELY
+ },
+ [95] = {
+ .species = SPECIES_TORCHIC,
+ .moves = {MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [96] = {
+ .species = SPECIES_MUDKIP,
+ .moves = {MOVE_WHIRLPOOL, MOVE_ENDEAVOR, MOVE_MUD_SPORT, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [97] = {
+ .species = SPECIES_SQUIRTLE,
+ .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_WITHDRAW, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [98] = {
+ .species = SPECIES_TOTODILE,
+ .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_SCREECH, MOVE_ICY_WIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [99] = {
+ .species = SPECIES_SLOWPOKE,
+ .moves = {MOVE_CONFUSION, MOVE_DISABLE, MOVE_WATER_PULSE, MOVE_YAWN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [100] = {
+ .species = SPECIES_BULBASAUR,
+ .moves = {MOVE_RAZOR_LEAF, MOVE_SWEET_SCENT, MOVE_SLEEP_POWDER, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [101] = {
+ .species = SPECIES_CHIKORITA,
+ .moves = {MOVE_SECRET_POWER, MOVE_BULLET_SEED, MOVE_MUD_SLAP, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [102] = {
+ .species = SPECIES_ODDISH,
+ .moves = {MOVE_ACID, MOVE_STUN_SPORE, MOVE_SWEET_SCENT, MOVE_MOONLIGHT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [103] = {
+ .species = SPECIES_PSYDUCK,
+ .moves = {MOVE_CONFUSION, MOVE_FURY_SWIPES, MOVE_AERIAL_ACE, MOVE_DISABLE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HASTY
+ },
+ [104] = {
+ .species = SPECIES_CUBONE,
+ .moves = {MOVE_BONE_CLUB, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [105] = {
+ .species = SPECIES_GOLDEEN,
+ .moves = {MOVE_WATERFALL, MOVE_FURY_ATTACK, MOVE_AGILITY, MOVE_PSYBEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [106] = {
+ .species = SPECIES_NATU,
+ .moves = {MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_FLASH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [107] = {
+ .species = SPECIES_CLEFAIRY,
+ .moves = {MOVE_FOLLOW_ME, MOVE_RETURN, MOVE_ENCORE, MOVE_SING},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [108] = {
+ .species = SPECIES_MAGNEMITE,
+ .moves = {MOVE_SHOCK_WAVE, MOVE_SUPERSONIC, MOVE_METAL_SOUND, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_GENTLE
+ },
+ [109] = {
+ .species = SPECIES_SEEL,
+ .moves = {MOVE_AURORA_BEAM, MOVE_DIVE, MOVE_BODY_SLAM, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [110] = {
+ .species = SPECIES_GRIMER,
+ .moves = {MOVE_SLUDGE, MOVE_ROCK_TOMB, MOVE_ACID_ARMOR, MOVE_MINIMIZE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [111] = {
+ .species = SPECIES_KRABBY,
+ .moves = {MOVE_CRABHAMMER, MOVE_MUD_SHOT, MOVE_FLAIL, MOVE_KNOCK_OFF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [112] = {
+ .species = SPECIES_EXEGGCUTE,
+ .moves = {MOVE_CONFUSION, MOVE_ANCIENT_POWER, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [113] = {
+ .species = SPECIES_EEVEE,
+ .moves = {MOVE_CHARM, MOVE_ATTRACT, MOVE_FLAIL, MOVE_ENDURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [114] = {
+ .species = SPECIES_DROWZEE,
+ .moves = {MOVE_CONFUSION, MOVE_HEADBUTT, MOVE_DISABLE, MOVE_BARRIER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [115] = {
+ .species = SPECIES_VOLTORB,
+ .moves = {MOVE_SPARK, MOVE_SCREECH, MOVE_ROLLOUT, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [116] = {
+ .species = SPECIES_CHINCHOU,
+ .moves = {MOVE_SPARK, MOVE_DIVE, MOVE_CONFUSE_RAY, MOVE_TAKE_DOWN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [117] = {
+ .species = SPECIES_TEDDIURSA,
+ .moves = {MOVE_SECRET_POWER, MOVE_FAKE_TEARS, MOVE_FAINT_ATTACK, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [118] = {
+ .species = SPECIES_DELIBIRD,
+ .moves = {MOVE_PRESENT, MOVE_ICE_BALL, MOVE_AERIAL_ACE, MOVE_HAIL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [119] = {
+ .species = SPECIES_HOUNDOUR,
+ .moves = {MOVE_CRUNCH, MOVE_EMBER, MOVE_ROAR, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [120] = {
+ .species = SPECIES_PHANPY,
+ .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_ROCK_TOMB, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [121] = {
+ .species = SPECIES_SPOINK,
+ .moves = {MOVE_PSYWAVE, MOVE_BOUNCE, MOVE_MAGIC_COAT, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [122] = {
+ .species = SPECIES_ARON,
+ .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_METAL_SOUND, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [123] = {
+ .species = SPECIES_LUVDISC,
+ .moves = {MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_DIVE, MOVE_RAIN_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [124] = {
+ .species = SPECIES_TENTACOOL,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER, MOVE_WRAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [125] = {
+ .species = SPECIES_CACNEA,
+ .moves = {MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_COTTON_SPORE, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [126] = {
+ .species = SPECIES_UNOWN,
+ .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [127] = {
+ .species = SPECIES_KOFFING,
+ .moves = {MOVE_SLUDGE, MOVE_SMOKESCREEN, MOVE_TORMENT, MOVE_HAZE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [128] = {
+ .species = SPECIES_STARYU,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_MINIMIZE, MOVE_SWIFT, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [129] = {
+ .species = SPECIES_SKIPLOOM,
+ .moves = {MOVE_MEGA_DRAIN, MOVE_CONFUSION, MOVE_COTTON_SPORE, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [130] = {
+ .species = SPECIES_NUZLEAF,
+ .moves = {MOVE_EXTRASENSORY, MOVE_FAKE_OUT, MOVE_RAZOR_WIND, MOVE_FAINT_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [131] = {
+ .species = SPECIES_LOMBRE,
+ .moves = {MOVE_WATER_PULSE, MOVE_FAKE_OUT, MOVE_BRICK_BREAK, MOVE_ABSORB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [132] = {
+ .species = SPECIES_VIBRAVA,
+ .moves = {MOVE_DRAGON_BREATH, MOVE_DIG, MOVE_SCREECH, MOVE_ROCK_TOMB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [133] = {
+ .species = SPECIES_RHYHORN,
+ .moves = {MOVE_ROCK_BLAST, MOVE_DIG, MOVE_SCARY_FACE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [134] = {
+ .species = SPECIES_CLAMPERL,
+ .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_IRON_DEFENSE, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [135] = {
+ .species = SPECIES_PIDGEOTTO,
+ .moves = {MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_FEATHER_DANCE, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [136] = {
+ .species = SPECIES_GROWLITHE,
+ .moves = {MOVE_FLAME_WHEEL, MOVE_BITE, MOVE_ROAR, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [137] = {
+ .species = SPECIES_FARFETCHD,
+ .moves = {MOVE_SLASH, MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_STICK,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [138] = {
+ .species = SPECIES_OMANYTE,
+ .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ANCIENT_POWER, MOVE_TICKLE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [139] = {
+ .species = SPECIES_KABUTO,
+ .moves = {MOVE_MEGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_SAND_ATTACK, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [140] = {
+ .species = SPECIES_LILEEP,
+ .moves = {MOVE_ANCIENT_POWER, MOVE_ACID, MOVE_INGRAIN, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [141] = {
+ .species = SPECIES_ANORITH,
+ .moves = {MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_ANCIENT_POWER, MOVE_WATER_GUN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [142] = {
+ .species = SPECIES_AIPOM,
+ .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [143] = {
+ .species = SPECIES_ELEKID,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_QUICK_ATTACK, MOVE_SWIFT, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAIVE
+ },
+ [144] = {
+ .species = SPECIES_LOUDRED,
+ .moves = {MOVE_STOMP, MOVE_HOWL, MOVE_ASTONISH, MOVE_SUPERSONIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [145] = {
+ .species = SPECIES_SPINDA,
+ .moves = {MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FAINT_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [146] = {
+ .species = SPECIES_NIDORINA,
+ .moves = {MOVE_DOUBLE_KICK, MOVE_BITE, MOVE_AERIAL_ACE, MOVE_FLATTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [147] = {
+ .species = SPECIES_NIDORINO,
+ .moves = {MOVE_DOUBLE_KICK, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_FLATTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [148] = {
+ .species = SPECIES_FLAAFFY,
+ .moves = {MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MILD
+ },
+ [149] = {
+ .species = SPECIES_MAGBY,
+ .moves = {MOVE_FIRE_PUNCH, MOVE_SMOKESCREEN, MOVE_CONFUSE_RAY, MOVE_SMOG},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [150] = {
+ .species = SPECIES_NOSEPASS,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [151] = {
+ .species = SPECIES_CORSOLA,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_MIRROR_COAT, MOVE_ATTRACT, MOVE_ANCIENT_POWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [152] = {
+ .species = SPECIES_MAWILE,
+ .moves = {MOVE_CRUNCH, MOVE_FAKE_TEARS, MOVE_IRON_DEFENSE, MOVE_BATON_PASS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [153] = {
+ .species = SPECIES_BUTTERFREE,
+ .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_WHIRLWIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [154] = {
+ .species = SPECIES_BEEDRILL,
+ .moves = {MOVE_TWINEEDLE, MOVE_PURSUIT, MOVE_ENDEAVOR, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAUGHTY
+ },
+ [155] = {
+ .species = SPECIES_POLIWHIRL,
+ .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_SLAP, MOVE_ICY_WIND, MOVE_RAIN_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [156] = {
+ .species = SPECIES_ONIX,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_BIND, MOVE_DRAGON_BREATH, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [157] = {
+ .species = SPECIES_BEAUTIFLY,
+ .moves = {MOVE_SILVER_WIND, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_WHIRLWIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [158] = {
+ .species = SPECIES_DUSTOX,
+ .moves = {MOVE_SILVER_WIND, MOVE_TOXIC, MOVE_PSYBEAM, MOVE_WHIRLWIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [159] = {
+ .species = SPECIES_LEDIAN,
+ .moves = {MOVE_COMET_PUNCH, MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_BASHFUL
+ },
+ [160] = {
+ .species = SPECIES_ARIADOS,
+ .moves = {MOVE_SIGNAL_BEAM, MOVE_SPIDER_WEB, MOVE_NIGHT_SHADE, MOVE_TOXIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_SERIOUS
+ },
+ [161] = {
+ .species = SPECIES_YANMA,
+ .moves = {MOVE_SIGNAL_BEAM, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DETECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_RELAXED
+ },
+ [162] = {
+ .species = SPECIES_DELCATTY,
+ .moves = {MOVE_SECRET_POWER, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_HEAL_BELL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [163] = {
+ .species = SPECIES_SABLEYE,
+ .moves = {MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_KNOCK_OFF, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [164] = {
+ .species = SPECIES_LICKITUNG,
+ .moves = {MOVE_SLAM, MOVE_BRICK_BREAK, MOVE_LICK, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [165] = {
+ .species = SPECIES_WEEPINBELL,
+ .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_WRAP, MOVE_SWEET_SCENT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [166] = {
+ .species = SPECIES_GRAVELER,
+ .moves = {MOVE_MAGNITUDE, MOVE_ROCK_THROW, MOVE_DEFENSE_CURL, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [167] = {
+ .species = SPECIES_GLOOM,
+ .moves = {MOVE_PETAL_DANCE, MOVE_ACID, MOVE_STUN_SPORE, MOVE_MOONLIGHT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [168] = {
+ .species = SPECIES_PORYGON,
+ .moves = {MOVE_PSYBEAM, MOVE_ICY_WIND, MOVE_RECYCLE, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [169] = {
+ .species = SPECIES_KADABRA,
+ .moves = {MOVE_CONFUSION, MOVE_ROLE_PLAY, MOVE_FUTURE_SIGHT, MOVE_DISABLE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [170] = {
+ .species = SPECIES_WAILMER,
+ .moves = {MOVE_WHIRLPOOL, MOVE_ROAR, MOVE_DEFENSE_CURL, MOVE_ROLLOUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_DOCILE
+ },
+ [171] = {
+ .species = SPECIES_ROSELIA,
+ .moves = {MOVE_MAGICAL_LEAF, MOVE_TOXIC, MOVE_GRASS_WHISTLE, MOVE_COTTON_SPORE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [172] = {
+ .species = SPECIES_VOLBEAT,
+ .moves = {MOVE_SILVER_WIND, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [173] = {
+ .species = SPECIES_ILLUMISE,
+ .moves = {MOVE_SILVER_WIND, MOVE_WISH, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [174] = {
+ .species = SPECIES_IVYSAUR,
+ .moves = {MOVE_PETAL_DANCE, MOVE_GROWTH, MOVE_SWEET_SCENT, MOVE_FURY_CUTTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_GENTLE
+ },
+ [175] = {
+ .species = SPECIES_CHARMELEON,
+ .moves = {MOVE_SLASH, MOVE_FIRE_SPIN, MOVE_SWORDS_DANCE, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [176] = {
+ .species = SPECIES_WARTORTLE,
+ .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_MUD_SLAP, MOVE_YAWN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [177] = {
+ .species = SPECIES_PARASECT,
+ .moves = {MOVE_SLASH, MOVE_PSYBEAM, MOVE_STUN_SPORE, MOVE_FLASH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_RASH
+ },
+ [178] = {
+ .species = SPECIES_MACHOKE,
+ .moves = {MOVE_LOW_KICK, MOVE_ROCK_TOMB, MOVE_FORESIGHT, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [179] = {
+ .species = SPECIES_HAUNTER,
+ .moves = {MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_SPITE, MOVE_GRUDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RASH
+ },
+ [180] = {
+ .species = SPECIES_BAYLEEF,
+ .moves = {MOVE_RAZOR_LEAF, MOVE_TOXIC, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [181] = {
+ .species = SPECIES_QUILAVA,
+ .moves = {MOVE_FLAME_WHEEL, MOVE_FURY_SWIPES, MOVE_SWIFT, MOVE_SMOKESCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [182] = {
+ .species = SPECIES_CROCONAW,
+ .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_BITE, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [183] = {
+ .species = SPECIES_TOGETIC,
+ .moves = {MOVE_AERIAL_ACE, MOVE_MAGICAL_LEAF, MOVE_WISH, MOVE_FOLLOW_ME},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [184] = {
+ .species = SPECIES_MURKROW,
+ .moves = {MOVE_FAINT_ATTACK, MOVE_FLY, MOVE_TORMENT, MOVE_TAUNT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [185] = {
+ .species = SPECIES_WOBBUFFET,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM, MOVE_SAFEGUARD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [186] = {
+ .species = SPECIES_PLUSLE,
+ .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [187] = {
+ .species = SPECIES_MINUN,
+ .moves = {MOVE_SPARK, MOVE_CHARM, MOVE_ENCORE, MOVE_HELPING_HAND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [188] = {
+ .species = SPECIES_GROVYLE,
+ .moves = {MOVE_FURY_CUTTER, MOVE_ENDEAVOR, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [189] = {
+ .species = SPECIES_COMBUSKEN,
+ .moves = {MOVE_EMBER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [190] = {
+ .species = SPECIES_MARSHTOMP,
+ .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ROCK_TOMB, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [191] = {
+ .species = SPECIES_PONYTA,
+ .moves = {MOVE_FIRE_SPIN, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_TAIL_WHIP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [192] = {
+ .species = SPECIES_AZUMARILL,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_FACADE, MOVE_DIG, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_DOCILE
+ },
+ [193] = {
+ .species = SPECIES_SUDOWOODO,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM, MOVE_BLOCK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [194] = {
+ .species = SPECIES_MAGCARGO,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_EMBER, MOVE_ACID_ARMOR, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_GENTLE
+ },
+ [195] = {
+ .species = SPECIES_PUPITAR,
+ .moves = {MOVE_DIG, MOVE_BITE, MOVE_SCARY_FACE, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [196] = {
+ .species = SPECIES_SEALEO,
+ .moves = {MOVE_ICE_BALL, MOVE_HAIL, MOVE_SNORE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [197] = {
+ .species = SPECIES_RATICATE,
+ .moves = {MOVE_ENDEAVOR, MOVE_PURSUIT, MOVE_SCARY_FACE, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAIVE
+ },
+ [198] = {
+ .species = SPECIES_MASQUERAIN,
+ .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ICY_WIND, MOVE_STUN_SPORE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_RELAXED
+ },
+ [199] = {
+ .species = SPECIES_FURRET,
+ .moves = {MOVE_SLAM, MOVE_PROTECT, MOVE_HELPING_HAND, MOVE_FOLLOW_ME},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_SERIOUS
+ },
+ [200] = {
+ .species = SPECIES_DUNSPARCE,
+ .moves = {MOVE_HEADBUTT, MOVE_GLARE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [201] = {
+ .species = SPECIES_DRAGONAIR,
+ .moves = {MOVE_DRAGON_BREATH, MOVE_LEER, MOVE_WRAP, MOVE_SAFEGUARD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [202] = {
+ .species = SPECIES_MIGHTYENA,
+ .moves = {MOVE_BITE, MOVE_POISON_FANG, MOVE_TAUNT, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_TIMID
+ },
+ [203] = {
+ .species = SPECIES_LINOONE,
+ .moves = {MOVE_SECRET_POWER, MOVE_SAND_ATTACK, MOVE_COVET, MOVE_TICKLE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [204] = {
+ .species = SPECIES_CASTFORM,
+ .moves = {MOVE_EMBER, MOVE_WATER_PULSE, MOVE_SHOCK_WAVE, MOVE_ICY_WIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HASTY
+ },
+ [205] = {
+ .species = SPECIES_SHELGON,
+ .moves = {MOVE_HEADBUTT, MOVE_DRAGON_BREATH, MOVE_PROTECT, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [206] = {
+ .species = SPECIES_METANG,
+ .moves = {MOVE_METAL_CLAW, MOVE_CONFUSION, MOVE_PURSUIT, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [207] = {
+ .species = SPECIES_WIGGLYTUFF,
+ .moves = {MOVE_SING, MOVE_DISABLE, MOVE_WISH, MOVE_SECRET_POWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_RELAXED
+ },
+ [208] = {
+ .species = SPECIES_SUNFLORA,
+ .moves = {MOVE_PETAL_DANCE, MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [209] = {
+ .species = SPECIES_CHIMECHO,
+ .moves = {MOVE_PSYWAVE, MOVE_TAKE_DOWN, MOVE_HEAL_BELL, MOVE_SAFEGUARD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [210] = {
+ .species = SPECIES_GLIGAR,
+ .moves = {MOVE_METAL_CLAW, MOVE_DIG, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HASTY
+ },
+ [211] = {
+ .species = SPECIES_QWILFISH,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_PIN_MISSILE, MOVE_SPIKES, MOVE_MINIMIZE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK,
+ .nature = NATURE_IMPISH
+ },
+ [212] = {
+ .species = SPECIES_SNEASEL,
+ .moves = {MOVE_FAINT_ATTACK, MOVE_FAKE_OUT, MOVE_ICY_WIND, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [213] = {
+ .species = SPECIES_PELIPPER,
+ .moves = {MOVE_WATER_PULSE, MOVE_AERIAL_ACE, MOVE_STOCKPILE, MOVE_SWALLOW},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [214] = {
+ .species = SPECIES_SWELLOW,
+ .moves = {MOVE_FLY, MOVE_ENDEAVOR, MOVE_FACADE, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [215] = {
+ .species = SPECIES_LAIRON,
+ .moves = {MOVE_METAL_CLAW, MOVE_ROCK_TOMB, MOVE_IRON_DEFENSE, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [216] = {
+ .species = SPECIES_TANGELA,
+ .moves = {MOVE_MEGA_DRAIN, MOVE_SLAM, MOVE_TOXIC, MOVE_BIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [217] = {
+ .species = SPECIES_ARBOK,
+ .moves = {MOVE_POISON_FANG, MOVE_DIG, MOVE_BITE, MOVE_GLARE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [218] = {
+ .species = SPECIES_PERSIAN,
+ .moves = {MOVE_FAKE_OUT, MOVE_SLASH, MOVE_TORMENT, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [219] = {
+ .species = SPECIES_SEADRA,
+ .moves = {MOVE_AURORA_BEAM, MOVE_SMOKESCREEN, MOVE_WATER_GUN, MOVE_RAIN_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [220] = {
+ .species = SPECIES_KECLEON,
+ .moves = {MOVE_SECRET_POWER, MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_SEISMIC_TOSS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAIVE
+ },
+ [221] = {
+ .species = SPECIES_VIGOROTH,
+ .moves = {MOVE_SLASH, MOVE_COUNTER, MOVE_ENCORE, MOVE_UPROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [222] = {
+ .species = SPECIES_LUNATONE,
+ .moves = {MOVE_CONFUSION, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [223] = {
+ .species = SPECIES_SOLROCK,
+ .moves = {MOVE_CONFUSION, MOVE_FIRE_SPIN, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [224] = {
+ .species = SPECIES_NOCTOWL,
+ .moves = {MOVE_CONFUSION, MOVE_AERIAL_ACE, MOVE_FAINT_ATTACK, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [225] = {
+ .species = SPECIES_SANDSLASH,
+ .moves = {MOVE_CRUSH_CLAW, MOVE_ROCK_SLIDE, MOVE_SWIFT, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [226] = {
+ .species = SPECIES_VENOMOTH,
+ .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_SLEEP_POWDER, MOVE_SKILL_SWAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [227] = {
+ .species = SPECIES_CHANSEY,
+ .moves = {MOVE_METRONOME, MOVE_REFRESH, MOVE_DEFENSE_CURL, MOVE_MINIMIZE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_RELAXED
+ },
+ [228] = {
+ .species = SPECIES_SEAKING,
+ .moves = {MOVE_WATER_PULSE, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [229] = {
+ .species = SPECIES_JUMPLUFF,
+ .moves = {MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [230] = {
+ .species = SPECIES_PILOSWINE,
+ .moves = {MOVE_DIG, MOVE_ANCIENT_POWER, MOVE_HAIL, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [231] = {
+ .species = SPECIES_GOLBAT,
+ .moves = {MOVE_AIR_CUTTER, MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_STEEL_WING},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [232] = {
+ .species = SPECIES_PRIMEAPE,
+ .moves = {MOVE_KARATE_CHOP, MOVE_COUNTER, MOVE_SWAGGER, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [233] = {
+ .species = SPECIES_HITMONLEE,
+ .moves = {MOVE_ROLLING_KICK, MOVE_BRICK_BREAK, MOVE_FOCUS_ENERGY, MOVE_FACADE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [234] = {
+ .species = SPECIES_HITMONCHAN,
+ .moves = {MOVE_MACH_PUNCH, MOVE_SKY_UPPERCUT, MOVE_DETECT, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [235] = {
+ .species = SPECIES_GIRAFARIG,
+ .moves = {MOVE_PSYBEAM, MOVE_STOMP, MOVE_WISH, MOVE_SKILL_SWAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [236] = {
+ .species = SPECIES_HITMONTOP,
+ .moves = {MOVE_TRIPLE_KICK, MOVE_DIG, MOVE_MACH_PUNCH, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [237] = {
+ .species = SPECIES_BANETTE,
+ .moves = {MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SPITE, MOVE_KNOCK_OFF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [238] = {
+ .species = SPECIES_NINJASK,
+ .moves = {MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_ENDURE, MOVE_DIG},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MILD
+ },
+ [239] = {
+ .species = SPECIES_SEVIPER,
+ .moves = {MOVE_POISON_TAIL, MOVE_BITE, MOVE_GLARE, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [240] = {
+ .species = SPECIES_ZANGOOSE,
+ .moves = {MOVE_SLASH, MOVE_DOUBLE_KICK, MOVE_ROAR, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [241] = {
+ .species = SPECIES_CAMERUPT,
+ .moves = {MOVE_MAGNITUDE, MOVE_PROTECT, MOVE_SANDSTORM, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [242] = {
+ .species = SPECIES_SHARPEDO,
+ .moves = {MOVE_SLASH, MOVE_BITE, MOVE_WATER_PULSE, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [243] = {
+ .species = SPECIES_TROPIUS,
+ .moves = {MOVE_MAGICAL_LEAF, MOVE_WHIRLWIND, MOVE_AERIAL_ACE, MOVE_STEEL_WING},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [244] = {
+ .species = SPECIES_MAGNETON,
+ .moves = {MOVE_SHOCK_WAVE, MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_LONELY
+ },
+ [245] = {
+ .species = SPECIES_MANTINE,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_AERIAL_ACE, MOVE_RAIN_DANCE, MOVE_ICY_WIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [246] = {
+ .species = SPECIES_STANTLER,
+ .moves = {MOVE_EXTRASENSORY, MOVE_CONFUSE_RAY, MOVE_STOMP, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_GENTLE
+ },
+ [247] = {
+ .species = SPECIES_ABSOL,
+ .moves = {MOVE_BITE, MOVE_RAZOR_WIND, MOVE_FUTURE_SIGHT, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [248] = {
+ .species = SPECIES_SWALOT,
+ .moves = {MOVE_STOCKPILE, MOVE_SWALLOW, MOVE_SPIT_UP, MOVE_SLUDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIRKY
+ },
+ [249] = {
+ .species = SPECIES_CRAWDAUNT,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_VICE_GRIP, MOVE_KNOCK_OFF, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [250] = {
+ .species = SPECIES_PIDGEOT,
+ .moves = {MOVE_AERIAL_ACE, MOVE_FEATHER_DANCE, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [251] = {
+ .species = SPECIES_GRUMPIG,
+ .moves = {MOVE_PSYBEAM, MOVE_CONFUSE_RAY, MOVE_FUTURE_SIGHT, MOVE_MAGIC_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [252] = {
+ .species = SPECIES_TORKOAL,
+ .moves = {MOVE_EMBER, MOVE_FIRE_SPIN, MOVE_SMOKESCREEN, MOVE_AMNESIA},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [253] = {
+ .species = SPECIES_KINGLER,
+ .moves = {MOVE_CRABHAMMER, MOVE_METAL_CLAW, MOVE_MUD_SHOT, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [254] = {
+ .species = SPECIES_CACTURNE,
+ .moves = {MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_ACID, MOVE_MEGA_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_HASTY
+ },
+ [255] = {
+ .species = SPECIES_BELLOSSOM,
+ .moves = {MOVE_PETAL_DANCE, MOVE_SAFEGUARD, MOVE_SUNNY_DAY, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [256] = {
+ .species = SPECIES_OCTILLERY,
+ .moves = {MOVE_OCTAZOOKA, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_ROCK_BLAST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [257] = {
+ .species = SPECIES_HUNTAIL,
+ .moves = {MOVE_WHIRLPOOL, MOVE_SCARY_FACE, MOVE_MUD_SLAP, MOVE_BITE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [258] = {
+ .species = SPECIES_GOREBYSS,
+ .moves = {MOVE_WHIRLPOOL, MOVE_AMNESIA, MOVE_ICY_WIND, MOVE_CONFUSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [259] = {
+ .species = SPECIES_RELICANTH,
+ .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_HARDEN, MOVE_AMNESIA},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [260] = {
+ .species = SPECIES_OMASTAR,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_SPIKE_CANNON, MOVE_TICKLE, MOVE_ANCIENT_POWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [261] = {
+ .species = SPECIES_KABUTOPS,
+ .moves = {MOVE_SLASH, MOVE_DIG, MOVE_FURY_CUTTER, MOVE_KNOCK_OFF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [262] = {
+ .species = SPECIES_POLIWRATH,
+ .moves = {MOVE_SUBMISSION, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_BUBBLE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [263] = {
+ .species = SPECIES_SCYTHER,
+ .moves = {MOVE_FURY_CUTTER, MOVE_AERIAL_ACE, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [264] = {
+ .species = SPECIES_PINSIR,
+ .moves = {MOVE_SUBMISSION, MOVE_FOCUS_ENERGY, MOVE_SWORDS_DANCE, MOVE_REVENGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [265] = {
+ .species = SPECIES_POLITOED,
+ .moves = {MOVE_DIVE, MOVE_DIG, MOVE_HYPNOSIS, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_RELAXED
+ },
+ [266] = {
+ .species = SPECIES_CLOYSTER,
+ .moves = {MOVE_AURORA_BEAM, MOVE_SPIKE_CANNON, MOVE_SUPERSONIC, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [267] = {
+ .species = SPECIES_DELCATTY,
+ .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_THUNDERBOLT, MOVE_ICE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [268] = {
+ .species = SPECIES_SABLEYE,
+ .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [269] = {
+ .species = SPECIES_LICKITUNG,
+ .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [270] = {
+ .species = SPECIES_WEEPINBELL,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_RAZOR_LEAF, MOVE_SLEEP_POWDER, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIRKY
+ },
+ [271] = {
+ .species = SPECIES_GRAVELER,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [272] = {
+ .species = SPECIES_GLOOM,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SLUDGE_BOMB, MOVE_MOONLIGHT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [273] = {
+ .species = SPECIES_PORYGON,
+ .moves = {MOVE_TRI_ATTACK, MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [274] = {
+ .species = SPECIES_KADABRA,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_REFLECT, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [275] = {
+ .species = SPECIES_WAILMER,
+ .moves = {MOVE_WATER_SPOUT, MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_DOCILE
+ },
+ [276] = {
+ .species = SPECIES_ROSELIA,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_GRASS_WHISTLE, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [277] = {
+ .species = SPECIES_VOLBEAT,
+ .moves = {MOVE_SIGNAL_BEAM, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_TAIL_GLOW},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [278] = {
+ .species = SPECIES_ILLUMISE,
+ .moves = {MOVE_SILVER_WIND, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_GIGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [279] = {
+ .species = SPECIES_IVYSAUR,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_LEECH_SEED},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [280] = {
+ .species = SPECIES_CHARMELEON,
+ .moves = {MOVE_FLAMETHROWER, MOVE_SLASH, MOVE_ANCIENT_POWER, MOVE_DRAGON_RAGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [281] = {
+ .species = SPECIES_WARTORTLE,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAPID_SPIN, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [282] = {
+ .species = SPECIES_PARASECT,
+ .moves = {MOVE_SPORE, MOVE_GIGA_DRAIN, MOVE_DIG, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [283] = {
+ .species = SPECIES_MACHOKE,
+ .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FORESIGHT, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [284] = {
+ .species = SPECIES_HAUNTER,
+ .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [285] = {
+ .species = SPECIES_BAYLEEF,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_BODY_SLAM, MOVE_GRASS_WHISTLE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [286] = {
+ .species = SPECIES_QUILAVA,
+ .moves = {MOVE_FLAMETHROWER, MOVE_CRUSH_CLAW, MOVE_BODY_SLAM, MOVE_SMOKESCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [287] = {
+ .species = SPECIES_CROCONAW,
+ .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_DIG},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [288] = {
+ .species = SPECIES_TOGETIC,
+ .moves = {MOVE_RETURN, MOVE_SWEET_KISS, MOVE_AERIAL_ACE, MOVE_YAWN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [289] = {
+ .species = SPECIES_MURKROW,
+ .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [290] = {
+ .species = SPECIES_WOBBUFFET,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_ENCORE, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_CAREFUL
+ },
+ [291] = {
+ .species = SPECIES_PLUSLE,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_SEISMIC_TOSS, MOVE_WISH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_DOCILE
+ },
+ [292] = {
+ .species = SPECIES_MINUN,
+ .moves = {MOVE_THUNDERBOLT, MOVE_ATTRACT, MOVE_CHARM, MOVE_WISH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_DOCILE
+ },
+ [293] = {
+ .species = SPECIES_GROVYLE,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_CRUSH_CLAW, MOVE_SCREECH, MOVE_ROCK_TOMB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [294] = {
+ .species = SPECIES_COMBUSKEN,
+ .moves = {MOVE_FLAMETHROWER, MOVE_SKY_UPPERCUT, MOVE_SLASH, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [295] = {
+ .species = SPECIES_MARSHTOMP,
+ .moves = {MOVE_MUDDY_WATER, MOVE_EARTHQUAKE, MOVE_MUD_SLAP, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [296] = {
+ .species = SPECIES_PONYTA,
+ .moves = {MOVE_FLAMETHROWER, MOVE_BODY_SLAM, MOVE_DOUBLE_KICK, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [297] = {
+ .species = SPECIES_AZUMARILL,
+ .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_IRON_TAIL, MOVE_DIG},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [298] = {
+ .species = SPECIES_SUDOWOODO,
+ .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_LOW_KICK, MOVE_SELF_DESTRUCT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [299] = {
+ .species = SPECIES_MAGCARGO,
+ .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [300] = {
+ .species = SPECIES_PUPITAR,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [301] = {
+ .species = SPECIES_SEALEO,
+ .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_BODY_SLAM, MOVE_HAIL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [302] = {
+ .species = SPECIES_RATICATE,
+ .moves = {MOVE_SUPER_FANG, MOVE_HYPER_FANG, MOVE_SHADOW_BALL, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [303] = {
+ .species = SPECIES_MASQUERAIN,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_GIGA_DRAIN, MOVE_STUN_SPORE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIET
+ },
+ [304] = {
+ .species = SPECIES_FURRET,
+ .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_FOLLOW_ME},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [305] = {
+ .species = SPECIES_DUNSPARCE,
+ .moves = {MOVE_ICE_BEAM, MOVE_ROCK_TOMB, MOVE_BITE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIET
+ },
+ [306] = {
+ .species = SPECIES_DRAGONAIR,
+ .moves = {MOVE_RETURN, MOVE_REST, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [307] = {
+ .species = SPECIES_MIGHTYENA,
+ .moves = {MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIRKY
+ },
+ [308] = {
+ .species = SPECIES_LINOONE,
+ .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_THUNDER_WAVE, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [309] = {
+ .species = SPECIES_CASTFORM,
+ .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_WATER_PULSE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [310] = {
+ .species = SPECIES_SHELGON,
+ .moves = {MOVE_FRUSTRATION, MOVE_DRAGON_DANCE, MOVE_CRUNCH, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [311] = {
+ .species = SPECIES_METANG,
+ .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_BODY_SLAM, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [312] = {
+ .species = SPECIES_WIGGLYTUFF,
+ .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_DREAM_EATER, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_DOCILE
+ },
+ [313] = {
+ .species = SPECIES_SUNFLORA,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_GROWTH, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [314] = {
+ .species = SPECIES_CHIMECHO,
+ .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEAL_BELL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [315] = {
+ .species = SPECIES_GLIGAR,
+ .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_GUILLOTINE, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [316] = {
+ .species = SPECIES_QWILFISH,
+ .moves = {MOVE_REVENGE, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [317] = {
+ .species = SPECIES_SNEASEL,
+ .moves = {MOVE_CRUSH_CLAW, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_JOLLY
+ },
+ [318] = {
+ .species = SPECIES_PELIPPER,
+ .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_AERIAL_ACE, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [319] = {
+ .species = SPECIES_SWELLOW,
+ .moves = {MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PURSUIT, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [320] = {
+ .species = SPECIES_LAIRON,
+ .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_ROAR, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [321] = {
+ .species = SPECIES_TANGELA,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_STUN_SPORE, MOVE_REST, MOVE_AMNESIA},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [322] = {
+ .species = SPECIES_ARBOK,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_GLARE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [323] = {
+ .species = SPECIES_PERSIAN,
+ .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_ROAR, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [324] = {
+ .species = SPECIES_SEADRA,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_FRUSTRATION, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [325] = {
+ .species = SPECIES_KECLEON,
+ .moves = {MOVE_TRICK, MOVE_BRICK_BREAK, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [326] = {
+ .species = SPECIES_VIGOROTH,
+ .moves = {MOVE_CRUSH_CLAW, MOVE_REVERSAL, MOVE_ENDURE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [327] = {
+ .species = SPECIES_LUNATONE,
+ .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_CALM_MIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [328] = {
+ .species = SPECIES_SOLROCK,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COSMIC_POWER, MOVE_OVERHEAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [329] = {
+ .species = SPECIES_NOCTOWL,
+ .moves = {MOVE_PSYCHIC, MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIET
+ },
+ [330] = {
+ .species = SPECIES_SANDSLASH,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUSH_CLAW, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [331] = {
+ .species = SPECIES_VENOMOTH,
+ .moves = {MOVE_SIGNAL_BEAM, MOVE_PSYCHIC, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [332] = {
+ .species = SPECIES_CHANSEY,
+ .moves = {MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_SOFT_BOILED},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_RELAXED
+ },
+ [333] = {
+ .species = SPECIES_SEAKING,
+ .moves = {MOVE_HORN_DRILL, MOVE_MEGAHORN, MOVE_SLEEP_TALK, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [334] = {
+ .species = SPECIES_JUMPLUFF,
+ .moves = {MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BOLD
+ },
+ [335] = {
+ .species = SPECIES_PILOSWINE,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_ADAMANT
+ },
+ [336] = {
+ .species = SPECIES_GOLBAT,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_AIR_CUTTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [337] = {
+ .species = SPECIES_PRIMEAPE,
+ .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_TOMB, MOVE_OVERHEAT, MOVE_BULK_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [338] = {
+ .species = SPECIES_HITMONLEE,
+ .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_FORESIGHT, MOVE_ROCK_TOMB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [339] = {
+ .species = SPECIES_HITMONCHAN,
+ .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MACH_PUNCH, MOVE_DETECT, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [340] = {
+ .species = SPECIES_GIRAFARIG,
+ .moves = {MOVE_PSYCHIC, MOVE_CRUNCH, MOVE_BATON_PASS, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [341] = {
+ .species = SPECIES_HITMONTOP,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_SEISMIC_TOSS, MOVE_ROCK_SLIDE, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [342] = {
+ .species = SPECIES_BANETTE,
+ .moves = {MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCREECH, MOVE_WILL_O_WISP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_ADAMANT
+ },
+ [343] = {
+ .species = SPECIES_NINJASK,
+ .moves = {MOVE_SLASH, MOVE_SHADOW_BALL, MOVE_SWORDS_DANCE, MOVE_BATON_PASS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [344] = {
+ .species = SPECIES_SEVIPER,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_GIGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [345] = {
+ .species = SPECIES_ZANGOOSE,
+ .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [346] = {
+ .species = SPECIES_CAMERUPT,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ERUPTION, MOVE_BODY_SLAM, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [347] = {
+ .species = SPECIES_SHARPEDO,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_SURF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [348] = {
+ .species = SPECIES_TROPIUS,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_BODY_SLAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [349] = {
+ .species = SPECIES_MAGNETON,
+ .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [350] = {
+ .species = SPECIES_MANTINE,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [351] = {
+ .species = SPECIES_STANTLER,
+ .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [352] = {
+ .species = SPECIES_ABSOL,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IRON_TAIL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [353] = {
+ .species = SPECIES_SWALOT,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_BODY_SLAM, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [354] = {
+ .species = SPECIES_CRAWDAUNT,
+ .moves = {MOVE_GUILLOTINE, MOVE_FRUSTRATION, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [355] = {
+ .species = SPECIES_PIDGEOT,
+ .moves = {MOVE_RETURN, MOVE_AERIAL_ACE, MOVE_STEEL_WING, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [356] = {
+ .species = SPECIES_GRUMPIG,
+ .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [357] = {
+ .species = SPECIES_TORKOAL,
+ .moves = {MOVE_OVERHEAT, MOVE_BODY_SLAM, MOVE_SMOKESCREEN, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [358] = {
+ .species = SPECIES_KINGLER,
+ .moves = {MOVE_GUILLOTINE, MOVE_ROCK_TOMB, MOVE_FLAIL, MOVE_ENDURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [359] = {
+ .species = SPECIES_CACTURNE,
+ .moves = {MOVE_MEGA_KICK, MOVE_TEETER_DANCE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_HARDY
+ },
+ [360] = {
+ .species = SPECIES_BELLOSSOM,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_ATTRACT, MOVE_SUNNY_DAY, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [361] = {
+ .species = SPECIES_OCTILLERY,
+ .moves = {MOVE_OCTAZOOKA, MOVE_FIRE_BLAST, MOVE_THUNDER_WAVE, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [362] = {
+ .species = SPECIES_HUNTAIL,
+ .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_BODY_SLAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [363] = {
+ .species = SPECIES_GOREBYSS,
+ .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_PSYCHIC, MOVE_BODY_SLAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [364] = {
+ .species = SPECIES_RELICANTH,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [365] = {
+ .species = SPECIES_OMASTAR,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_ICE_BEAM, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [366] = {
+ .species = SPECIES_KABUTOPS,
+ .moves = {MOVE_SLASH, MOVE_ROCK_SLIDE, MOVE_FLAIL, MOVE_ENDURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [367] = {
+ .species = SPECIES_POLIWRATH,
+ .moves = {MOVE_BRICK_BREAK, MOVE_HYPNOSIS, MOVE_REST, MOVE_BELLY_DRUM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [368] = {
+ .species = SPECIES_SCYTHER,
+ .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [369] = {
+ .species = SPECIES_PINSIR,
+ .moves = {MOVE_GUILLOTINE, MOVE_SWORDS_DANCE, MOVE_FLAIL, MOVE_ENDURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_JOLLY
+ },
+ [370] = {
+ .species = SPECIES_POLITOED,
+ .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_MUD_SLAP, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [371] = {
+ .species = SPECIES_CLOYSTER,
+ .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [372] = {
+ .species = SPECIES_DUGTRIO,
+ .moves = {MOVE_EARTHQUAKE, MOVE_TRI_ATTACK, MOVE_SLASH, MOVE_SAND_TOMB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [373] = {
+ .species = SPECIES_MEDICHAM,
+ .moves = {MOVE_PSYCHIC, MOVE_HI_JUMP_KICK, MOVE_CALM_MIND, MOVE_BATON_PASS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [374] = {
+ .species = SPECIES_MISDREAVUS,
+ .moves = {MOVE_PAIN_SPLIT, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [375] = {
+ .species = SPECIES_FEAROW,
+ .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_FACADE, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [376] = {
+ .species = SPECIES_GRANBULL,
+ .moves = {MOVE_MEGA_KICK, MOVE_SMELLING_SALT, MOVE_THUNDER_WAVE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [377] = {
+ .species = SPECIES_JYNX,
+ .moves = {MOVE_ICE_BEAM, MOVE_FAKE_OUT, MOVE_LOVELY_KISS, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [378] = {
+ .species = SPECIES_DUSCLOPS,
+ .moves = {MOVE_WILL_O_WISP, MOVE_SEISMIC_TOSS, MOVE_PAIN_SPLIT, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [379] = {
+ .species = SPECIES_DODRIO,
+ .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_SLEEP_TALK, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [380] = {
+ .species = SPECIES_MR_MIME,
+ .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_FAKE_OUT, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [381] = {
+ .species = SPECIES_LANTURN,
+ .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIET
+ },
+ [382] = {
+ .species = SPECIES_BRELOOM,
+ .moves = {MOVE_SKY_UPPERCUT, MOVE_MACH_PUNCH, MOVE_HEADBUTT, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [383] = {
+ .species = SPECIES_FORRETRESS,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_LIGHT_SCREEN, MOVE_SPIKES},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [384] = {
+ .species = SPECIES_WHISCASH,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [385] = {
+ .species = SPECIES_XATU,
+ .moves = {MOVE_DRILL_PECK, MOVE_NIGHT_SHADE, MOVE_WISH, MOVE_FUTURE_SIGHT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [386] = {
+ .species = SPECIES_SKARMORY,
+ .moves = {MOVE_STEEL_WING, MOVE_AIR_CUTTER, MOVE_COUNTER, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [387] = {
+ .species = SPECIES_MAROWAK,
+ .moves = {MOVE_BONEMERANG, MOVE_ROCK_SLIDE, MOVE_ICY_WIND, MOVE_HEADBUTT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [388] = {
+ .species = SPECIES_QUAGSIRE,
+ .moves = {MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [389] = {
+ .species = SPECIES_CLEFABLE,
+ .moves = {MOVE_METRONOME, MOVE_DOUBLE_TEAM, MOVE_REFLECT, MOVE_FOLLOW_ME},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BRAVE
+ },
+ [390] = {
+ .species = SPECIES_HARIYAMA,
+ .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [391] = {
+ .species = SPECIES_RAICHU,
+ .moves = {MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [392] = {
+ .species = SPECIES_DEWGONG,
+ .moves = {MOVE_ICE_BEAM, MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [393] = {
+ .species = SPECIES_MANECTRIC,
+ .moves = {MOVE_THUNDERBOLT, MOVE_FLASH, MOVE_QUICK_ATTACK, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [394] = {
+ .species = SPECIES_VILEPLUME,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_PETAL_DANCE, MOVE_MOONLIGHT, MOVE_AROMATHERAPY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [395] = {
+ .species = SPECIES_VICTREEBEL,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_SWEET_SCENT, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIET
+ },
+ [396] = {
+ .species = SPECIES_ELECTRODE,
+ .moves = {MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [397] = {
+ .species = SPECIES_EXPLOUD,
+ .moves = {MOVE_HYPER_VOICE, MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [398] = {
+ .species = SPECIES_SHIFTRY,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIET
+ },
+ [399] = {
+ .species = SPECIES_GLALIE,
+ .moves = {MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_HAIL, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [400] = {
+ .species = SPECIES_LUDICOLO,
+ .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [401] = {
+ .species = SPECIES_HYPNO,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_HYPNOSIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIET
+ },
+ [402] = {
+ .species = SPECIES_GOLEM,
+ .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_ROCK_TOMB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [403] = {
+ .species = SPECIES_RHYDON,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [404] = {
+ .species = SPECIES_ALAKAZAM,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [405] = {
+ .species = SPECIES_WEEZING,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_SMOKESCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [406] = {
+ .species = SPECIES_KANGASKHAN,
+ .moves = {MOVE_DIZZY_PUNCH, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [407] = {
+ .species = SPECIES_ELECTABUZZ,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [408] = {
+ .species = SPECIES_TAUROS,
+ .moves = {MOVE_EARTHQUAKE, MOVE_THRASH, MOVE_SWAGGER, MOVE_FACADE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [409] = {
+ .species = SPECIES_SLOWBRO,
+ .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_HEADBUTT, MOVE_ICE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [410] = {
+ .species = SPECIES_SLOWKING,
+ .moves = {MOVE_PSYCHIC, MOVE_BRICK_BREAK, MOVE_AMNESIA, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [411] = {
+ .species = SPECIES_MILTANK,
+ .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_MILK_DRINK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [412] = {
+ .species = SPECIES_ALTARIA,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_REFRESH, MOVE_BODY_SLAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [413] = {
+ .species = SPECIES_NIDOQUEEN,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [414] = {
+ .species = SPECIES_NIDOKING,
+ .moves = {MOVE_HORN_DRILL, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [415] = {
+ .species = SPECIES_MAGMAR,
+ .moves = {MOVE_FLAMETHROWER, MOVE_SMOKESCREEN, MOVE_BRICK_BREAK, MOVE_BARRIER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [416] = {
+ .species = SPECIES_CRADILY,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_ROCK_SLIDE, MOVE_BARRIER, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [417] = {
+ .species = SPECIES_ARMALDO,
+ .moves = {MOVE_SLASH, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [418] = {
+ .species = SPECIES_GOLDUCK,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_DIG, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [419] = {
+ .species = SPECIES_RAPIDASH,
+ .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIET
+ },
+ [420] = {
+ .species = SPECIES_MUK,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_BODY_SLAM, MOVE_SCREECH, MOVE_MINIMIZE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [421] = {
+ .species = SPECIES_GENGAR,
+ .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_TIMID
+ },
+ [422] = {
+ .species = SPECIES_AMPHAROS,
+ .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [423] = {
+ .species = SPECIES_SCIZOR,
+ .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_COUNTER, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [424] = {
+ .species = SPECIES_HERACROSS,
+ .moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [425] = {
+ .species = SPECIES_URSARING,
+ .moves = {MOVE_MEGA_KICK, MOVE_CRUNCH, MOVE_AERIAL_ACE, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [426] = {
+ .species = SPECIES_HOUNDOOM,
+ .moves = {MOVE_FLAMETHROWER, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_WILL_O_WISP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [427] = {
+ .species = SPECIES_DONPHAN,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [428] = {
+ .species = SPECIES_CLAYDOL,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWAGGER, MOVE_PSYCH_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [429] = {
+ .species = SPECIES_WAILORD,
+ .moves = {MOVE_SURF, MOVE_ICY_WIND, MOVE_BODY_SLAM, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [430] = {
+ .species = SPECIES_NINETALES,
+ .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [431] = {
+ .species = SPECIES_MACHAMP,
+ .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [432] = {
+ .species = SPECIES_SHUCKLE,
+ .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SLEEP_TALK, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BRAVE
+ },
+ [433] = {
+ .species = SPECIES_STEELIX,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_ROCK_TOMB, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [434] = {
+ .species = SPECIES_TENTACRUEL,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_ICY_WIND, MOVE_BARRIER, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_IMPISH
+ },
+ [435] = {
+ .species = SPECIES_AERODACTYL,
+ .moves = {MOVE_ANCIENT_POWER, MOVE_DRAGON_BREATH, MOVE_AERIAL_ACE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [436] = {
+ .species = SPECIES_PORYGON2,
+ .moves = {MOVE_TRI_ATTACK, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [437] = {
+ .species = SPECIES_GARDEVOIR,
+ .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_MAGICAL_LEAF, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_TIMID
+ },
+ [438] = {
+ .species = SPECIES_EXEGGUTOR,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIET
+ },
+ [439] = {
+ .species = SPECIES_STARMIE,
+ .moves = {MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [440] = {
+ .species = SPECIES_FLYGON,
+ .moves = {MOVE_EARTHQUAKE, MOVE_STEEL_WING, MOVE_FAINT_ATTACK, MOVE_FACADE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [441] = {
+ .species = SPECIES_VENUSAUR,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_SLEEP_POWDER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [442] = {
+ .species = SPECIES_VAPOREON,
+ .moves = {MOVE_SURF, MOVE_ROAR, MOVE_BITE, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [443] = {
+ .species = SPECIES_JOLTEON,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [444] = {
+ .species = SPECIES_FLAREON,
+ .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_BITE, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [445] = {
+ .species = SPECIES_MEGANIUM,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [446] = {
+ .species = SPECIES_ESPEON,
+ .moves = {MOVE_PSYCHIC, MOVE_CHARM, MOVE_CALM_MIND, MOVE_BATON_PASS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [447] = {
+ .species = SPECIES_UMBREON,
+ .moves = {MOVE_CONFUSE_RAY, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BATON_PASS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [448] = {
+ .species = SPECIES_BLASTOISE,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE, MOVE_SEISMIC_TOSS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [449] = {
+ .species = SPECIES_FERALIGATR,
+ .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_AERIAL_ACE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [450] = {
+ .species = SPECIES_AGGRON,
+ .moves = {MOVE_IRON_TAIL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [451] = {
+ .species = SPECIES_BLAZIKEN,
+ .moves = {MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_DOUBLE_KICK, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [452] = {
+ .species = SPECIES_WALREIN,
+ .moves = {MOVE_BLIZZARD, MOVE_HAIL, MOVE_YAWN, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [453] = {
+ .species = SPECIES_SCEPTILE,
+ .moves = {MOVE_LEAF_BLADE, MOVE_LEECH_SEED, MOVE_AERIAL_ACE, MOVE_DETECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [454] = {
+ .species = SPECIES_CHARIZARD,
+ .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_ROAR, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [455] = {
+ .species = SPECIES_TYPHLOSION,
+ .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SMOKESCREEN, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [456] = {
+ .species = SPECIES_LAPRAS,
+ .moves = {MOVE_SURF, MOVE_ATTRACT, MOVE_CONFUSE_RAY, MOVE_SING},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BOLD
+ },
+ [457] = {
+ .species = SPECIES_CROBAT,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_BITE, MOVE_ASTONISH, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [458] = {
+ .species = SPECIES_SWAMPERT,
+ .moves = {MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_REST, MOVE_CURSE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [459] = {
+ .species = SPECIES_GYARADOS,
+ .moves = {MOVE_RETURN, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [460] = {
+ .species = SPECIES_SNORLAX,
+ .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [461] = {
+ .species = SPECIES_KINGDRA,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_DRAGON_BREATH, MOVE_ICY_WIND, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [462] = {
+ .species = SPECIES_BLISSEY,
+ .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_SING, MOVE_SOFT_BOILED},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BOLD
+ },
+ [463] = {
+ .species = SPECIES_MILOTIC,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_ICY_WIND, MOVE_RECOVER, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [464] = {
+ .species = SPECIES_ARCANINE,
+ .moves = {MOVE_FLAMETHROWER, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_BODY_SLAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [465] = {
+ .species = SPECIES_SALAMENCE,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_HEADBUTT, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [466] = {
+ .species = SPECIES_METAGROSS,
+ .moves = {MOVE_METEOR_MASH, MOVE_AERIAL_ACE, MOVE_FACADE, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [467] = {
+ .species = SPECIES_SLAKING,
+ .moves = {MOVE_YAWN, MOVE_BULK_UP, MOVE_SWAGGER, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [468] = {
+ .species = SPECIES_DUGTRIO,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_TRI_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [469] = {
+ .species = SPECIES_MEDICHAM,
+ .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_PSYCHIC, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [470] = {
+ .species = SPECIES_MAROWAK,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_ICY_WIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [471] = {
+ .species = SPECIES_QUAGSIRE,
+ .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_YAWN, MOVE_ANCIENT_POWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_SASSY
+ },
+ [472] = {
+ .species = SPECIES_MISDREAVUS,
+ .moves = {MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BOLD
+ },
+ [473] = {
+ .species = SPECIES_FEAROW,
+ .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_ATTRACT, MOVE_PURSUIT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [474] = {
+ .species = SPECIES_GRANBULL,
+ .moves = {MOVE_OVERHEAT, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FACADE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [475] = {
+ .species = SPECIES_JYNX,
+ .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_LOVELY_KISS, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [476] = {
+ .species = SPECIES_DUSCLOPS,
+ .moves = {MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [477] = {
+ .species = SPECIES_DODRIO,
+ .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_FAINT_ATTACK, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [478] = {
+ .species = SPECIES_MR_MIME,
+ .moves = {MOVE_BATON_PASS, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_PSYCHIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [479] = {
+ .species = SPECIES_LANTURN,
+ .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_SURF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [480] = {
+ .species = SPECIES_BRELOOM,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_LEECH_SEED, MOVE_FOCUS_PUNCH, MOVE_SPORE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_DOCILE
+ },
+ [481] = {
+ .species = SPECIES_FORRETRESS,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_COUNTER, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [482] = {
+ .species = SPECIES_SKARMORY,
+ .moves = {MOVE_SPIKES, MOVE_ROAR, MOVE_DRILL_PECK, MOVE_TOXIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [483] = {
+ .species = SPECIES_WHISCASH,
+ .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SPARK, MOVE_FUTURE_SIGHT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [484] = {
+ .species = SPECIES_XATU,
+ .moves = {MOVE_FLY, MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [485] = {
+ .species = SPECIES_CLEFABLE,
+ .moves = {MOVE_METEOR_MASH, MOVE_COSMIC_POWER, MOVE_DOUBLE_TEAM, MOVE_FOLLOW_ME},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [486] = {
+ .species = SPECIES_HARIYAMA,
+ .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [487] = {
+ .species = SPECIES_RAICHU,
+ .moves = {MOVE_THUNDERBOLT, MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [488] = {
+ .species = SPECIES_DEWGONG,
+ .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_ENCORE, MOVE_DISABLE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [489] = {
+ .species = SPECIES_MANECTRIC,
+ .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [490] = {
+ .species = SPECIES_VILEPLUME,
+ .moves = {MOVE_INGRAIN, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_GIGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [491] = {
+ .species = SPECIES_VICTREEBEL,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_SERIOUS
+ },
+ [492] = {
+ .species = SPECIES_ELECTRODE,
+ .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [493] = {
+ .species = SPECIES_EXPLOUD,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [494] = {
+ .species = SPECIES_SHIFTRY,
+ .moves = {MOVE_LEECH_SEED, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_IMPISH
+ },
+ [495] = {
+ .species = SPECIES_GLALIE,
+ .moves = {MOVE_EXPLOSION, MOVE_ENDURE, MOVE_BODY_SLAM, MOVE_ICY_WIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [496] = {
+ .species = SPECIES_LUDICOLO,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [497] = {
+ .species = SPECIES_HYPNO,
+ .moves = {MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_DREAM_EATER, MOVE_PSYCHIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [498] = {
+ .species = SPECIES_GOLEM,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [499] = {
+ .species = SPECIES_RHYDON,
+ .moves = {MOVE_EARTHQUAKE, MOVE_HORN_DRILL, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [500] = {
+ .species = SPECIES_ALAKAZAM,
+ .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_THUNDER_WAVE, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [501] = {
+ .species = SPECIES_WEEZING,
+ .moves = {MOVE_MEMENTO, MOVE_SLUDGE_BOMB, MOVE_FACADE, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [502] = {
+ .species = SPECIES_KANGASKHAN,
+ .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [503] = {
+ .species = SPECIES_ELECTABUZZ,
+ .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_ATTRACT, MOVE_FOCUS_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [504] = {
+ .species = SPECIES_TAUROS,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [505] = {
+ .species = SPECIES_SLOWBRO,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_YAWN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_MODEST
+ },
+ [506] = {
+ .species = SPECIES_SLOWKING,
+ .moves = {MOVE_YAWN, MOVE_THUNDER_WAVE, MOVE_SURF, MOVE_PSYCHIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [507] = {
+ .species = SPECIES_MILTANK,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [508] = {
+ .species = SPECIES_ALTARIA,
+ .moves = {MOVE_PERISH_SONG, MOVE_DRAGON_BREATH, MOVE_PURSUIT, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [509] = {
+ .species = SPECIES_NIDOQUEEN,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [510] = {
+ .species = SPECIES_NIDOKING,
+ .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [511] = {
+ .species = SPECIES_MAGMAR,
+ .moves = {MOVE_FIRE_BLAST, MOVE_SMOKESCREEN, MOVE_THUNDER_PUNCH, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [512] = {
+ .species = SPECIES_CRADILY,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_PSYCH_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [513] = {
+ .species = SPECIES_ARMALDO,
+ .moves = {MOVE_IRON_TAIL, MOVE_ANCIENT_POWER, MOVE_BRICK_BREAK, MOVE_KNOCK_OFF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [514] = {
+ .species = SPECIES_GOLDUCK,
+ .moves = {MOVE_CROSS_CHOP, MOVE_SURF, MOVE_SWAGGER, MOVE_PSYCH_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [515] = {
+ .species = SPECIES_RAPIDASH,
+ .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_DOUBLE_TEAM, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [516] = {
+ .species = SPECIES_MUK,
+ .moves = {MOVE_CURSE, MOVE_REST, MOVE_SLUDGE_BOMB, MOVE_DYNAMIC_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [517] = {
+ .species = SPECIES_GENGAR,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [518] = {
+ .species = SPECIES_AMPHAROS,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [519] = {
+ .species = SPECIES_SCIZOR,
+ .moves = {MOVE_SILVER_WIND, MOVE_STEEL_WING, MOVE_SWORDS_DANCE, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [520] = {
+ .species = SPECIES_HERACROSS,
+ .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_BULK_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_JOLLY
+ },
+ [521] = {
+ .species = SPECIES_URSARING,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [522] = {
+ .species = SPECIES_HOUNDOOM,
+ .moves = {MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_ROAR, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [523] = {
+ .species = SPECIES_DONPHAN,
+ .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [524] = {
+ .species = SPECIES_CLAYDOL,
+ .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_COSMIC_POWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [525] = {
+ .species = SPECIES_WAILORD,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_CURSE, MOVE_AMNESIA},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [526] = {
+ .species = SPECIES_NINETALES,
+ .moves = {MOVE_HEAT_WAVE, MOVE_BODY_SLAM, MOVE_GRUDGE, MOVE_SUNNY_DAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [527] = {
+ .species = SPECIES_MACHAMP,
+ .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_BULK_UP, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [528] = {
+ .species = SPECIES_SHUCKLE,
+ .moves = {MOVE_SANDSTORM, MOVE_DIG, MOVE_FLASH, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_CAREFUL
+ },
+ [529] = {
+ .species = SPECIES_STEELIX,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_SANDSTORM, MOVE_BLOCK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [530] = {
+ .species = SPECIES_TENTACRUEL,
+ .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_SURF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [531] = {
+ .species = SPECIES_AERODACTYL,
+ .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [532] = {
+ .species = SPECIES_PORYGON2,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_THUNDER_WAVE, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [533] = {
+ .species = SPECIES_GARDEVOIR,
+ .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [534] = {
+ .species = SPECIES_EXEGGUTOR,
+ .moves = {MOVE_RETURN, MOVE_CURSE, MOVE_SLEEP_POWDER, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [535] = {
+ .species = SPECIES_STARMIE,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [536] = {
+ .species = SPECIES_FLYGON,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_SUNNY_DAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [537] = {
+ .species = SPECIES_VENUSAUR,
+ .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [538] = {
+ .species = SPECIES_VAPOREON,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [539] = {
+ .species = SPECIES_JOLTEON,
+ .moves = {MOVE_THUNDERBOLT, MOVE_DIG, MOVE_DOUBLE_KICK, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [540] = {
+ .species = SPECIES_FLAREON,
+ .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [541] = {
+ .species = SPECIES_MEGANIUM,
+ .moves = {MOVE_LEECH_SEED, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_GRASS_WHISTLE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [542] = {
+ .species = SPECIES_ESPEON,
+ .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_CALM_MIND, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [543] = {
+ .species = SPECIES_UMBREON,
+ .moves = {MOVE_CURSE, MOVE_SCREECH, MOVE_DOUBLE_TEAM, MOVE_DOUBLE_EDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [544] = {
+ .species = SPECIES_BLASTOISE,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [545] = {
+ .species = SPECIES_FERALIGATR,
+ .moves = {MOVE_SURF, MOVE_DRAGON_CLAW, MOVE_BRICK_BREAK, MOVE_SCARY_FACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [546] = {
+ .species = SPECIES_AGGRON,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [547] = {
+ .species = SPECIES_BLAZIKEN,
+ .moves = {MOVE_BLAZE_KICK, MOVE_MEGA_KICK, MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [548] = {
+ .species = SPECIES_WALREIN,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [549] = {
+ .species = SPECIES_SCEPTILE,
+ .moves = {MOVE_LEAF_BLADE, MOVE_THUNDER_PUNCH, MOVE_ATTRACT, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [550] = {
+ .species = SPECIES_CHARIZARD,
+ .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE, MOVE_SMOKESCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [551] = {
+ .species = SPECIES_TYPHLOSION,
+ .moves = {MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [552] = {
+ .species = SPECIES_LAPRAS,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_TIMID
+ },
+ [553] = {
+ .species = SPECIES_CROBAT,
+ .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [554] = {
+ .species = SPECIES_SWAMPERT,
+ .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [555] = {
+ .species = SPECIES_GYARADOS,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDERBOLT, MOVE_FIRE_BLAST, MOVE_BLIZZARD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [556] = {
+ .species = SPECIES_SNORLAX,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [557] = {
+ .species = SPECIES_KINGDRA,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_DRAGON_BREATH, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [558] = {
+ .species = SPECIES_BLISSEY,
+ .moves = {MOVE_SEISMIC_TOSS, MOVE_SING, MOVE_ATTRACT, MOVE_SUBSTITUTE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BOLD
+ },
+ [559] = {
+ .species = SPECIES_MILOTIC,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_SAFEGUARD, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [560] = {
+ .species = SPECIES_ARCANINE,
+ .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_CRUNCH, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_DOCILE
+ },
+ [561] = {
+ .species = SPECIES_SALAMENCE,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_SWAGGER, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [562] = {
+ .species = SPECIES_METAGROSS,
+ .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_PSYCH_UP, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [563] = {
+ .species = SPECIES_SLAKING,
+ .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_YAWN, MOVE_AMNESIA},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_ADAMANT
+ },
+ [564] = {
+ .species = SPECIES_DUGTRIO,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_FISSURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [565] = {
+ .species = SPECIES_MEDICHAM,
+ .moves = {MOVE_DYNAMIC_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_HARDY
+ },
+ [566] = {
+ .species = SPECIES_MISDREAVUS,
+ .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [567] = {
+ .species = SPECIES_FEAROW,
+ .moves = {MOVE_DRILL_PECK, MOVE_RETURN, MOVE_STEEL_WING, MOVE_FAINT_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [568] = {
+ .species = SPECIES_GRANBULL,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [569] = {
+ .species = SPECIES_JYNX,
+ .moves = {MOVE_DREAM_EATER, MOVE_LOVELY_KISS, MOVE_ATTRACT, MOVE_SUBSTITUTE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [570] = {
+ .species = SPECIES_DUSCLOPS,
+ .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [571] = {
+ .species = SPECIES_DODRIO,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_FAINT_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [572] = {
+ .species = SPECIES_MR_MIME,
+ .moves = {MOVE_TRICK, MOVE_TORMENT, MOVE_PSYCHIC, MOVE_THUNDERBOLT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [573] = {
+ .species = SPECIES_LANTURN,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [574] = {
+ .species = SPECIES_BRELOOM,
+ .moves = {MOVE_IRON_TAIL, MOVE_FOCUS_PUNCH, MOVE_ATTRACT, MOVE_SPORE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [575] = {
+ .species = SPECIES_FORRETRESS,
+ .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_ZAP_CANNON},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [576] = {
+ .species = SPECIES_WHISCASH,
+ .moves = {MOVE_SLEEP_TALK, MOVE_REST, MOVE_SURF, MOVE_FISSURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_HARDY
+ },
+ [577] = {
+ .species = SPECIES_XATU,
+ .moves = {MOVE_DRILL_PECK, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_STEEL_WING},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [578] = {
+ .species = SPECIES_SKARMORY,
+ .moves = {MOVE_TOXIC, MOVE_CURSE, MOVE_REST, MOVE_FLY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [579] = {
+ .species = SPECIES_MAROWAK,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [580] = {
+ .species = SPECIES_QUAGSIRE,
+ .moves = {MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE, MOVE_CURSE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [581] = {
+ .species = SPECIES_CLEFABLE,
+ .moves = {MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_FLAMETHROWER, MOVE_MAGICAL_LEAF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [582] = {
+ .species = SPECIES_HARIYAMA,
+ .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FACADE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [583] = {
+ .species = SPECIES_RAICHU,
+ .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_IRON_TAIL, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_DOCILE
+ },
+ [584] = {
+ .species = SPECIES_DEWGONG,
+ .moves = {MOVE_HORN_DRILL, MOVE_SHEER_COLD, MOVE_SLEEP_TALK, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [585] = {
+ .species = SPECIES_MANECTRIC,
+ .moves = {MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_THUNDER_WAVE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [586] = {
+ .species = SPECIES_VILEPLUME,
+ .moves = {MOVE_ATTRACT, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [587] = {
+ .species = SPECIES_VICTREEBEL,
+ .moves = {MOVE_STUN_SPORE, MOVE_INGRAIN, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [588] = {
+ .species = SPECIES_ELECTRODE,
+ .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ENDURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAUGHTY
+ },
+ [589] = {
+ .species = SPECIES_EXPLOUD,
+ .moves = {MOVE_OVERHEAT, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_EXTRASENSORY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [590] = {
+ .species = SPECIES_SHIFTRY,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [591] = {
+ .species = SPECIES_GLALIE,
+ .moves = {MOVE_BLIZZARD, MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [592] = {
+ .species = SPECIES_LUDICOLO,
+ .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_GIGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [593] = {
+ .species = SPECIES_HYPNO,
+ .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_MEGA_KICK, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [594] = {
+ .species = SPECIES_GOLEM,
+ .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [595] = {
+ .species = SPECIES_RHYDON,
+ .moves = {MOVE_MEGAHORN, MOVE_CRUSH_CLAW, MOVE_EARTHQUAKE, MOVE_HORN_DRILL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [596] = {
+ .species = SPECIES_ALAKAZAM,
+ .moves = {MOVE_TRICK, MOVE_DISABLE, MOVE_PSYCHIC, MOVE_SKILL_SWAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [597] = {
+ .species = SPECIES_WEEZING,
+ .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [598] = {
+ .species = SPECIES_KANGASKHAN,
+ .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [599] = {
+ .species = SPECIES_ELECTABUZZ,
+ .moves = {MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDERBOLT, MOVE_CROSS_CHOP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [600] = {
+ .species = SPECIES_TAUROS,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [601] = {
+ .species = SPECIES_SLOWBRO,
+ .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [602] = {
+ .species = SPECIES_SLOWKING,
+ .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [603] = {
+ .species = SPECIES_MILTANK,
+ .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [604] = {
+ .species = SPECIES_ALTARIA,
+ .moves = {MOVE_SING, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [605] = {
+ .species = SPECIES_NIDOQUEEN,
+ .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_CRUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [606] = {
+ .species = SPECIES_NIDOKING,
+ .moves = {MOVE_HORN_DRILL, MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SURF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [607] = {
+ .species = SPECIES_MAGMAR,
+ .moves = {MOVE_MEGA_KICK, MOVE_CROSS_CHOP, MOVE_IRON_TAIL, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_IMPISH
+ },
+ [608] = {
+ .species = SPECIES_CRADILY,
+ .moves = {MOVE_SUBSTITUTE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [609] = {
+ .species = SPECIES_ARMALDO,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_SWORDS_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [610] = {
+ .species = SPECIES_GOLDUCK,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_CROSS_CHOP, MOVE_BLIZZARD, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [611] = {
+ .species = SPECIES_RAPIDASH,
+ .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_HYPNOSIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [612] = {
+ .species = SPECIES_MUK,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_QUIET
+ },
+ [613] = {
+ .species = SPECIES_GENGAR,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_GIGA_DRAIN, MOVE_SKILL_SWAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [614] = {
+ .species = SPECIES_AMPHAROS,
+ .moves = {MOVE_THUNDERBOLT, MOVE_MEGA_KICK, MOVE_IRON_TAIL, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [615] = {
+ .species = SPECIES_SCIZOR,
+ .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY, MOVE_SLASH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_CAREFUL
+ },
+ [616] = {
+ .species = SPECIES_HERACROSS,
+ .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [617] = {
+ .species = SPECIES_URSARING,
+ .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_CRUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [618] = {
+ .species = SPECIES_HOUNDOOM,
+ .moves = {MOVE_OVERHEAT, MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [619] = {
+ .species = SPECIES_DONPHAN,
+ .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SECRET_POWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [620] = {
+ .species = SPECIES_CLAYDOL,
+ .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [621] = {
+ .species = SPECIES_WAILORD,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_FISSURE, MOVE_DOUBLE_TEAM, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [622] = {
+ .species = SPECIES_NINETALES,
+ .moves = {MOVE_FIRE_BLAST, MOVE_IRON_TAIL, MOVE_CONFUSE_RAY, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [623] = {
+ .species = SPECIES_MACHAMP,
+ .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_BLAST, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [624] = {
+ .species = SPECIES_SHUCKLE,
+ .moves = {MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_TOXIC, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_CAREFUL
+ },
+ [625] = {
+ .species = SPECIES_STEELIX,
+ .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_ROCK_SLIDE, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [626] = {
+ .species = SPECIES_TENTACRUEL,
+ .moves = {MOVE_SURF, MOVE_GIGA_DRAIN, MOVE_ICE_BEAM, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [627] = {
+ .species = SPECIES_AERODACTYL,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_DRAGON_CLAW},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [628] = {
+ .species = SPECIES_PORYGON2,
+ .moves = {MOVE_PSYCHIC, MOVE_TRI_ATTACK, MOVE_THUNDER_WAVE, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [629] = {
+ .species = SPECIES_GARDEVOIR,
+ .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH, MOVE_MAGICAL_LEAF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [630] = {
+ .species = SPECIES_EXEGGUTOR,
+ .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [631] = {
+ .species = SPECIES_STARMIE,
+ .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [632] = {
+ .species = SPECIES_FLYGON,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_GIGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [633] = {
+ .species = SPECIES_VENUSAUR,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SLEEP_POWDER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [634] = {
+ .species = SPECIES_VAPOREON,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_BATON_PASS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [635] = {
+ .species = SPECIES_JOLTEON,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_AGILITY, MOVE_BATON_PASS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [636] = {
+ .species = SPECIES_FLAREON,
+ .moves = {MOVE_SHADOW_BALL, MOVE_FLAIL, MOVE_ENDURE, MOVE_OVERHEAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [637] = {
+ .species = SPECIES_MEGANIUM,
+ .moves = {MOVE_EARTHQUAKE, MOVE_FLAIL, MOVE_ENDURE, MOVE_GIGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [638] = {
+ .species = SPECIES_ESPEON,
+ .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_WISH, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [639] = {
+ .species = SPECIES_UMBREON,
+ .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ATTRACT, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [640] = {
+ .species = SPECIES_BLASTOISE,
+ .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [641] = {
+ .species = SPECIES_FERALIGATR,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [642] = {
+ .species = SPECIES_AGGRON,
+ .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_FIRE_BLAST, MOVE_BLIZZARD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [643] = {
+ .species = SPECIES_BLAZIKEN,
+ .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_REVERSAL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [644] = {
+ .species = SPECIES_WALREIN,
+ .moves = {MOVE_SHEER_COLD, MOVE_FISSURE, MOVE_SURF, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [645] = {
+ .species = SPECIES_SCEPTILE,
+ .moves = {MOVE_LEAF_BLADE, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [646] = {
+ .species = SPECIES_CHARIZARD,
+ .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_BITE, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [647] = {
+ .species = SPECIES_TYPHLOSION,
+ .moves = {MOVE_EARTHQUAKE, MOVE_OVERHEAT, MOVE_ENDURE, MOVE_REVERSAL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [648] = {
+ .species = SPECIES_LAPRAS,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [649] = {
+ .species = SPECIES_CROBAT,
+ .moves = {MOVE_AIR_CUTTER, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [650] = {
+ .species = SPECIES_SWAMPERT,
+ .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_BRAVE
+ },
+ [651] = {
+ .species = SPECIES_GYARADOS,
+ .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [652] = {
+ .species = SPECIES_SNORLAX,
+ .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_ADAMANT
+ },
+ [653] = {
+ .species = SPECIES_KINGDRA,
+ .moves = {MOVE_FLAIL, MOVE_HYDRO_PUMP, MOVE_DRAGON_DANCE, MOVE_ENDURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [654] = {
+ .species = SPECIES_BLISSEY,
+ .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_SOFT_BOILED},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BOLD
+ },
+ [655] = {
+ .species = SPECIES_MILOTIC,
+ .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_ATTRACT, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [656] = {
+ .species = SPECIES_ARCANINE,
+ .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [657] = {
+ .species = SPECIES_SALAMENCE,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_ENDURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [658] = {
+ .species = SPECIES_METAGROSS,
+ .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_DOUBLE_TEAM, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [659] = {
+ .species = SPECIES_SLAKING,
+ .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_ADAMANT
+ },
+ [660] = {
+ .species = SPECIES_DUGTRIO,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FISSURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [661] = {
+ .species = SPECIES_MEDICHAM,
+ .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [662] = {
+ .species = SPECIES_MISDREAVUS,
+ .moves = {MOVE_DESTINY_BOND, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_TIMID
+ },
+ [663] = {
+ .species = SPECIES_FEAROW,
+ .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SKY_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [664] = {
+ .species = SPECIES_GRANBULL,
+ .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_BRAVE
+ },
+ [665] = {
+ .species = SPECIES_JYNX,
+ .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_LOVELY_KISS, MOVE_FAKE_TEARS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [666] = {
+ .species = SPECIES_DUSCLOPS,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_CURSE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [667] = {
+ .species = SPECIES_DODRIO,
+ .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_DRILL_PECK, MOVE_FACADE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [668] = {
+ .species = SPECIES_MR_MIME,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [669] = {
+ .species = SPECIES_LANTURN,
+ .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [670] = {
+ .species = SPECIES_BRELOOM,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_SLUDGE_BOMB, MOVE_SPORE, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [671] = {
+ .species = SPECIES_FORRETRESS,
+ .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [672] = {
+ .species = SPECIES_WHISCASH,
+ .moves = {MOVE_FISSURE, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [673] = {
+ .species = SPECIES_XATU,
+ .moves = {MOVE_PSYCHIC, MOVE_DRILL_PECK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [674] = {
+ .species = SPECIES_SKARMORY,
+ .moves = {MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_COUNTER, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [675] = {
+ .species = SPECIES_MAROWAK,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_MEGA_KICK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [676] = {
+ .species = SPECIES_QUAGSIRE,
+ .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_AMNESIA},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_SASSY
+ },
+ [677] = {
+ .species = SPECIES_CLEFABLE,
+ .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_SOFT_BOILED},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [678] = {
+ .species = SPECIES_HARIYAMA,
+ .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [679] = {
+ .species = SPECIES_RAICHU,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_PROTECT, MOVE_MEGA_KICK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [680] = {
+ .species = SPECIES_DEWGONG,
+ .moves = {MOVE_SHEER_COLD, MOVE_ICE_BEAM, MOVE_SURF, MOVE_SIGNAL_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [681] = {
+ .species = SPECIES_MANECTRIC,
+ .moves = {MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [682] = {
+ .species = SPECIES_VILEPLUME,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [683] = {
+ .species = SPECIES_VICTREEBEL,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_SYNTHESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [684] = {
+ .species = SPECIES_ELECTRODE,
+ .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAUGHTY
+ },
+ [685] = {
+ .species = SPECIES_EXPLOUD,
+ .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_OVERHEAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [686] = {
+ .species = SPECIES_SHIFTRY,
+ .moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_MEGA_KICK, MOVE_FAKE_OUT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [687] = {
+ .species = SPECIES_GLALIE,
+ .moves = {MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [688] = {
+ .species = SPECIES_LUDICOLO,
+ .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_TOXIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [689] = {
+ .species = SPECIES_HYPNO,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [690] = {
+ .species = SPECIES_GOLEM,
+ .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [691] = {
+ .species = SPECIES_RHYDON,
+ .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_HORN_DRILL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [692] = {
+ .species = SPECIES_ALAKAZAM,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [693] = {
+ .species = SPECIES_WEEZING,
+ .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FRUSTRATION, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [694] = {
+ .species = SPECIES_KANGASKHAN,
+ .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [695] = {
+ .species = SPECIES_ELECTABUZZ,
+ .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_MEGA_KICK, MOVE_CROSS_CHOP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [696] = {
+ .species = SPECIES_TAUROS,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_TOMB, MOVE_THUNDERBOLT, MOVE_SURF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [697] = {
+ .species = SPECIES_SLOWBRO,
+ .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK,
+ .nature = NATURE_SASSY
+ },
+ [698] = {
+ .species = SPECIES_SLOWKING,
+ .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [699] = {
+ .species = SPECIES_MILTANK,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_CURSE, MOVE_DOUBLE_TEAM, MOVE_MILK_DRINK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [700] = {
+ .species = SPECIES_ALTARIA,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [701] = {
+ .species = SPECIES_NIDOQUEEN,
+ .moves = {MOVE_SUPERPOWER, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [702] = {
+ .species = SPECIES_NIDOKING,
+ .moves = {MOVE_MEGAHORN, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_THUNDER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [703] = {
+ .species = SPECIES_MAGMAR,
+ .moves = {MOVE_FLAMETHROWER, MOVE_PSYCHIC, MOVE_CROSS_CHOP, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [704] = {
+ .species = SPECIES_CRADILY,
+ .moves = {MOVE_TOXIC, MOVE_INGRAIN, MOVE_MIRROR_COAT, MOVE_GIGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [705] = {
+ .species = SPECIES_ARMALDO,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [706] = {
+ .species = SPECIES_GOLDUCK,
+ .moves = {MOVE_SURF, MOVE_CROSS_CHOP, MOVE_ICE_BEAM, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [707] = {
+ .species = SPECIES_RAPIDASH,
+ .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_IRON_TAIL, MOVE_DOUBLE_KICK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [708] = {
+ .species = SPECIES_MUK,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_BRICK_BREAK, MOVE_GIGA_DRAIN, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_BRAVE
+ },
+ [709] = {
+ .species = SPECIES_GENGAR,
+ .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [710] = {
+ .species = SPECIES_AMPHAROS,
+ .moves = {MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_THUNDER_WAVE, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [711] = {
+ .species = SPECIES_SCIZOR,
+ .moves = {MOVE_SILVER_WIND, MOVE_SWORDS_DANCE, MOVE_AGILITY, MOVE_BATON_PASS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [712] = {
+ .species = SPECIES_HERACROSS,
+ .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_REVERSAL, MOVE_ENDURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [713] = {
+ .species = SPECIES_URSARING,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [714] = {
+ .species = SPECIES_HOUNDOOM,
+ .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_CRUNCH, MOVE_SUNNY_DAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [715] = {
+ .species = SPECIES_DONPHAN,
+ .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_IRON_TAIL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [716] = {
+ .species = SPECIES_CLAYDOL,
+ .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [717] = {
+ .species = SPECIES_WAILORD,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_FISSURE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [718] = {
+ .species = SPECIES_NINETALES,
+ .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [719] = {
+ .species = SPECIES_MACHAMP,
+ .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [720] = {
+ .species = SPECIES_SHUCKLE,
+ .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_WRAP, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_CAREFUL
+ },
+ [721] = {
+ .species = SPECIES_STEELIX,
+ .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [722] = {
+ .species = SPECIES_TENTACRUEL,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [723] = {
+ .species = SPECIES_AERODACTYL,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FIRE_BLAST, MOVE_BITE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [724] = {
+ .species = SPECIES_PORYGON2,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [725] = {
+ .species = SPECIES_GARDEVOIR,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [726] = {
+ .species = SPECIES_EXEGGUTOR,
+ .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [727] = {
+ .species = SPECIES_STARMIE,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [728] = {
+ .species = SPECIES_FLYGON,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_DOUBLE_EDGE, MOVE_CRUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [729] = {
+ .species = SPECIES_VENUSAUR,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [730] = {
+ .species = SPECIES_VAPOREON,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [731] = {
+ .species = SPECIES_JOLTEON,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BITE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_TIMID
+ },
+ [732] = {
+ .species = SPECIES_FLAREON,
+ .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [733] = {
+ .species = SPECIES_MEGANIUM,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_BODY_SLAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [734] = {
+ .species = SPECIES_ESPEON,
+ .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_ATTRACT, MOVE_CALM_MIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [735] = {
+ .species = SPECIES_UMBREON,
+ .moves = {MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [736] = {
+ .species = SPECIES_BLASTOISE,
+ .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [737] = {
+ .species = SPECIES_FERALIGATR,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [738] = {
+ .species = SPECIES_AGGRON,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [739] = {
+ .species = SPECIES_BLAZIKEN,
+ .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_THUNDER_PUNCH, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [740] = {
+ .species = SPECIES_WALREIN,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_SHEER_COLD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [741] = {
+ .species = SPECIES_SCEPTILE,
+ .moves = {MOVE_LEAF_BLADE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_THUNDER_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [742] = {
+ .species = SPECIES_CHARIZARD,
+ .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [743] = {
+ .species = SPECIES_TYPHLOSION,
+ .moves = {MOVE_OVERHEAT, MOVE_THUNDER_PUNCH, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [744] = {
+ .species = SPECIES_LAPRAS,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_PSYCHIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [745] = {
+ .species = SPECIES_CROBAT,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [746] = {
+ .species = SPECIES_SWAMPERT,
+ .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [747] = {
+ .species = SPECIES_GYARADOS,
+ .moves = {MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_DRAGON_DANCE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [748] = {
+ .species = SPECIES_SNORLAX,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_CURSE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [749] = {
+ .species = SPECIES_KINGDRA,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_ICE_BEAM, MOVE_DRAGON_DANCE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [750] = {
+ .species = SPECIES_BLISSEY,
+ .moves = {MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_COUNTER, MOVE_SOFT_BOILED},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BOLD
+ },
+ [751] = {
+ .species = SPECIES_MILOTIC,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RECOVER, MOVE_MIRROR_COAT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [752] = {
+ .species = SPECIES_ARCANINE,
+ .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_DOUBLE_EDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_DOCILE
+ },
+ [753] = {
+ .species = SPECIES_SALAMENCE,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [754] = {
+ .species = SPECIES_METAGROSS,
+ .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [755] = {
+ .species = SPECIES_SLAKING,
+ .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_YAWN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK,
+ .nature = NATURE_MODEST
+ },
+ [756] = {
+ .species = SPECIES_ARTICUNO,
+ .moves = {MOVE_ICE_BEAM, MOVE_WATER_PULSE, MOVE_ICY_WIND, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [757] = {
+ .species = SPECIES_ZAPDOS,
+ .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_DOCILE
+ },
+ [758] = {
+ .species = SPECIES_MOLTRES,
+ .moves = {MOVE_FLAMETHROWER, MOVE_AERIAL_ACE, MOVE_MUD_SLAP, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [759] = {
+ .species = SPECIES_RAIKOU,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [760] = {
+ .species = SPECIES_ENTEI,
+ .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [761] = {
+ .species = SPECIES_SUICUNE,
+ .moves = {MOVE_SURF, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [762] = {
+ .species = SPECIES_REGIROCK,
+ .moves = {MOVE_SUPERPOWER, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [763] = {
+ .species = SPECIES_REGICE,
+ .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_AMNESIA, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [764] = {
+ .species = SPECIES_REGISTEEL,
+ .moves = {MOVE_METAL_CLAW, MOVE_CURSE, MOVE_AMNESIA, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [765] = {
+ .species = SPECIES_LATIAS,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [766] = {
+ .species = SPECIES_LATIOS,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [767] = {
+ .species = SPECIES_ARTICUNO,
+ .moves = {MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [768] = {
+ .species = SPECIES_ZAPDOS,
+ .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DRILL_PECK, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [769] = {
+ .species = SPECIES_MOLTRES,
+ .moves = {MOVE_OVERHEAT, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [770] = {
+ .species = SPECIES_RAIKOU,
+ .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [771] = {
+ .species = SPECIES_ENTEI,
+ .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [772] = {
+ .species = SPECIES_SUICUNE,
+ .moves = {MOVE_TOXIC, MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [773] = {
+ .species = SPECIES_REGIROCK,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [774] = {
+ .species = SPECIES_REGICE,
+ .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [775] = {
+ .species = SPECIES_REGISTEEL,
+ .moves = {MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [776] = {
+ .species = SPECIES_LATIAS,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [777] = {
+ .species = SPECIES_LATIOS,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [778] = {
+ .species = SPECIES_ARTICUNO,
+ .moves = {MOVE_ICE_BEAM, MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [779] = {
+ .species = SPECIES_ZAPDOS,
+ .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_SUBSTITUTE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [780] = {
+ .species = SPECIES_MOLTRES,
+ .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_DOUBLE_TEAM, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [781] = {
+ .species = SPECIES_RAIKOU,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [782] = {
+ .species = SPECIES_ENTEI,
+ .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_EDGE, MOVE_SWAGGER, MOVE_PSYCH_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [783] = {
+ .species = SPECIES_SUICUNE,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [784] = {
+ .species = SPECIES_REGIROCK,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_CURSE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [785] = {
+ .species = SPECIES_REGICE,
+ .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [786] = {
+ .species = SPECIES_REGISTEEL,
+ .moves = {MOVE_ANCIENT_POWER, MOVE_AMNESIA, MOVE_COUNTER, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [787] = {
+ .species = SPECIES_LATIAS,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [788] = {
+ .species = SPECIES_LATIOS,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [789] = {
+ .species = SPECIES_ARTICUNO,
+ .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [790] = {
+ .species = SPECIES_ZAPDOS,
+ .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [791] = {
+ .species = SPECIES_MOLTRES,
+ .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SAFEGUARD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [792] = {
+ .species = SPECIES_RAIKOU,
+ .moves = {MOVE_THUNDERBOLT, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [793] = {
+ .species = SPECIES_ENTEI,
+ .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [794] = {
+ .species = SPECIES_SUICUNE,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BITE, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [795] = {
+ .species = SPECIES_REGIROCK,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [796] = {
+ .species = SPECIES_REGICE,
+ .moves = {MOVE_ICE_BEAM, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [797] = {
+ .species = SPECIES_REGISTEEL,
+ .moves = {MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [798] = {
+ .species = SPECIES_LATIAS,
+ .moves = {MOVE_MIST_BALL, MOVE_SHADOW_BALL, MOVE_CHARM, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [799] = {
+ .species = SPECIES_LATIOS,
+ .moves = {MOVE_LUSTER_PURGE, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [800] = {
+ .species = SPECIES_GENGAR,
+ .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [801] = {
+ .species = SPECIES_GENGAR,
+ .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [802] = {
+ .species = SPECIES_GENGAR,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [803] = {
+ .species = SPECIES_GENGAR,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [804] = {
+ .species = SPECIES_URSARING,
+ .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [805] = {
+ .species = SPECIES_URSARING,
+ .moves = {MOVE_HYPER_BEAM, MOVE_YAWN, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [806] = {
+ .species = SPECIES_URSARING,
+ .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BULK_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [807] = {
+ .species = SPECIES_URSARING,
+ .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [808] = {
+ .species = SPECIES_MACHAMP,
+ .moves = {MOVE_CROSS_CHOP, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [809] = {
+ .species = SPECIES_MACHAMP,
+ .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_ROCK_TOMB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [810] = {
+ .species = SPECIES_MACHAMP,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [811] = {
+ .species = SPECIES_MACHAMP,
+ .moves = {MOVE_REVENGE, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [812] = {
+ .species = SPECIES_GARDEVOIR,
+ .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ENDURE, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [813] = {
+ .species = SPECIES_GARDEVOIR,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_TIMID
+ },
+ [814] = {
+ .species = SPECIES_GARDEVOIR,
+ .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [815] = {
+ .species = SPECIES_GARDEVOIR,
+ .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_ATTRACT, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [816] = {
+ .species = SPECIES_STARMIE,
+ .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_RECOVER, MOVE_LIGHT_SCREEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [817] = {
+ .species = SPECIES_STARMIE,
+ .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [818] = {
+ .species = SPECIES_STARMIE,
+ .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [819] = {
+ .species = SPECIES_STARMIE,
+ .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_COSMIC_POWER, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [820] = {
+ .species = SPECIES_LAPRAS,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [821] = {
+ .species = SPECIES_LAPRAS,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [822] = {
+ .species = SPECIES_LAPRAS,
+ .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_REST, MOVE_SLEEP_TALK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [823] = {
+ .species = SPECIES_LAPRAS,
+ .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_SING, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [824] = {
+ .species = SPECIES_SNORLAX,
+ .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [825] = {
+ .species = SPECIES_SNORLAX,
+ .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [826] = {
+ .species = SPECIES_SNORLAX,
+ .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_CURSE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [827] = {
+ .species = SPECIES_SNORLAX,
+ .moves = {MOVE_RETURN, MOVE_SHADOW_BALL, MOVE_BELLY_DRUM, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [828] = {
+ .species = SPECIES_SALAMENCE,
+ .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [829] = {
+ .species = SPECIES_SALAMENCE,
+ .moves = {MOVE_HEADBUTT, MOVE_AERIAL_ACE, MOVE_CRUNCH, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [830] = {
+ .species = SPECIES_SALAMENCE,
+ .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [831] = {
+ .species = SPECIES_SALAMENCE,
+ .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [832] = {
+ .species = SPECIES_METAGROSS,
+ .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_JOLLY
+ },
+ [833] = {
+ .species = SPECIES_METAGROSS,
+ .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [834] = {
+ .species = SPECIES_METAGROSS,
+ .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [835] = {
+ .species = SPECIES_METAGROSS,
+ .moves = {MOVE_METEOR_MASH, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [836] = {
+ .species = SPECIES_REGIROCK,
+ .moves = {MOVE_HYPER_BEAM, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [837] = {
+ .species = SPECIES_REGIROCK,
+ .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ROCK_SLIDE, MOVE_EXPLOSION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [838] = {
+ .species = SPECIES_REGICE,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_COUNTER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [839] = {
+ .species = SPECIES_REGICE,
+ .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_SLEEP_TALK, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [840] = {
+ .species = SPECIES_REGISTEEL,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [841] = {
+ .species = SPECIES_REGISTEEL,
+ .moves = {MOVE_SUPERPOWER, MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [842] = {
+ .species = SPECIES_LATIAS,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [843] = {
+ .species = SPECIES_LATIAS,
+ .moves = {MOVE_MIST_BALL, MOVE_DRAGON_CLAW, MOVE_ATTRACT, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [844] = {
+ .species = SPECIES_LATIAS,
+ .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [845] = {
+ .species = SPECIES_LATIAS,
+ .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [846] = {
+ .species = SPECIES_LATIOS,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [847] = {
+ .species = SPECIES_LATIOS,
+ .moves = {MOVE_LUSTER_PURGE, MOVE_SHADOW_BALL, MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [848] = {
+ .species = SPECIES_LATIOS,
+ .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_DRAGON_DANCE, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [849] = {
+ .species = SPECIES_LATIOS,
+ .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [850] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [851] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [852] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_HYPER_BEAM, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [853] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_HYPER_BEAM, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [854] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_OUTRAGE, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [855] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_FLAMETHROWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [856] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [857] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_BRICK_BREAK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [858] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_THUNDER, MOVE_SURF, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [859] = {
+ .species = SPECIES_DRAGONITE,
+ .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [860] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_THUNDERBOLT, MOVE_SURF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [861] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_THUNDERBOLT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [862] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [863] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_CRUNCH, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [864] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [865] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [866] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CURSE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [867] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [868] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [869] = {
+ .species = SPECIES_TYRANITAR,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [870] = {
+ .species = SPECIES_ARTICUNO,
+ .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_AGILITY, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [871] = {
+ .species = SPECIES_ARTICUNO,
+ .moves = {MOVE_ICE_BEAM, MOVE_AERIAL_ACE, MOVE_REFLECT, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [872] = {
+ .species = SPECIES_ZAPDOS,
+ .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [873] = {
+ .species = SPECIES_ZAPDOS,
+ .moves = {MOVE_THUNDER, MOVE_DRILL_PECK, MOVE_RAIN_DANCE, MOVE_DOUBLE_EDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [874] = {
+ .species = SPECIES_MOLTRES,
+ .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_FACADE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_DOCILE
+ },
+ [875] = {
+ .species = SPECIES_MOLTRES,
+ .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_STEEL_WING},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_DOCILE
+ },
+ [876] = {
+ .species = SPECIES_RAIKOU,
+ .moves = {MOVE_THUNDERBOLT, MOVE_DOUBLE_EDGE, MOVE_ROAR, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [877] = {
+ .species = SPECIES_RAIKOU,
+ .moves = {MOVE_THUNDERBOLT, MOVE_CALM_MIND, MOVE_SUBSTITUTE, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [878] = {
+ .species = SPECIES_ENTEI,
+ .moves = {MOVE_FIRE_BLAST, MOVE_DOUBLE_EDGE, MOVE_ENDURE, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_DOCILE
+ },
+ [879] = {
+ .species = SPECIES_ENTEI,
+ .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_ROAR, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [880] = {
+ .species = SPECIES_SUICUNE,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_ICY_WIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [881] = {
+ .species = SPECIES_SUICUNE,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ }
+};
diff --git a/src/data/battle_frontier/battle_frontier_trainer_mons.h b/src/data/battle_frontier/battle_frontier_trainer_mons.h
new file mode 100644
index 000000000..d0e21172b
--- /dev/null
+++ b/src/data/battle_frontier/battle_frontier_trainer_mons.h
@@ -0,0 +1,15229 @@
+const u16 gBattleFrontierTrainerMons_Brady[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Conner[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Bradley[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Cybil[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Rodette[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Peggy[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Keith[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Grayson[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Glenn[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Liliana[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Elise[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Zoey[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Manuel[] =
+{
+ 5,
+ 20,
+ 21,
+ 25,
+ 27,
+ 35,
+ 46,
+ 47,
+ 48,
+ 50,
+ 53,
+ 62,
+ 63,
+ 69,
+ 75,
+ 78,
+ 79,
+ 80,
+ 84,
+ 90,
+ 92,
+ 99,
+ 100,
+ 102,
+ 106,
+ 110,
+ 112,
+ 114,
+ 119,
+ 121,
+ 124,
+ 127,
+ 146,
+ 147,
+ 154,
+ 158,
+ 160,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Russ[] =
+{
+ 5,
+ 20,
+ 21,
+ 25,
+ 27,
+ 35,
+ 46,
+ 47,
+ 48,
+ 50,
+ 53,
+ 62,
+ 63,
+ 69,
+ 75,
+ 78,
+ 79,
+ 80,
+ 84,
+ 90,
+ 92,
+ 99,
+ 100,
+ 102,
+ 106,
+ 110,
+ 112,
+ 114,
+ 119,
+ 121,
+ 124,
+ 127,
+ 146,
+ 147,
+ 154,
+ 158,
+ 160,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dustin[] =
+{
+ 5,
+ 20,
+ 21,
+ 25,
+ 27,
+ 35,
+ 46,
+ 47,
+ 48,
+ 50,
+ 53,
+ 62,
+ 63,
+ 69,
+ 75,
+ 78,
+ 79,
+ 80,
+ 84,
+ 90,
+ 92,
+ 99,
+ 100,
+ 102,
+ 106,
+ 110,
+ 112,
+ 114,
+ 119,
+ 121,
+ 124,
+ 127,
+ 146,
+ 147,
+ 154,
+ 158,
+ 160,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Tina[] =
+{
+ 5,
+ 20,
+ 21,
+ 25,
+ 27,
+ 35,
+ 46,
+ 47,
+ 48,
+ 50,
+ 53,
+ 62,
+ 63,
+ 69,
+ 75,
+ 78,
+ 79,
+ 80,
+ 84,
+ 90,
+ 92,
+ 99,
+ 100,
+ 102,
+ 106,
+ 110,
+ 112,
+ 114,
+ 119,
+ 121,
+ 124,
+ 127,
+ 146,
+ 147,
+ 154,
+ 158,
+ 160,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gillian[] =
+{
+ 5,
+ 20,
+ 21,
+ 25,
+ 27,
+ 35,
+ 46,
+ 47,
+ 48,
+ 50,
+ 53,
+ 62,
+ 63,
+ 69,
+ 75,
+ 78,
+ 79,
+ 80,
+ 84,
+ 90,
+ 92,
+ 99,
+ 100,
+ 102,
+ 106,
+ 110,
+ 112,
+ 114,
+ 119,
+ 121,
+ 124,
+ 127,
+ 146,
+ 147,
+ 154,
+ 158,
+ 160,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Zoe[] =
+{
+ 5,
+ 20,
+ 21,
+ 25,
+ 27,
+ 35,
+ 46,
+ 47,
+ 48,
+ 50,
+ 53,
+ 62,
+ 63,
+ 69,
+ 75,
+ 78,
+ 79,
+ 80,
+ 84,
+ 90,
+ 92,
+ 99,
+ 100,
+ 102,
+ 106,
+ 110,
+ 112,
+ 114,
+ 119,
+ 121,
+ 124,
+ 127,
+ 146,
+ 147,
+ 154,
+ 158,
+ 160,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Chen[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Al[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Mitch[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Anne[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Alize[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Lauren[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kipp[] =
+{
+ 5,
+ 6,
+ 7,
+ 14,
+ 19,
+ 28,
+ 35,
+ 42,
+ 45,
+ 48,
+ 50,
+ 55,
+ 59,
+ 60,
+ 68,
+ 73,
+ 83,
+ 84,
+ 86,
+ 87,
+ 90,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 106,
+ 109,
+ 112,
+ 114,
+ 121,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jason[] =
+{
+ 5,
+ 6,
+ 7,
+ 14,
+ 19,
+ 28,
+ 35,
+ 42,
+ 45,
+ 48,
+ 50,
+ 55,
+ 59,
+ 60,
+ 68,
+ 73,
+ 83,
+ 84,
+ 86,
+ 87,
+ 90,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 106,
+ 109,
+ 112,
+ 114,
+ 121,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_John[] =
+{
+ 5,
+ 6,
+ 7,
+ 14,
+ 19,
+ 28,
+ 35,
+ 42,
+ 45,
+ 48,
+ 50,
+ 55,
+ 59,
+ 60,
+ 68,
+ 73,
+ 83,
+ 84,
+ 86,
+ 87,
+ 90,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 106,
+ 109,
+ 112,
+ 114,
+ 121,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ann[] =
+{
+ 5,
+ 6,
+ 7,
+ 14,
+ 19,
+ 28,
+ 35,
+ 42,
+ 45,
+ 48,
+ 50,
+ 55,
+ 59,
+ 60,
+ 68,
+ 73,
+ 83,
+ 84,
+ 86,
+ 87,
+ 90,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 106,
+ 109,
+ 112,
+ 114,
+ 121,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Eileen[] =
+{
+ 5,
+ 6,
+ 7,
+ 14,
+ 19,
+ 28,
+ 35,
+ 42,
+ 45,
+ 48,
+ 50,
+ 55,
+ 59,
+ 60,
+ 68,
+ 73,
+ 83,
+ 84,
+ 86,
+ 87,
+ 90,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 106,
+ 109,
+ 112,
+ 114,
+ 121,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Carlie[] =
+{
+ 5,
+ 6,
+ 7,
+ 14,
+ 19,
+ 28,
+ 35,
+ 42,
+ 45,
+ 48,
+ 50,
+ 55,
+ 59,
+ 60,
+ 68,
+ 73,
+ 83,
+ 84,
+ 86,
+ 87,
+ 90,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 106,
+ 109,
+ 112,
+ 114,
+ 121,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gordon[] =
+{
+ 1,
+ 13,
+ 15,
+ 16,
+ 17,
+ 22,
+ 23,
+ 24,
+ 26,
+ 32,
+ 34,
+ 36,
+ 43,
+ 50,
+ 51,
+ 54,
+ 56,
+ 68,
+ 72,
+ 73,
+ 81,
+ 82,
+ 83,
+ 86,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 107,
+ 109,
+ 111,
+ 113,
+ 116,
+ 117,
+ 123,
+ 124,
+ 128,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 152,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ayden[] =
+{
+ 1,
+ 13,
+ 15,
+ 16,
+ 17,
+ 22,
+ 23,
+ 24,
+ 26,
+ 32,
+ 34,
+ 36,
+ 43,
+ 50,
+ 51,
+ 54,
+ 56,
+ 68,
+ 72,
+ 73,
+ 81,
+ 82,
+ 83,
+ 86,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 107,
+ 109,
+ 111,
+ 113,
+ 116,
+ 117,
+ 123,
+ 124,
+ 128,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 152,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Marco[] =
+{
+ 1,
+ 13,
+ 15,
+ 16,
+ 17,
+ 22,
+ 23,
+ 24,
+ 26,
+ 32,
+ 34,
+ 36,
+ 43,
+ 50,
+ 51,
+ 54,
+ 56,
+ 68,
+ 72,
+ 73,
+ 81,
+ 82,
+ 83,
+ 86,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 107,
+ 109,
+ 111,
+ 113,
+ 116,
+ 117,
+ 123,
+ 124,
+ 128,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 152,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Cierra[] =
+{
+ 1,
+ 13,
+ 16,
+ 17,
+ 23,
+ 24,
+ 26,
+ 32,
+ 34,
+ 36,
+ 43,
+ 51,
+ 54,
+ 56,
+ 68,
+ 72,
+ 73,
+ 76,
+ 83,
+ 84,
+ 86,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 107,
+ 109,
+ 111,
+ 113,
+ 116,
+ 117,
+ 118,
+ 123,
+ 124,
+ 128,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Marcy[] =
+{
+ 1,
+ 13,
+ 16,
+ 17,
+ 23,
+ 24,
+ 26,
+ 32,
+ 34,
+ 36,
+ 43,
+ 51,
+ 54,
+ 56,
+ 68,
+ 72,
+ 73,
+ 76,
+ 83,
+ 84,
+ 86,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 107,
+ 109,
+ 111,
+ 113,
+ 116,
+ 117,
+ 118,
+ 123,
+ 124,
+ 128,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kathy[] =
+{
+ 1,
+ 13,
+ 16,
+ 17,
+ 23,
+ 24,
+ 26,
+ 32,
+ 34,
+ 36,
+ 43,
+ 51,
+ 54,
+ 56,
+ 68,
+ 72,
+ 73,
+ 76,
+ 83,
+ 84,
+ 86,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 105,
+ 107,
+ 109,
+ 111,
+ 113,
+ 116,
+ 117,
+ 118,
+ 123,
+ 124,
+ 128,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Peyton[] =
+{
+ 84,
+ 85,
+ 87,
+ 88,
+ 89,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 105,
+ 106,
+ 107,
+ 109,
+ 112,
+ 113,
+ 117,
+ 120,
+ 121,
+ 123,
+ 129,
+ 134,
+ 142,
+ 143,
+ 145,
+ 148,
+ 149,
+ 151,
+ 152,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Julian[] =
+{
+ 84,
+ 85,
+ 87,
+ 88,
+ 89,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 105,
+ 106,
+ 107,
+ 109,
+ 112,
+ 113,
+ 117,
+ 120,
+ 121,
+ 123,
+ 129,
+ 134,
+ 142,
+ 143,
+ 145,
+ 148,
+ 149,
+ 151,
+ 152,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Quinn[] =
+{
+ 84,
+ 85,
+ 87,
+ 88,
+ 89,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 105,
+ 106,
+ 107,
+ 109,
+ 112,
+ 113,
+ 117,
+ 120,
+ 121,
+ 123,
+ 129,
+ 134,
+ 142,
+ 143,
+ 145,
+ 148,
+ 149,
+ 151,
+ 152,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Haylee[] =
+{
+ 1,
+ 5,
+ 6,
+ 10,
+ 13,
+ 14,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 23,
+ 24,
+ 26,
+ 28,
+ 29,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 54,
+ 56,
+ 59,
+ 61,
+ 65,
+ 66,
+ 67,
+ 68,
+ 71,
+ 72,
+ 79,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Amanda[] =
+{
+ 1,
+ 5,
+ 6,
+ 10,
+ 13,
+ 14,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 23,
+ 24,
+ 26,
+ 28,
+ 29,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 54,
+ 56,
+ 59,
+ 61,
+ 65,
+ 66,
+ 67,
+ 68,
+ 71,
+ 72,
+ 79,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Stacy[] =
+{
+ 1,
+ 5,
+ 6,
+ 10,
+ 13,
+ 14,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 23,
+ 24,
+ 26,
+ 28,
+ 29,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 54,
+ 56,
+ 59,
+ 61,
+ 65,
+ 66,
+ 67,
+ 68,
+ 71,
+ 72,
+ 79,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Rafael[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Oliver[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Payton[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Pamela[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Eliza[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Marisa[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Lewis[] =
+{
+ 2,
+ 3,
+ 4,
+ 8,
+ 9,
+ 21,
+ 27,
+ 39,
+ 40,
+ 41,
+ 42,
+ 52,
+ 57,
+ 58,
+ 80,
+ 112,
+ 132,
+ 141,
+ 153,
+ 154,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Yoshi[] =
+{
+ 2,
+ 3,
+ 4,
+ 11,
+ 12,
+ 21,
+ 27,
+ 39,
+ 40,
+ 41,
+ 42,
+ 52,
+ 57,
+ 58,
+ 80,
+ 112,
+ 132,
+ 141,
+ 153,
+ 154,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Destin[] =
+{
+ 2,
+ 3,
+ 4,
+ 21,
+ 27,
+ 39,
+ 40,
+ 41,
+ 42,
+ 52,
+ 57,
+ 58,
+ 80,
+ 112,
+ 132,
+ 141,
+ 153,
+ 154,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Keon[] =
+{
+ 5,
+ 21,
+ 25,
+ 27,
+ 35,
+ 39,
+ 40,
+ 41,
+ 42,
+ 46,
+ 47,
+ 48,
+ 50,
+ 52,
+ 53,
+ 57,
+ 58,
+ 62,
+ 63,
+ 69,
+ 75,
+ 78,
+ 79,
+ 80,
+ 84,
+ 90,
+ 92,
+ 99,
+ 100,
+ 102,
+ 106,
+ 110,
+ 112,
+ 114,
+ 121,
+ 124,
+ 127,
+ 132,
+ 141,
+ 146,
+ 147,
+ 153,
+ 154,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Stuart[] =
+{
+ 5,
+ 21,
+ 25,
+ 27,
+ 35,
+ 39,
+ 40,
+ 41,
+ 42,
+ 46,
+ 47,
+ 48,
+ 50,
+ 52,
+ 53,
+ 57,
+ 58,
+ 62,
+ 63,
+ 69,
+ 75,
+ 78,
+ 79,
+ 80,
+ 84,
+ 90,
+ 92,
+ 99,
+ 100,
+ 102,
+ 106,
+ 110,
+ 112,
+ 114,
+ 121,
+ 124,
+ 127,
+ 132,
+ 141,
+ 146,
+ 147,
+ 153,
+ 154,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Nestor[] =
+{
+ 5,
+ 21,
+ 25,
+ 27,
+ 35,
+ 39,
+ 40,
+ 41,
+ 42,
+ 46,
+ 47,
+ 48,
+ 50,
+ 52,
+ 53,
+ 57,
+ 58,
+ 62,
+ 63,
+ 69,
+ 75,
+ 78,
+ 79,
+ 80,
+ 84,
+ 90,
+ 92,
+ 99,
+ 100,
+ 102,
+ 106,
+ 110,
+ 112,
+ 114,
+ 121,
+ 124,
+ 127,
+ 132,
+ 141,
+ 146,
+ 147,
+ 153,
+ 154,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Derrick[] =
+{
+ 21,
+ 27,
+ 29,
+ 39,
+ 40,
+ 41,
+ 42,
+ 52,
+ 57,
+ 58,
+ 61,
+ 62,
+ 63,
+ 69,
+ 80,
+ 92,
+ 102,
+ 112,
+ 125,
+ 129,
+ 132,
+ 140,
+ 141,
+ 153,
+ 154,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Bryson[] =
+{
+ 21,
+ 27,
+ 29,
+ 39,
+ 40,
+ 41,
+ 42,
+ 52,
+ 57,
+ 58,
+ 61,
+ 62,
+ 63,
+ 69,
+ 80,
+ 92,
+ 102,
+ 112,
+ 125,
+ 129,
+ 132,
+ 140,
+ 141,
+ 153,
+ 154,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Clayton[] =
+{
+ 21,
+ 27,
+ 29,
+ 39,
+ 40,
+ 41,
+ 42,
+ 52,
+ 57,
+ 58,
+ 61,
+ 62,
+ 63,
+ 69,
+ 80,
+ 92,
+ 102,
+ 112,
+ 125,
+ 129,
+ 132,
+ 140,
+ 141,
+ 153,
+ 154,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Trenton[] =
+{
+ 6,
+ 7,
+ 55,
+ 60,
+ 68,
+ 73,
+ 83,
+ 86,
+ 87,
+ 105,
+ 111,
+ 116,
+ 123,
+ 124,
+ 128,
+ 134,
+ 138,
+ 139,
+ 151,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jenson[] =
+{
+ 6,
+ 7,
+ 55,
+ 60,
+ 68,
+ 73,
+ 83,
+ 86,
+ 87,
+ 105,
+ 111,
+ 116,
+ 123,
+ 124,
+ 128,
+ 134,
+ 138,
+ 139,
+ 151,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Wesley[] =
+{
+ 6,
+ 7,
+ 55,
+ 60,
+ 68,
+ 73,
+ 83,
+ 86,
+ 87,
+ 105,
+ 111,
+ 116,
+ 123,
+ 124,
+ 128,
+ 134,
+ 138,
+ 139,
+ 151,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Anton[] =
+{
+ 31,
+ 39,
+ 58,
+ 67,
+ 70,
+ 74,
+ 75,
+ 78,
+ 85,
+ 104,
+ 108,
+ 120,
+ 122,
+ 133,
+ 138,
+ 139,
+ 140,
+ 141,
+ 150,
+ 151,
+ 152,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Lawson[] =
+{
+ 31,
+ 39,
+ 58,
+ 67,
+ 70,
+ 74,
+ 75,
+ 78,
+ 85,
+ 104,
+ 108,
+ 120,
+ 122,
+ 133,
+ 138,
+ 139,
+ 140,
+ 141,
+ 150,
+ 151,
+ 152,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Sammy[] =
+{
+ 31,
+ 39,
+ 58,
+ 67,
+ 70,
+ 74,
+ 75,
+ 78,
+ 85,
+ 104,
+ 108,
+ 120,
+ 122,
+ 133,
+ 138,
+ 139,
+ 140,
+ 141,
+ 150,
+ 151,
+ 152,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Arnie[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Adrian[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Tristan[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Juliana[] =
+{
+ 0,
+ 14,
+ 19,
+ 28,
+ 42,
+ 58,
+ 59,
+ 67,
+ 68,
+ 85,
+ 118,
+ 120,
+ 123,
+ 155,
+ 156,
+ 193,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Rylee[] =
+{
+ 0,
+ 14,
+ 19,
+ 28,
+ 42,
+ 58,
+ 59,
+ 67,
+ 68,
+ 85,
+ 118,
+ 120,
+ 123,
+ 155,
+ 156,
+ 193,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Chelsea[] =
+{
+ 0,
+ 14,
+ 19,
+ 28,
+ 42,
+ 58,
+ 59,
+ 67,
+ 68,
+ 85,
+ 118,
+ 120,
+ 123,
+ 155,
+ 156,
+ 193,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Danela[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 10,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Lizbeth[] =
+{
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Amelia[] =
+{
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jillian[] =
+{
+ 0,
+ 5,
+ 18,
+ 19,
+ 29,
+ 35,
+ 48,
+ 50,
+ 52,
+ 61,
+ 69,
+ 75,
+ 78,
+ 84,
+ 90,
+ 94,
+ 99,
+ 100,
+ 101,
+ 102,
+ 106,
+ 112,
+ 114,
+ 121,
+ 125,
+ 129,
+ 130,
+ 131,
+ 140,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Abbie[] =
+{
+ 0,
+ 5,
+ 18,
+ 19,
+ 29,
+ 35,
+ 48,
+ 50,
+ 52,
+ 61,
+ 69,
+ 75,
+ 78,
+ 84,
+ 90,
+ 94,
+ 99,
+ 100,
+ 101,
+ 102,
+ 106,
+ 112,
+ 114,
+ 121,
+ 125,
+ 129,
+ 130,
+ 131,
+ 140,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Briana[] =
+{
+ 0,
+ 5,
+ 18,
+ 19,
+ 29,
+ 35,
+ 48,
+ 50,
+ 52,
+ 61,
+ 69,
+ 75,
+ 78,
+ 84,
+ 90,
+ 94,
+ 99,
+ 100,
+ 101,
+ 102,
+ 106,
+ 112,
+ 114,
+ 121,
+ 125,
+ 129,
+ 130,
+ 131,
+ 140,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Antonio[] =
+{
+ 5,
+ 10,
+ 20,
+ 35,
+ 48,
+ 49,
+ 50,
+ 62,
+ 63,
+ 64,
+ 66,
+ 71,
+ 75,
+ 77,
+ 78,
+ 84,
+ 90,
+ 92,
+ 99,
+ 106,
+ 108,
+ 112,
+ 114,
+ 115,
+ 116,
+ 119,
+ 121,
+ 122,
+ 143,
+ 148,
+ 152,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jaden[] =
+{
+ 5,
+ 10,
+ 20,
+ 35,
+ 48,
+ 49,
+ 50,
+ 62,
+ 63,
+ 64,
+ 66,
+ 71,
+ 75,
+ 77,
+ 78,
+ 84,
+ 90,
+ 92,
+ 99,
+ 106,
+ 108,
+ 112,
+ 114,
+ 115,
+ 116,
+ 119,
+ 121,
+ 122,
+ 143,
+ 148,
+ 152,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dakota[] =
+{
+ 5,
+ 10,
+ 20,
+ 35,
+ 48,
+ 49,
+ 50,
+ 62,
+ 63,
+ 64,
+ 66,
+ 71,
+ 75,
+ 77,
+ 78,
+ 84,
+ 90,
+ 92,
+ 99,
+ 106,
+ 108,
+ 112,
+ 114,
+ 115,
+ 116,
+ 119,
+ 121,
+ 122,
+ 143,
+ 148,
+ 152,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Brayden[] =
+{
+ 1,
+ 13,
+ 16,
+ 17,
+ 23,
+ 24,
+ 25,
+ 26,
+ 32,
+ 33,
+ 34,
+ 36,
+ 37,
+ 38,
+ 43,
+ 44,
+ 45,
+ 51,
+ 54,
+ 56,
+ 72,
+ 91,
+ 93,
+ 95,
+ 106,
+ 107,
+ 113,
+ 117,
+ 118,
+ 135,
+ 137,
+ 142,
+ 144,
+ 145,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Corson[] =
+{
+ 1,
+ 13,
+ 16,
+ 17,
+ 23,
+ 24,
+ 25,
+ 26,
+ 32,
+ 33,
+ 34,
+ 36,
+ 37,
+ 38,
+ 43,
+ 44,
+ 45,
+ 51,
+ 54,
+ 56,
+ 72,
+ 91,
+ 93,
+ 95,
+ 106,
+ 107,
+ 113,
+ 117,
+ 118,
+ 135,
+ 137,
+ 142,
+ 144,
+ 145,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Trevin[] =
+{
+ 1,
+ 13,
+ 16,
+ 17,
+ 23,
+ 24,
+ 25,
+ 26,
+ 32,
+ 33,
+ 34,
+ 36,
+ 37,
+ 38,
+ 43,
+ 44,
+ 45,
+ 51,
+ 54,
+ 56,
+ 72,
+ 91,
+ 93,
+ 95,
+ 106,
+ 107,
+ 113,
+ 117,
+ 118,
+ 135,
+ 137,
+ 142,
+ 144,
+ 145,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Patrick[] =
+{
+ 15,
+ 22,
+ 50,
+ 67,
+ 70,
+ 71,
+ 74,
+ 77,
+ 81,
+ 82,
+ 83,
+ 86,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 104,
+ 109,
+ 111,
+ 120,
+ 124,
+ 128,
+ 131,
+ 133,
+ 134,
+ 138,
+ 139,
+ 151,
+ 155,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kaden[] =
+{
+ 15,
+ 22,
+ 50,
+ 67,
+ 70,
+ 71,
+ 74,
+ 77,
+ 81,
+ 82,
+ 83,
+ 86,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 104,
+ 109,
+ 111,
+ 120,
+ 124,
+ 128,
+ 131,
+ 133,
+ 134,
+ 138,
+ 139,
+ 151,
+ 155,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Maxwell[] =
+{
+ 15,
+ 22,
+ 50,
+ 67,
+ 70,
+ 71,
+ 74,
+ 77,
+ 81,
+ 82,
+ 83,
+ 86,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 104,
+ 109,
+ 111,
+ 120,
+ 124,
+ 128,
+ 131,
+ 133,
+ 134,
+ 138,
+ 139,
+ 151,
+ 155,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Daryl[] =
+{
+ 15,
+ 22,
+ 31,
+ 39,
+ 50,
+ 51,
+ 58,
+ 67,
+ 70,
+ 74,
+ 75,
+ 81,
+ 82,
+ 85,
+ 104,
+ 120,
+ 122,
+ 132,
+ 133,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 144,
+ 150,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kenneth[] =
+{
+ 15,
+ 22,
+ 31,
+ 39,
+ 50,
+ 51,
+ 58,
+ 67,
+ 70,
+ 74,
+ 75,
+ 81,
+ 82,
+ 85,
+ 104,
+ 120,
+ 122,
+ 132,
+ 133,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 144,
+ 150,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Rich[] =
+{
+ 15,
+ 22,
+ 31,
+ 39,
+ 50,
+ 51,
+ 58,
+ 67,
+ 70,
+ 74,
+ 75,
+ 81,
+ 82,
+ 85,
+ 104,
+ 120,
+ 122,
+ 132,
+ 133,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 144,
+ 150,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Caden[] =
+{
+ 30,
+ 62,
+ 63,
+ 65,
+ 70,
+ 74,
+ 77,
+ 78,
+ 85,
+ 88,
+ 89,
+ 95,
+ 108,
+ 119,
+ 122,
+ 133,
+ 136,
+ 149,
+ 150,
+ 152,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Marlon[] =
+{
+ 30,
+ 62,
+ 63,
+ 65,
+ 70,
+ 74,
+ 77,
+ 78,
+ 85,
+ 88,
+ 89,
+ 95,
+ 108,
+ 119,
+ 122,
+ 133,
+ 136,
+ 149,
+ 150,
+ 152,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Nash[] =
+{
+ 30,
+ 62,
+ 63,
+ 65,
+ 70,
+ 74,
+ 77,
+ 78,
+ 85,
+ 88,
+ 89,
+ 95,
+ 108,
+ 119,
+ 122,
+ 133,
+ 136,
+ 149,
+ 150,
+ 152,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Robby[] =
+{
+ 1,
+ 13,
+ 15,
+ 16,
+ 17,
+ 22,
+ 23,
+ 24,
+ 26,
+ 32,
+ 33,
+ 34,
+ 36,
+ 37,
+ 38,
+ 43,
+ 44,
+ 50,
+ 51,
+ 54,
+ 56,
+ 67,
+ 70,
+ 72,
+ 74,
+ 75,
+ 81,
+ 82,
+ 85,
+ 91,
+ 93,
+ 104,
+ 107,
+ 113,
+ 117,
+ 120,
+ 132,
+ 133,
+ 135,
+ 137,
+ 142,
+ 144,
+ 145,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Reece[] =
+{
+ 1,
+ 13,
+ 15,
+ 16,
+ 17,
+ 22,
+ 23,
+ 24,
+ 26,
+ 32,
+ 33,
+ 34,
+ 36,
+ 37,
+ 38,
+ 43,
+ 44,
+ 50,
+ 51,
+ 54,
+ 56,
+ 67,
+ 70,
+ 72,
+ 74,
+ 75,
+ 81,
+ 82,
+ 85,
+ 91,
+ 93,
+ 104,
+ 107,
+ 113,
+ 117,
+ 120,
+ 132,
+ 133,
+ 135,
+ 137,
+ 142,
+ 144,
+ 145,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kathryn[] =
+{
+ 1,
+ 13,
+ 15,
+ 16,
+ 17,
+ 22,
+ 23,
+ 24,
+ 26,
+ 32,
+ 33,
+ 34,
+ 36,
+ 37,
+ 38,
+ 43,
+ 44,
+ 50,
+ 51,
+ 54,
+ 56,
+ 67,
+ 70,
+ 72,
+ 74,
+ 75,
+ 81,
+ 82,
+ 85,
+ 91,
+ 93,
+ 104,
+ 107,
+ 113,
+ 117,
+ 120,
+ 132,
+ 133,
+ 135,
+ 137,
+ 142,
+ 144,
+ 145,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ellen[] =
+{
+ 1,
+ 13,
+ 15,
+ 16,
+ 17,
+ 22,
+ 23,
+ 24,
+ 26,
+ 32,
+ 33,
+ 34,
+ 36,
+ 37,
+ 38,
+ 43,
+ 44,
+ 50,
+ 51,
+ 54,
+ 56,
+ 67,
+ 70,
+ 72,
+ 74,
+ 75,
+ 81,
+ 82,
+ 85,
+ 91,
+ 93,
+ 104,
+ 107,
+ 113,
+ 117,
+ 120,
+ 132,
+ 133,
+ 135,
+ 137,
+ 142,
+ 144,
+ 145,
+ 156,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ramon[] =
+{
+ 15,
+ 22,
+ 50,
+ 71,
+ 72,
+ 76,
+ 77,
+ 81,
+ 82,
+ 83,
+ 84,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 107,
+ 109,
+ 111,
+ 113,
+ 117,
+ 118,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Arthur[] =
+{
+ 15,
+ 22,
+ 50,
+ 71,
+ 72,
+ 76,
+ 77,
+ 81,
+ 82,
+ 83,
+ 84,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 107,
+ 109,
+ 111,
+ 113,
+ 117,
+ 118,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Alondra[] =
+{
+ 15,
+ 22,
+ 50,
+ 71,
+ 72,
+ 76,
+ 77,
+ 81,
+ 82,
+ 83,
+ 84,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 107,
+ 109,
+ 111,
+ 113,
+ 117,
+ 118,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Adriana[] =
+{
+ 15,
+ 22,
+ 50,
+ 71,
+ 72,
+ 76,
+ 77,
+ 81,
+ 82,
+ 83,
+ 84,
+ 87,
+ 96,
+ 97,
+ 98,
+ 99,
+ 103,
+ 107,
+ 109,
+ 111,
+ 113,
+ 117,
+ 118,
+ 131,
+ 134,
+ 138,
+ 139,
+ 142,
+ 144,
+ 145,
+ 151,
+ 155,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Malik[] =
+{
+ 10,
+ 15,
+ 22,
+ 49,
+ 50,
+ 64,
+ 66,
+ 71,
+ 72,
+ 77,
+ 78,
+ 81,
+ 82,
+ 91,
+ 93,
+ 107,
+ 108,
+ 113,
+ 115,
+ 117,
+ 122,
+ 135,
+ 137,
+ 142,
+ 143,
+ 144,
+ 145,
+ 148,
+ 152,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jill[] =
+{
+ 10,
+ 15,
+ 22,
+ 49,
+ 50,
+ 64,
+ 66,
+ 71,
+ 72,
+ 77,
+ 78,
+ 81,
+ 82,
+ 91,
+ 93,
+ 107,
+ 108,
+ 113,
+ 115,
+ 117,
+ 122,
+ 135,
+ 137,
+ 142,
+ 143,
+ 144,
+ 145,
+ 148,
+ 152,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Erik[] =
+{
+ 162,
+ 164,
+ 168,
+ 178,
+ 183,
+ 184,
+ 189,
+ 197,
+ 199,
+ 200,
+ 203,
+ 204,
+ 207,
+ 210,
+ 213,
+ 214,
+ 218,
+ 220,
+ 221,
+ 224,
+ 227,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 238,
+ 240,
+ 243,
+ 245,
+ 246,
+ 250,
+ 263,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Yazmin[] =
+{
+ 162,
+ 164,
+ 168,
+ 178,
+ 183,
+ 184,
+ 189,
+ 197,
+ 199,
+ 200,
+ 203,
+ 204,
+ 207,
+ 210,
+ 213,
+ 214,
+ 218,
+ 220,
+ 221,
+ 224,
+ 227,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 238,
+ 240,
+ 243,
+ 245,
+ 246,
+ 250,
+ 263,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jamal[] =
+{
+ 170,
+ 176,
+ 178,
+ 182,
+ 189,
+ 190,
+ 192,
+ 196,
+ 211,
+ 212,
+ 213,
+ 219,
+ 228,
+ 230,
+ 232,
+ 233,
+ 234,
+ 236,
+ 242,
+ 245,
+ 249,
+ 253,
+ 256,
+ 257,
+ 258,
+ 259,
+ 260,
+ 261,
+ 262,
+ 265,
+ 266,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Leslie[] =
+{
+ 170,
+ 176,
+ 178,
+ 182,
+ 189,
+ 190,
+ 192,
+ 196,
+ 211,
+ 212,
+ 213,
+ 219,
+ 228,
+ 230,
+ 232,
+ 233,
+ 234,
+ 236,
+ 242,
+ 245,
+ 249,
+ 253,
+ 256,
+ 257,
+ 258,
+ 259,
+ 260,
+ 261,
+ 262,
+ 265,
+ 266,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dave[] =
+{
+ 162,
+ 164,
+ 168,
+ 178,
+ 183,
+ 186,
+ 187,
+ 189,
+ 197,
+ 199,
+ 200,
+ 203,
+ 204,
+ 206,
+ 207,
+ 214,
+ 215,
+ 218,
+ 220,
+ 221,
+ 224,
+ 227,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 244,
+ 246,
+ 250,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Carlo[] =
+{
+ 162,
+ 164,
+ 168,
+ 178,
+ 183,
+ 186,
+ 187,
+ 189,
+ 197,
+ 199,
+ 200,
+ 203,
+ 204,
+ 206,
+ 207,
+ 214,
+ 215,
+ 218,
+ 220,
+ 221,
+ 224,
+ 227,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 244,
+ 246,
+ 250,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Emilia[] =
+{
+ 162,
+ 164,
+ 168,
+ 178,
+ 183,
+ 186,
+ 187,
+ 189,
+ 197,
+ 199,
+ 200,
+ 203,
+ 204,
+ 206,
+ 207,
+ 214,
+ 215,
+ 218,
+ 220,
+ 221,
+ 224,
+ 227,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 244,
+ 246,
+ 250,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dalia[] =
+{
+ 162,
+ 164,
+ 168,
+ 178,
+ 183,
+ 186,
+ 187,
+ 189,
+ 197,
+ 199,
+ 200,
+ 203,
+ 204,
+ 206,
+ 207,
+ 214,
+ 215,
+ 218,
+ 220,
+ 221,
+ 224,
+ 227,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 244,
+ 246,
+ 250,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Hitomi[] =
+{
+ 164,
+ 166,
+ 175,
+ 178,
+ 181,
+ 189,
+ 191,
+ 193,
+ 194,
+ 195,
+ 197,
+ 199,
+ 200,
+ 202,
+ 203,
+ 205,
+ 206,
+ 207,
+ 210,
+ 215,
+ 218,
+ 220,
+ 221,
+ 222,
+ 223,
+ 225,
+ 227,
+ 230,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 241,
+ 246,
+ 247,
+ 252,
+ 254,
+ 262,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ricardo[] =
+{
+ 164,
+ 166,
+ 175,
+ 178,
+ 181,
+ 189,
+ 191,
+ 193,
+ 194,
+ 195,
+ 197,
+ 199,
+ 200,
+ 202,
+ 203,
+ 205,
+ 206,
+ 207,
+ 210,
+ 215,
+ 218,
+ 220,
+ 221,
+ 222,
+ 223,
+ 225,
+ 227,
+ 230,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 241,
+ 246,
+ 247,
+ 252,
+ 254,
+ 262,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Shizuka[] =
+{
+ 164,
+ 166,
+ 175,
+ 178,
+ 181,
+ 189,
+ 191,
+ 193,
+ 194,
+ 195,
+ 197,
+ 199,
+ 200,
+ 202,
+ 203,
+ 205,
+ 206,
+ 207,
+ 210,
+ 215,
+ 218,
+ 220,
+ 221,
+ 222,
+ 223,
+ 225,
+ 227,
+ 230,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 241,
+ 246,
+ 247,
+ 252,
+ 254,
+ 262,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Joana[] =
+{
+ 164,
+ 166,
+ 175,
+ 178,
+ 181,
+ 189,
+ 191,
+ 193,
+ 194,
+ 195,
+ 197,
+ 199,
+ 200,
+ 202,
+ 203,
+ 205,
+ 206,
+ 207,
+ 210,
+ 215,
+ 218,
+ 220,
+ 221,
+ 222,
+ 223,
+ 225,
+ 227,
+ 230,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 241,
+ 246,
+ 247,
+ 252,
+ 254,
+ 262,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kelly[] =
+{
+ 164,
+ 166,
+ 175,
+ 178,
+ 181,
+ 189,
+ 191,
+ 193,
+ 194,
+ 195,
+ 197,
+ 199,
+ 200,
+ 202,
+ 203,
+ 205,
+ 206,
+ 207,
+ 210,
+ 215,
+ 218,
+ 220,
+ 221,
+ 222,
+ 223,
+ 225,
+ 227,
+ 230,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 241,
+ 246,
+ 247,
+ 252,
+ 254,
+ 262,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Rayna[] =
+{
+ 164,
+ 166,
+ 175,
+ 178,
+ 181,
+ 189,
+ 191,
+ 193,
+ 194,
+ 195,
+ 197,
+ 199,
+ 200,
+ 202,
+ 203,
+ 205,
+ 206,
+ 207,
+ 210,
+ 215,
+ 218,
+ 220,
+ 221,
+ 222,
+ 223,
+ 225,
+ 227,
+ 230,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 240,
+ 241,
+ 246,
+ 247,
+ 252,
+ 254,
+ 262,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Evan[] =
+{
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 174,
+ 175,
+ 176,
+ 177,
+ 178,
+ 179,
+ 180,
+ 181,
+ 182,
+ 183,
+ 184,
+ 185,
+ 186,
+ 187,
+ 188,
+ 189,
+ 190,
+ 191,
+ 192,
+ 193,
+ 194,
+ 195,
+ 196,
+ 197,
+ 198,
+ 199,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jordan[] =
+{
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 210,
+ 211,
+ 212,
+ 213,
+ 214,
+ 215,
+ 216,
+ 217,
+ 218,
+ 219,
+ 220,
+ 221,
+ 222,
+ 223,
+ 224,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229,
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Joel[] =
+{
+ 237,
+ 238,
+ 239,
+ 240,
+ 241,
+ 242,
+ 243,
+ 244,
+ 245,
+ 246,
+ 247,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252,
+ 253,
+ 254,
+ 255,
+ 256,
+ 257,
+ 258,
+ 259,
+ 260,
+ 261,
+ 262,
+ 263,
+ 264,
+ 265,
+ 266,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kristen[] =
+{
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 174,
+ 175,
+ 176,
+ 177,
+ 178,
+ 179,
+ 180,
+ 181,
+ 182,
+ 183,
+ 184,
+ 185,
+ 186,
+ 187,
+ 188,
+ 189,
+ 190,
+ 191,
+ 192,
+ 193,
+ 194,
+ 195,
+ 196,
+ 197,
+ 198,
+ 199,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Selphy[] =
+{
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 210,
+ 211,
+ 212,
+ 213,
+ 214,
+ 215,
+ 216,
+ 217,
+ 218,
+ 219,
+ 220,
+ 221,
+ 222,
+ 223,
+ 224,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229,
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Chloe[] =
+{
+ 237,
+ 238,
+ 239,
+ 240,
+ 241,
+ 242,
+ 243,
+ 244,
+ 245,
+ 246,
+ 247,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252,
+ 253,
+ 254,
+ 255,
+ 256,
+ 257,
+ 258,
+ 259,
+ 260,
+ 261,
+ 262,
+ 263,
+ 264,
+ 265,
+ 266,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Norton[] =
+{
+ 267,
+ 268,
+ 273,
+ 274,
+ 276,
+ 284,
+ 289,
+ 290,
+ 291,
+ 292,
+ 307,
+ 308,
+ 311,
+ 312,
+ 314,
+ 317,
+ 325,
+ 327,
+ 328,
+ 329,
+ 331,
+ 332,
+ 340,
+ 342,
+ 347,
+ 349,
+ 351,
+ 352,
+ 354,
+ 356,
+ 359,
+ 363,
+ 370,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Lukas[] =
+{
+ 267,
+ 268,
+ 273,
+ 274,
+ 276,
+ 284,
+ 289,
+ 290,
+ 291,
+ 292,
+ 307,
+ 308,
+ 311,
+ 312,
+ 314,
+ 317,
+ 325,
+ 327,
+ 328,
+ 329,
+ 331,
+ 332,
+ 340,
+ 342,
+ 347,
+ 349,
+ 351,
+ 352,
+ 354,
+ 356,
+ 359,
+ 363,
+ 370,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Zach[] =
+{
+ 267,
+ 268,
+ 273,
+ 274,
+ 276,
+ 284,
+ 289,
+ 290,
+ 291,
+ 292,
+ 307,
+ 308,
+ 311,
+ 312,
+ 314,
+ 317,
+ 325,
+ 327,
+ 328,
+ 329,
+ 331,
+ 332,
+ 340,
+ 342,
+ 347,
+ 349,
+ 351,
+ 352,
+ 354,
+ 356,
+ 359,
+ 363,
+ 370,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kaitlyn[] =
+{
+ 267,
+ 268,
+ 273,
+ 274,
+ 276,
+ 284,
+ 289,
+ 290,
+ 291,
+ 292,
+ 307,
+ 308,
+ 311,
+ 312,
+ 314,
+ 317,
+ 325,
+ 327,
+ 328,
+ 329,
+ 331,
+ 332,
+ 340,
+ 342,
+ 347,
+ 349,
+ 351,
+ 352,
+ 354,
+ 356,
+ 359,
+ 363,
+ 370,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Breanna[] =
+{
+ 267,
+ 268,
+ 273,
+ 274,
+ 276,
+ 284,
+ 289,
+ 290,
+ 291,
+ 292,
+ 307,
+ 308,
+ 311,
+ 312,
+ 314,
+ 317,
+ 325,
+ 327,
+ 328,
+ 329,
+ 331,
+ 332,
+ 340,
+ 342,
+ 347,
+ 349,
+ 351,
+ 352,
+ 354,
+ 356,
+ 359,
+ 363,
+ 370,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kendra[] =
+{
+ 267,
+ 268,
+ 273,
+ 274,
+ 276,
+ 284,
+ 289,
+ 290,
+ 291,
+ 292,
+ 307,
+ 308,
+ 311,
+ 312,
+ 314,
+ 317,
+ 325,
+ 327,
+ 328,
+ 329,
+ 331,
+ 332,
+ 340,
+ 342,
+ 347,
+ 349,
+ 351,
+ 352,
+ 354,
+ 356,
+ 359,
+ 363,
+ 370,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Molly[] =
+{
+ 268,
+ 270,
+ 272,
+ 274,
+ 282,
+ 284,
+ 289,
+ 290,
+ 303,
+ 307,
+ 311,
+ 314,
+ 317,
+ 322,
+ 327,
+ 328,
+ 331,
+ 336,
+ 340,
+ 342,
+ 344,
+ 347,
+ 352,
+ 353,
+ 354,
+ 356,
+ 359,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jazmin[] =
+{
+ 268,
+ 270,
+ 272,
+ 274,
+ 282,
+ 284,
+ 289,
+ 290,
+ 303,
+ 307,
+ 311,
+ 314,
+ 317,
+ 322,
+ 327,
+ 328,
+ 331,
+ 336,
+ 340,
+ 342,
+ 344,
+ 347,
+ 352,
+ 353,
+ 354,
+ 356,
+ 359,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kelsey[] =
+{
+ 268,
+ 270,
+ 272,
+ 274,
+ 282,
+ 284,
+ 289,
+ 290,
+ 303,
+ 307,
+ 311,
+ 314,
+ 317,
+ 322,
+ 327,
+ 328,
+ 331,
+ 336,
+ 340,
+ 342,
+ 344,
+ 347,
+ 352,
+ 353,
+ 354,
+ 356,
+ 359,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jalen[] =
+{
+ 269,
+ 271,
+ 275,
+ 279,
+ 280,
+ 281,
+ 283,
+ 285,
+ 286,
+ 287,
+ 293,
+ 294,
+ 295,
+ 300,
+ 302,
+ 307,
+ 310,
+ 311,
+ 320,
+ 322,
+ 326,
+ 330,
+ 332,
+ 335,
+ 344,
+ 345,
+ 346,
+ 348,
+ 350,
+ 353,
+ 357,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Griffen[] =
+{
+ 269,
+ 271,
+ 275,
+ 279,
+ 280,
+ 281,
+ 283,
+ 285,
+ 286,
+ 287,
+ 293,
+ 294,
+ 295,
+ 300,
+ 302,
+ 307,
+ 310,
+ 311,
+ 320,
+ 322,
+ 326,
+ 330,
+ 332,
+ 335,
+ 344,
+ 345,
+ 346,
+ 348,
+ 350,
+ 353,
+ 357,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Xander[] =
+{
+ 269,
+ 271,
+ 275,
+ 279,
+ 280,
+ 281,
+ 283,
+ 285,
+ 286,
+ 287,
+ 293,
+ 294,
+ 295,
+ 300,
+ 302,
+ 307,
+ 310,
+ 311,
+ 320,
+ 322,
+ 326,
+ 330,
+ 332,
+ 335,
+ 344,
+ 345,
+ 346,
+ 348,
+ 350,
+ 353,
+ 357,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Marvin[] =
+{
+ 267,
+ 268,
+ 269,
+ 270,
+ 271,
+ 272,
+ 273,
+ 274,
+ 275,
+ 276,
+ 277,
+ 278,
+ 279,
+ 280,
+ 281,
+ 282,
+ 283,
+ 284,
+ 285,
+ 286,
+ 287,
+ 288,
+ 289,
+ 290,
+ 291,
+ 292,
+ 293,
+ 294,
+ 295,
+ 296,
+ 297,
+ 298,
+ 299,
+ 300,
+ 301,
+ 302,
+ 303,
+ 304,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Brennan[] =
+{
+ 305,
+ 306,
+ 307,
+ 308,
+ 309,
+ 310,
+ 311,
+ 312,
+ 313,
+ 314,
+ 315,
+ 316,
+ 317,
+ 318,
+ 319,
+ 320,
+ 321,
+ 322,
+ 323,
+ 324,
+ 325,
+ 326,
+ 327,
+ 328,
+ 329,
+ 330,
+ 331,
+ 332,
+ 333,
+ 334,
+ 335,
+ 336,
+ 337,
+ 338,
+ 339,
+ 340,
+ 341,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Baley[] =
+{
+ 159,
+ 160,
+ 161,
+ 172,
+ 173,
+ 177,
+ 198,
+ 226,
+ 238,
+ 263,
+ 264,
+ 277,
+ 278,
+ 282,
+ 303,
+ 331,
+ 343,
+ 368,
+ 369,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Zackary[] =
+{
+ 271,
+ 283,
+ 294,
+ 295,
+ 298,
+ 299,
+ 300,
+ 311,
+ 315,
+ 320,
+ 327,
+ 328,
+ 330,
+ 335,
+ 337,
+ 338,
+ 339,
+ 341,
+ 346,
+ 364,
+ 365,
+ 366,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gabriel[] =
+{
+ 342,
+ 343,
+ 344,
+ 345,
+ 346,
+ 347,
+ 348,
+ 349,
+ 350,
+ 351,
+ 352,
+ 353,
+ 354,
+ 355,
+ 356,
+ 357,
+ 358,
+ 359,
+ 360,
+ 361,
+ 362,
+ 363,
+ 364,
+ 365,
+ 366,
+ 367,
+ 368,
+ 369,
+ 370,
+ 371,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Emily[] =
+{
+ 272,
+ 301,
+ 309,
+ 330,
+ 348,
+ 349,
+ 350,
+ 359,
+ 360,
+ 362,
+ 363,
+ 365,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jordyn[] =
+{
+ 267,
+ 269,
+ 270,
+ 272,
+ 273,
+ 276,
+ 279,
+ 284,
+ 288,
+ 302,
+ 304,
+ 305,
+ 308,
+ 309,
+ 312,
+ 316,
+ 319,
+ 322,
+ 323,
+ 325,
+ 326,
+ 329,
+ 331,
+ 332,
+ 336,
+ 340,
+ 344,
+ 345,
+ 351,
+ 353,
+ 355,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Sofia[] =
+{
+ 270,
+ 272,
+ 274,
+ 276,
+ 279,
+ 282,
+ 285,
+ 290,
+ 293,
+ 313,
+ 314,
+ 321,
+ 334,
+ 340,
+ 348,
+ 356,
+ 359,
+ 360,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Braden[] =
+{
+ 372,
+ 373,
+ 374,
+ 375,
+ 376,
+ 377,
+ 378,
+ 379,
+ 380,
+ 381,
+ 382,
+ 383,
+ 384,
+ 385,
+ 386,
+ 387,
+ 388,
+ 389,
+ 390,
+ 391,
+ 392,
+ 393,
+ 394,
+ 395,
+ 396,
+ 397,
+ 398,
+ 399,
+ 400,
+ 401,
+ 402,
+ 403,
+ 404,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kayden[] =
+{
+ 405,
+ 406,
+ 407,
+ 408,
+ 409,
+ 410,
+ 411,
+ 412,
+ 413,
+ 414,
+ 415,
+ 416,
+ 417,
+ 418,
+ 419,
+ 420,
+ 421,
+ 422,
+ 423,
+ 424,
+ 425,
+ 426,
+ 427,
+ 428,
+ 429,
+ 430,
+ 431,
+ 432,
+ 433,
+ 434,
+ 435,
+ 436,
+ 437,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Cooper[] =
+{
+ 438,
+ 439,
+ 440,
+ 441,
+ 442,
+ 443,
+ 444,
+ 445,
+ 446,
+ 447,
+ 448,
+ 449,
+ 450,
+ 451,
+ 452,
+ 453,
+ 454,
+ 455,
+ 456,
+ 457,
+ 458,
+ 459,
+ 460,
+ 461,
+ 462,
+ 463,
+ 464,
+ 465,
+ 466,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Julia[] =
+{
+ 372,
+ 373,
+ 374,
+ 375,
+ 376,
+ 377,
+ 378,
+ 379,
+ 380,
+ 381,
+ 382,
+ 383,
+ 384,
+ 385,
+ 386,
+ 387,
+ 388,
+ 389,
+ 390,
+ 391,
+ 392,
+ 393,
+ 394,
+ 395,
+ 396,
+ 397,
+ 398,
+ 399,
+ 400,
+ 401,
+ 402,
+ 403,
+ 404,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Amara[] =
+{
+ 405,
+ 406,
+ 407,
+ 408,
+ 409,
+ 410,
+ 411,
+ 412,
+ 413,
+ 414,
+ 415,
+ 416,
+ 417,
+ 418,
+ 419,
+ 420,
+ 421,
+ 422,
+ 423,
+ 424,
+ 425,
+ 426,
+ 427,
+ 428,
+ 429,
+ 430,
+ 431,
+ 432,
+ 433,
+ 434,
+ 435,
+ 436,
+ 437,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Lynn[] =
+{
+ 438,
+ 439,
+ 440,
+ 441,
+ 442,
+ 443,
+ 444,
+ 445,
+ 446,
+ 447,
+ 448,
+ 449,
+ 450,
+ 451,
+ 452,
+ 453,
+ 454,
+ 455,
+ 456,
+ 457,
+ 458,
+ 459,
+ 460,
+ 461,
+ 462,
+ 463,
+ 464,
+ 465,
+ 466,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jovan[] =
+{
+ 238,
+ 331,
+ 343,
+ 368,
+ 369,
+ 375,
+ 376,
+ 379,
+ 382,
+ 383,
+ 389,
+ 394,
+ 395,
+ 397,
+ 398,
+ 400,
+ 406,
+ 408,
+ 411,
+ 416,
+ 417,
+ 423,
+ 424,
+ 425,
+ 432,
+ 436,
+ 438,
+ 441,
+ 445,
+ 453,
+ 460,
+ 462,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dominic[] =
+{
+ 238,
+ 331,
+ 343,
+ 368,
+ 369,
+ 375,
+ 376,
+ 379,
+ 382,
+ 383,
+ 389,
+ 394,
+ 395,
+ 397,
+ 398,
+ 400,
+ 406,
+ 408,
+ 411,
+ 416,
+ 417,
+ 423,
+ 424,
+ 425,
+ 432,
+ 436,
+ 438,
+ 441,
+ 445,
+ 453,
+ 460,
+ 462,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Nikolas[] =
+{
+ 238,
+ 331,
+ 343,
+ 368,
+ 369,
+ 375,
+ 376,
+ 379,
+ 382,
+ 383,
+ 389,
+ 394,
+ 395,
+ 397,
+ 398,
+ 400,
+ 406,
+ 408,
+ 411,
+ 416,
+ 417,
+ 423,
+ 424,
+ 425,
+ 432,
+ 436,
+ 438,
+ 441,
+ 445,
+ 453,
+ 460,
+ 462,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Valeria[] =
+{
+ 238,
+ 331,
+ 343,
+ 368,
+ 369,
+ 375,
+ 376,
+ 379,
+ 382,
+ 383,
+ 389,
+ 394,
+ 395,
+ 397,
+ 398,
+ 400,
+ 406,
+ 408,
+ 411,
+ 416,
+ 417,
+ 423,
+ 424,
+ 425,
+ 432,
+ 436,
+ 438,
+ 441,
+ 445,
+ 453,
+ 460,
+ 462,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Delaney[] =
+{
+ 238,
+ 331,
+ 343,
+ 368,
+ 369,
+ 375,
+ 376,
+ 379,
+ 382,
+ 383,
+ 389,
+ 394,
+ 395,
+ 397,
+ 398,
+ 400,
+ 406,
+ 408,
+ 411,
+ 416,
+ 417,
+ 423,
+ 424,
+ 425,
+ 432,
+ 436,
+ 438,
+ 441,
+ 445,
+ 453,
+ 460,
+ 462,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Meghan[] =
+{
+ 238,
+ 331,
+ 343,
+ 368,
+ 369,
+ 375,
+ 376,
+ 379,
+ 382,
+ 383,
+ 389,
+ 394,
+ 395,
+ 397,
+ 398,
+ 400,
+ 406,
+ 408,
+ 411,
+ 416,
+ 417,
+ 423,
+ 424,
+ 425,
+ 432,
+ 436,
+ 438,
+ 441,
+ 445,
+ 453,
+ 460,
+ 462,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Roberto[] =
+{
+ 386,
+ 403,
+ 412,
+ 413,
+ 414,
+ 433,
+ 435,
+ 440,
+ 450,
+ 453,
+ 454,
+ 456,
+ 459,
+ 461,
+ 463,
+ 464,
+ 465,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Damian[] =
+{
+ 386,
+ 403,
+ 412,
+ 413,
+ 414,
+ 433,
+ 435,
+ 440,
+ 450,
+ 453,
+ 454,
+ 456,
+ 459,
+ 461,
+ 463,
+ 464,
+ 465,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Brody[] =
+{
+ 386,
+ 403,
+ 412,
+ 413,
+ 414,
+ 433,
+ 435,
+ 440,
+ 450,
+ 453,
+ 454,
+ 456,
+ 459,
+ 461,
+ 463,
+ 464,
+ 465,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Graham[] =
+{
+ 386,
+ 403,
+ 412,
+ 413,
+ 414,
+ 433,
+ 435,
+ 440,
+ 450,
+ 453,
+ 454,
+ 456,
+ 459,
+ 461,
+ 463,
+ 464,
+ 465,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Tylor[] =
+{
+ 374,
+ 381,
+ 382,
+ 385,
+ 388,
+ 389,
+ 391,
+ 392,
+ 394,
+ 409,
+ 411,
+ 412,
+ 419,
+ 430,
+ 432,
+ 436,
+ 440,
+ 456,
+ 460,
+ 462,
+ 463,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jaren[] =
+{
+ 374,
+ 381,
+ 382,
+ 385,
+ 388,
+ 389,
+ 391,
+ 392,
+ 394,
+ 409,
+ 411,
+ 412,
+ 419,
+ 430,
+ 432,
+ 436,
+ 440,
+ 456,
+ 460,
+ 462,
+ 463,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Cordell[] =
+{
+ 420,
+ 421,
+ 422,
+ 423,
+ 424,
+ 425,
+ 426,
+ 427,
+ 428,
+ 429,
+ 430,
+ 431,
+ 432,
+ 433,
+ 434,
+ 435,
+ 436,
+ 437,
+ 438,
+ 439,
+ 440,
+ 441,
+ 442,
+ 443,
+ 444,
+ 445,
+ 446,
+ 447,
+ 448,
+ 449,
+ 450,
+ 451,
+ 452,
+ 453,
+ 454,
+ 455,
+ 456,
+ 457,
+ 458,
+ 459,
+ 460,
+ 461,
+ 462,
+ 463,
+ 464,
+ 465,
+ 466,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jazlyn[] =
+{
+ 372,
+ 373,
+ 374,
+ 375,
+ 376,
+ 377,
+ 378,
+ 379,
+ 380,
+ 381,
+ 382,
+ 383,
+ 384,
+ 385,
+ 386,
+ 387,
+ 388,
+ 389,
+ 390,
+ 391,
+ 392,
+ 393,
+ 394,
+ 395,
+ 396,
+ 397,
+ 398,
+ 399,
+ 400,
+ 401,
+ 402,
+ 403,
+ 404,
+ 405,
+ 406,
+ 407,
+ 408,
+ 409,
+ 410,
+ 411,
+ 412,
+ 413,
+ 414,
+ 415,
+ 416,
+ 417,
+ 418,
+ 419,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Zachery[] =
+{
+ 468,
+ 469,
+ 470,
+ 471,
+ 472,
+ 473,
+ 474,
+ 475,
+ 476,
+ 477,
+ 478,
+ 479,
+ 480,
+ 481,
+ 482,
+ 483,
+ 484,
+ 485,
+ 486,
+ 487,
+ 488,
+ 489,
+ 490,
+ 491,
+ 492,
+ 493,
+ 494,
+ 495,
+ 496,
+ 497,
+ 498,
+ 499,
+ 500,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Johan[] =
+{
+ 469,
+ 470,
+ 471,
+ 472,
+ 473,
+ 474,
+ 475,
+ 476,
+ 477,
+ 478,
+ 479,
+ 480,
+ 481,
+ 482,
+ 483,
+ 484,
+ 485,
+ 486,
+ 487,
+ 488,
+ 489,
+ 490,
+ 491,
+ 492,
+ 493,
+ 494,
+ 495,
+ 496,
+ 497,
+ 498,
+ 499,
+ 500,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Shea[] =
+{
+ 468,
+ 469,
+ 470,
+ 471,
+ 472,
+ 473,
+ 474,
+ 475,
+ 476,
+ 477,
+ 478,
+ 479,
+ 480,
+ 481,
+ 482,
+ 483,
+ 484,
+ 485,
+ 486,
+ 487,
+ 488,
+ 489,
+ 490,
+ 491,
+ 492,
+ 493,
+ 494,
+ 495,
+ 496,
+ 497,
+ 498,
+ 499,
+ 500,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kaila[] =
+{
+ 468,
+ 469,
+ 470,
+ 471,
+ 472,
+ 473,
+ 474,
+ 475,
+ 476,
+ 477,
+ 478,
+ 479,
+ 480,
+ 481,
+ 482,
+ 483,
+ 484,
+ 485,
+ 486,
+ 487,
+ 488,
+ 489,
+ 490,
+ 491,
+ 492,
+ 493,
+ 494,
+ 495,
+ 496,
+ 497,
+ 498,
+ 499,
+ 500,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Isiah[] =
+{
+ 501,
+ 502,
+ 503,
+ 504,
+ 505,
+ 506,
+ 507,
+ 508,
+ 509,
+ 510,
+ 511,
+ 512,
+ 513,
+ 514,
+ 515,
+ 516,
+ 517,
+ 518,
+ 519,
+ 520,
+ 521,
+ 522,
+ 523,
+ 524,
+ 525,
+ 526,
+ 527,
+ 528,
+ 529,
+ 530,
+ 531,
+ 532,
+ 533,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Garrett[] =
+{
+ 501,
+ 502,
+ 503,
+ 504,
+ 505,
+ 506,
+ 507,
+ 508,
+ 509,
+ 510,
+ 511,
+ 512,
+ 513,
+ 514,
+ 515,
+ 516,
+ 517,
+ 518,
+ 519,
+ 520,
+ 521,
+ 522,
+ 523,
+ 524,
+ 525,
+ 526,
+ 527,
+ 528,
+ 529,
+ 530,
+ 531,
+ 532,
+ 533,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Haylie[] =
+{
+ 501,
+ 502,
+ 503,
+ 504,
+ 505,
+ 506,
+ 507,
+ 508,
+ 509,
+ 510,
+ 511,
+ 512,
+ 513,
+ 514,
+ 515,
+ 516,
+ 517,
+ 518,
+ 519,
+ 520,
+ 521,
+ 522,
+ 523,
+ 524,
+ 525,
+ 526,
+ 527,
+ 528,
+ 529,
+ 530,
+ 531,
+ 532,
+ 533,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Megan[] =
+{
+ 501,
+ 502,
+ 503,
+ 504,
+ 505,
+ 506,
+ 507,
+ 508,
+ 509,
+ 510,
+ 511,
+ 512,
+ 513,
+ 514,
+ 515,
+ 516,
+ 517,
+ 518,
+ 519,
+ 520,
+ 521,
+ 522,
+ 523,
+ 524,
+ 525,
+ 526,
+ 527,
+ 528,
+ 529,
+ 530,
+ 531,
+ 532,
+ 533,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Issac[] =
+{
+ 534,
+ 535,
+ 536,
+ 537,
+ 538,
+ 539,
+ 540,
+ 541,
+ 542,
+ 543,
+ 544,
+ 545,
+ 546,
+ 547,
+ 548,
+ 549,
+ 550,
+ 551,
+ 552,
+ 553,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 560,
+ 561,
+ 562,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Quinton[] =
+{
+ 534,
+ 535,
+ 536,
+ 537,
+ 538,
+ 539,
+ 540,
+ 541,
+ 542,
+ 543,
+ 544,
+ 545,
+ 546,
+ 547,
+ 548,
+ 549,
+ 550,
+ 551,
+ 552,
+ 553,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 560,
+ 561,
+ 562,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Salma[] =
+{
+ 534,
+ 535,
+ 536,
+ 537,
+ 538,
+ 539,
+ 540,
+ 541,
+ 542,
+ 543,
+ 544,
+ 545,
+ 546,
+ 547,
+ 548,
+ 549,
+ 550,
+ 551,
+ 552,
+ 553,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 560,
+ 561,
+ 562,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ansley[] =
+{
+ 534,
+ 535,
+ 536,
+ 537,
+ 538,
+ 539,
+ 540,
+ 541,
+ 542,
+ 543,
+ 544,
+ 545,
+ 546,
+ 547,
+ 548,
+ 549,
+ 550,
+ 551,
+ 552,
+ 553,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 560,
+ 561,
+ 562,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Holden[] =
+{
+ 343,
+ 368,
+ 369,
+ 383,
+ 417,
+ 423,
+ 424,
+ 432,
+ 480,
+ 481,
+ 490,
+ 491,
+ 494,
+ 496,
+ 512,
+ 513,
+ 519,
+ 520,
+ 528,
+ 534,
+ 537,
+ 541,
+ 549,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Luca[] =
+{
+ 343,
+ 368,
+ 369,
+ 383,
+ 417,
+ 423,
+ 424,
+ 432,
+ 480,
+ 481,
+ 490,
+ 491,
+ 494,
+ 496,
+ 512,
+ 513,
+ 519,
+ 520,
+ 528,
+ 534,
+ 537,
+ 541,
+ 549,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jamison[] =
+{
+ 282,
+ 331,
+ 343,
+ 368,
+ 369,
+ 469,
+ 472,
+ 475,
+ 476,
+ 478,
+ 481,
+ 484,
+ 490,
+ 491,
+ 497,
+ 500,
+ 501,
+ 509,
+ 510,
+ 513,
+ 516,
+ 517,
+ 519,
+ 520,
+ 524,
+ 528,
+ 530,
+ 533,
+ 534,
+ 537,
+ 542,
+ 553,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gunnar[] =
+{
+ 282,
+ 331,
+ 343,
+ 368,
+ 369,
+ 469,
+ 472,
+ 475,
+ 476,
+ 478,
+ 481,
+ 484,
+ 490,
+ 491,
+ 497,
+ 500,
+ 501,
+ 509,
+ 510,
+ 513,
+ 516,
+ 517,
+ 519,
+ 520,
+ 524,
+ 528,
+ 530,
+ 533,
+ 534,
+ 537,
+ 542,
+ 553,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Craig[] =
+{
+ 471,
+ 474,
+ 475,
+ 479,
+ 483,
+ 485,
+ 488,
+ 493,
+ 495,
+ 496,
+ 502,
+ 504,
+ 505,
+ 506,
+ 507,
+ 514,
+ 521,
+ 525,
+ 530,
+ 532,
+ 535,
+ 538,
+ 544,
+ 545,
+ 548,
+ 552,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Pierce[] =
+{
+ 471,
+ 474,
+ 475,
+ 479,
+ 483,
+ 485,
+ 488,
+ 493,
+ 495,
+ 496,
+ 502,
+ 504,
+ 505,
+ 506,
+ 507,
+ 514,
+ 521,
+ 525,
+ 530,
+ 532,
+ 535,
+ 538,
+ 544,
+ 545,
+ 548,
+ 552,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Regina[] =
+{
+ 471,
+ 474,
+ 475,
+ 479,
+ 483,
+ 485,
+ 488,
+ 493,
+ 495,
+ 496,
+ 502,
+ 504,
+ 505,
+ 506,
+ 507,
+ 514,
+ 521,
+ 525,
+ 530,
+ 532,
+ 535,
+ 538,
+ 544,
+ 545,
+ 548,
+ 552,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Alison[] =
+{
+ 471,
+ 474,
+ 475,
+ 479,
+ 483,
+ 485,
+ 488,
+ 493,
+ 495,
+ 496,
+ 502,
+ 504,
+ 505,
+ 506,
+ 507,
+ 514,
+ 521,
+ 525,
+ 530,
+ 532,
+ 535,
+ 538,
+ 544,
+ 545,
+ 548,
+ 552,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Hank[] =
+{
+ 277,
+ 278,
+ 282,
+ 303,
+ 331,
+ 343,
+ 368,
+ 369,
+ 383,
+ 417,
+ 423,
+ 424,
+ 432,
+ 481,
+ 513,
+ 519,
+ 520,
+ 528,
+ 575,
+ 609,
+ 615,
+ 616,
+ 624,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Earl[] =
+{
+ 277,
+ 278,
+ 282,
+ 303,
+ 331,
+ 343,
+ 368,
+ 369,
+ 383,
+ 417,
+ 423,
+ 424,
+ 432,
+ 481,
+ 513,
+ 519,
+ 520,
+ 528,
+ 575,
+ 609,
+ 615,
+ 616,
+ 624,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ramiro[] =
+{
+ 316,
+ 333,
+ 347,
+ 350,
+ 354,
+ 358,
+ 361,
+ 362,
+ 363,
+ 364,
+ 573,
+ 576,
+ 621,
+ 626,
+ 631,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Hunter[] =
+{
+ 316,
+ 333,
+ 347,
+ 350,
+ 354,
+ 358,
+ 361,
+ 362,
+ 363,
+ 364,
+ 573,
+ 576,
+ 621,
+ 626,
+ 631,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Aiden[] =
+{
+ 564,
+ 575,
+ 576,
+ 578,
+ 579,
+ 580,
+ 594,
+ 595,
+ 605,
+ 606,
+ 608,
+ 609,
+ 615,
+ 619,
+ 620,
+ 624,
+ 625,
+ 627,
+ 632,
+ 642,
+ 650,
+ 658,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Xavier[] =
+{
+ 564,
+ 575,
+ 576,
+ 578,
+ 579,
+ 580,
+ 594,
+ 595,
+ 605,
+ 606,
+ 608,
+ 609,
+ 615,
+ 619,
+ 620,
+ 624,
+ 625,
+ 627,
+ 632,
+ 642,
+ 650,
+ 658,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Clinton[] =
+{
+ 564,
+ 565,
+ 566,
+ 567,
+ 568,
+ 569,
+ 570,
+ 571,
+ 572,
+ 573,
+ 574,
+ 575,
+ 576,
+ 577,
+ 578,
+ 579,
+ 580,
+ 581,
+ 582,
+ 583,
+ 584,
+ 585,
+ 586,
+ 587,
+ 588,
+ 589,
+ 590,
+ 591,
+ 592,
+ 593,
+ 594,
+ 595,
+ 596,
+ 597,
+ 598,
+ 599,
+ 600,
+ 601,
+ 602,
+ 603,
+ 604,
+ 605,
+ 606,
+ 607,
+ 608,
+ 609,
+ 610,
+ 611,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jesse[] =
+{
+ 564,
+ 565,
+ 566,
+ 567,
+ 568,
+ 569,
+ 570,
+ 571,
+ 572,
+ 573,
+ 574,
+ 575,
+ 576,
+ 577,
+ 578,
+ 579,
+ 580,
+ 581,
+ 582,
+ 583,
+ 584,
+ 585,
+ 586,
+ 587,
+ 588,
+ 589,
+ 590,
+ 591,
+ 592,
+ 593,
+ 594,
+ 595,
+ 596,
+ 597,
+ 598,
+ 599,
+ 600,
+ 601,
+ 602,
+ 603,
+ 604,
+ 605,
+ 606,
+ 607,
+ 608,
+ 609,
+ 610,
+ 611,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Eduardo[] =
+{
+ 268,
+ 307,
+ 317,
+ 349,
+ 352,
+ 573,
+ 583,
+ 585,
+ 588,
+ 590,
+ 599,
+ 614,
+ 618,
+ 635,
+ 639,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Hal[] =
+{
+ 268,
+ 307,
+ 317,
+ 349,
+ 352,
+ 573,
+ 583,
+ 585,
+ 588,
+ 590,
+ 599,
+ 614,
+ 618,
+ 635,
+ 639,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gage[] =
+{
+ 289,
+ 318,
+ 319,
+ 329,
+ 355,
+ 375,
+ 379,
+ 385,
+ 386,
+ 457,
+ 473,
+ 477,
+ 482,
+ 484,
+ 553,
+ 567,
+ 571,
+ 577,
+ 578,
+ 649,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Arnold[] =
+{
+ 289,
+ 318,
+ 319,
+ 329,
+ 355,
+ 375,
+ 379,
+ 385,
+ 386,
+ 457,
+ 473,
+ 477,
+ 482,
+ 484,
+ 553,
+ 567,
+ 571,
+ 577,
+ 578,
+ 649,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jarrett[] =
+{
+ 565,
+ 573,
+ 576,
+ 580,
+ 582,
+ 584,
+ 592,
+ 601,
+ 602,
+ 610,
+ 621,
+ 623,
+ 626,
+ 631,
+ 634,
+ 640,
+ 641,
+ 644,
+ 648,
+ 650,
+ 651,
+ 653,
+ 655,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Garett[] =
+{
+ 565,
+ 573,
+ 576,
+ 580,
+ 582,
+ 584,
+ 592,
+ 601,
+ 602,
+ 610,
+ 621,
+ 623,
+ 626,
+ 631,
+ 634,
+ 640,
+ 641,
+ 644,
+ 648,
+ 650,
+ 651,
+ 653,
+ 655,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Emanuel[] =
+{
+ 564,
+ 565,
+ 574,
+ 579,
+ 582,
+ 594,
+ 595,
+ 605,
+ 606,
+ 608,
+ 609,
+ 616,
+ 619,
+ 620,
+ 623,
+ 624,
+ 625,
+ 627,
+ 642,
+ 643,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gustavo[] =
+{
+ 564,
+ 565,
+ 574,
+ 579,
+ 582,
+ 594,
+ 595,
+ 605,
+ 606,
+ 608,
+ 609,
+ 616,
+ 619,
+ 620,
+ 623,
+ 624,
+ 625,
+ 627,
+ 642,
+ 643,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kameron[] =
+{
+ 568,
+ 581,
+ 589,
+ 598,
+ 600,
+ 603,
+ 607,
+ 611,
+ 617,
+ 618,
+ 622,
+ 636,
+ 643,
+ 646,
+ 647,
+ 652,
+ 654,
+ 656,
+ 659,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Alfredo[] =
+{
+ 568,
+ 581,
+ 589,
+ 598,
+ 600,
+ 603,
+ 607,
+ 611,
+ 617,
+ 618,
+ 622,
+ 636,
+ 643,
+ 646,
+ 647,
+ 652,
+ 654,
+ 656,
+ 659,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ruben[] =
+{
+ 612,
+ 613,
+ 614,
+ 615,
+ 616,
+ 617,
+ 618,
+ 619,
+ 620,
+ 621,
+ 622,
+ 623,
+ 624,
+ 625,
+ 626,
+ 627,
+ 628,
+ 629,
+ 630,
+ 631,
+ 632,
+ 633,
+ 634,
+ 635,
+ 636,
+ 637,
+ 638,
+ 639,
+ 640,
+ 641,
+ 642,
+ 643,
+ 644,
+ 645,
+ 646,
+ 647,
+ 648,
+ 649,
+ 650,
+ 651,
+ 652,
+ 653,
+ 654,
+ 655,
+ 656,
+ 657,
+ 658,
+ 659,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Lamar[] =
+{
+ 612,
+ 613,
+ 614,
+ 615,
+ 616,
+ 617,
+ 618,
+ 619,
+ 620,
+ 621,
+ 622,
+ 623,
+ 624,
+ 625,
+ 626,
+ 627,
+ 628,
+ 629,
+ 630,
+ 631,
+ 632,
+ 633,
+ 634,
+ 635,
+ 636,
+ 637,
+ 638,
+ 639,
+ 640,
+ 641,
+ 642,
+ 643,
+ 644,
+ 645,
+ 646,
+ 647,
+ 648,
+ 649,
+ 650,
+ 651,
+ 652,
+ 653,
+ 654,
+ 655,
+ 656,
+ 657,
+ 658,
+ 659,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jaxon[] =
+{
+ 660,
+ 661,
+ 662,
+ 663,
+ 664,
+ 665,
+ 666,
+ 667,
+ 668,
+ 669,
+ 670,
+ 671,
+ 672,
+ 673,
+ 674,
+ 675,
+ 676,
+ 677,
+ 678,
+ 679,
+ 680,
+ 681,
+ 682,
+ 683,
+ 684,
+ 685,
+ 686,
+ 687,
+ 688,
+ 689,
+ 690,
+ 691,
+ 692,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Logan[] =
+{
+ 660,
+ 661,
+ 662,
+ 663,
+ 664,
+ 665,
+ 666,
+ 667,
+ 668,
+ 669,
+ 670,
+ 671,
+ 672,
+ 673,
+ 674,
+ 675,
+ 676,
+ 677,
+ 678,
+ 679,
+ 680,
+ 681,
+ 682,
+ 683,
+ 684,
+ 685,
+ 686,
+ 687,
+ 688,
+ 689,
+ 690,
+ 691,
+ 692,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Emilee[] =
+{
+ 660,
+ 661,
+ 662,
+ 663,
+ 664,
+ 665,
+ 666,
+ 667,
+ 668,
+ 669,
+ 670,
+ 671,
+ 672,
+ 673,
+ 674,
+ 675,
+ 676,
+ 677,
+ 678,
+ 679,
+ 680,
+ 681,
+ 682,
+ 683,
+ 684,
+ 685,
+ 686,
+ 687,
+ 688,
+ 689,
+ 690,
+ 691,
+ 692,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Josie[] =
+{
+ 660,
+ 661,
+ 662,
+ 663,
+ 664,
+ 665,
+ 666,
+ 667,
+ 668,
+ 669,
+ 670,
+ 671,
+ 672,
+ 673,
+ 674,
+ 675,
+ 676,
+ 677,
+ 678,
+ 679,
+ 680,
+ 681,
+ 682,
+ 683,
+ 684,
+ 685,
+ 686,
+ 687,
+ 688,
+ 689,
+ 690,
+ 691,
+ 692,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Armando[] =
+{
+ 693,
+ 694,
+ 695,
+ 696,
+ 697,
+ 698,
+ 699,
+ 700,
+ 701,
+ 702,
+ 703,
+ 704,
+ 705,
+ 706,
+ 707,
+ 708,
+ 709,
+ 710,
+ 711,
+ 712,
+ 713,
+ 714,
+ 715,
+ 716,
+ 717,
+ 718,
+ 719,
+ 720,
+ 721,
+ 722,
+ 723,
+ 724,
+ 725,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Skyler[] =
+{
+ 693,
+ 694,
+ 695,
+ 696,
+ 697,
+ 698,
+ 699,
+ 700,
+ 701,
+ 702,
+ 703,
+ 704,
+ 705,
+ 706,
+ 707,
+ 708,
+ 709,
+ 710,
+ 711,
+ 712,
+ 713,
+ 714,
+ 715,
+ 716,
+ 717,
+ 718,
+ 719,
+ 720,
+ 721,
+ 722,
+ 723,
+ 724,
+ 725,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ruth[] =
+{
+ 693,
+ 694,
+ 695,
+ 696,
+ 697,
+ 698,
+ 699,
+ 700,
+ 701,
+ 702,
+ 703,
+ 704,
+ 705,
+ 706,
+ 707,
+ 708,
+ 709,
+ 710,
+ 711,
+ 712,
+ 713,
+ 714,
+ 715,
+ 716,
+ 717,
+ 718,
+ 719,
+ 720,
+ 721,
+ 722,
+ 723,
+ 724,
+ 725,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Melody[] =
+{
+ 693,
+ 694,
+ 695,
+ 696,
+ 697,
+ 698,
+ 699,
+ 700,
+ 701,
+ 702,
+ 703,
+ 704,
+ 705,
+ 706,
+ 707,
+ 708,
+ 709,
+ 710,
+ 711,
+ 712,
+ 713,
+ 714,
+ 715,
+ 716,
+ 717,
+ 718,
+ 719,
+ 720,
+ 721,
+ 722,
+ 723,
+ 724,
+ 725,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Pedro[] =
+{
+ 347,
+ 661,
+ 664,
+ 669,
+ 672,
+ 676,
+ 677,
+ 678,
+ 680,
+ 685,
+ 688,
+ 694,
+ 696,
+ 697,
+ 698,
+ 699,
+ 706,
+ 713,
+ 717,
+ 719,
+ 722,
+ 724,
+ 727,
+ 730,
+ 736,
+ 737,
+ 740,
+ 744,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Erick[] =
+{
+ 347,
+ 661,
+ 664,
+ 669,
+ 672,
+ 676,
+ 677,
+ 678,
+ 680,
+ 685,
+ 688,
+ 694,
+ 696,
+ 697,
+ 698,
+ 699,
+ 706,
+ 713,
+ 717,
+ 719,
+ 722,
+ 724,
+ 727,
+ 730,
+ 736,
+ 737,
+ 740,
+ 744,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Elaine[] =
+{
+ 664,
+ 665,
+ 669,
+ 672,
+ 676,
+ 677,
+ 680,
+ 685,
+ 687,
+ 688,
+ 694,
+ 696,
+ 697,
+ 698,
+ 699,
+ 706,
+ 713,
+ 717,
+ 722,
+ 724,
+ 727,
+ 730,
+ 736,
+ 737,
+ 740,
+ 744,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Joyce[] =
+{
+ 664,
+ 665,
+ 669,
+ 672,
+ 676,
+ 677,
+ 680,
+ 685,
+ 687,
+ 688,
+ 694,
+ 696,
+ 697,
+ 698,
+ 699,
+ 706,
+ 713,
+ 717,
+ 722,
+ 724,
+ 727,
+ 730,
+ 736,
+ 737,
+ 740,
+ 744,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Todd[] =
+{
+ 267,
+ 273,
+ 305,
+ 312,
+ 325,
+ 332,
+ 352,
+ 662,
+ 665,
+ 668,
+ 669,
+ 670,
+ 672,
+ 673,
+ 676,
+ 677,
+ 679,
+ 680,
+ 682,
+ 688,
+ 697,
+ 698,
+ 699,
+ 700,
+ 707,
+ 710,
+ 718,
+ 720,
+ 724,
+ 725,
+ 728,
+ 730,
+ 731,
+ 732,
+ 734,
+ 735,
+ 744,
+ 748,
+ 750,
+ 751,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gavin[] =
+{
+ 267,
+ 273,
+ 305,
+ 312,
+ 325,
+ 332,
+ 352,
+ 662,
+ 665,
+ 668,
+ 669,
+ 670,
+ 672,
+ 673,
+ 676,
+ 677,
+ 679,
+ 680,
+ 682,
+ 688,
+ 697,
+ 698,
+ 699,
+ 700,
+ 707,
+ 710,
+ 718,
+ 720,
+ 724,
+ 725,
+ 728,
+ 730,
+ 731,
+ 732,
+ 734,
+ 735,
+ 744,
+ 748,
+ 750,
+ 751,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Malory[] =
+{
+ 267,
+ 273,
+ 305,
+ 312,
+ 325,
+ 332,
+ 352,
+ 662,
+ 665,
+ 668,
+ 669,
+ 670,
+ 672,
+ 673,
+ 676,
+ 677,
+ 679,
+ 680,
+ 682,
+ 688,
+ 697,
+ 698,
+ 699,
+ 700,
+ 707,
+ 710,
+ 718,
+ 720,
+ 724,
+ 725,
+ 728,
+ 730,
+ 731,
+ 732,
+ 734,
+ 735,
+ 744,
+ 748,
+ 750,
+ 751,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Esther[] =
+{
+ 267,
+ 273,
+ 305,
+ 312,
+ 325,
+ 332,
+ 352,
+ 662,
+ 665,
+ 668,
+ 669,
+ 670,
+ 672,
+ 673,
+ 676,
+ 677,
+ 679,
+ 680,
+ 682,
+ 688,
+ 697,
+ 698,
+ 699,
+ 700,
+ 707,
+ 710,
+ 718,
+ 720,
+ 724,
+ 725,
+ 728,
+ 730,
+ 731,
+ 732,
+ 734,
+ 735,
+ 744,
+ 748,
+ 750,
+ 751,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Oscar[] =
+{
+ 726,
+ 727,
+ 728,
+ 729,
+ 730,
+ 731,
+ 732,
+ 733,
+ 734,
+ 735,
+ 736,
+ 737,
+ 738,
+ 739,
+ 740,
+ 741,
+ 742,
+ 743,
+ 744,
+ 745,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 752,
+ 753,
+ 754,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Wilson[] =
+{
+ 726,
+ 727,
+ 728,
+ 729,
+ 730,
+ 731,
+ 732,
+ 733,
+ 734,
+ 735,
+ 736,
+ 737,
+ 738,
+ 739,
+ 740,
+ 741,
+ 742,
+ 743,
+ 744,
+ 745,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 752,
+ 753,
+ 754,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Clare[] =
+{
+ 726,
+ 727,
+ 728,
+ 729,
+ 730,
+ 731,
+ 732,
+ 733,
+ 734,
+ 735,
+ 736,
+ 737,
+ 738,
+ 739,
+ 740,
+ 741,
+ 742,
+ 743,
+ 744,
+ 745,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 752,
+ 753,
+ 754,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Tess[] =
+{
+ 726,
+ 727,
+ 728,
+ 729,
+ 730,
+ 731,
+ 732,
+ 733,
+ 734,
+ 735,
+ 736,
+ 737,
+ 738,
+ 739,
+ 740,
+ 741,
+ 742,
+ 743,
+ 744,
+ 745,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 752,
+ 753,
+ 754,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Leon[] =
+{
+ 420,
+ 421,
+ 422,
+ 423,
+ 424,
+ 425,
+ 426,
+ 427,
+ 428,
+ 429,
+ 430,
+ 431,
+ 432,
+ 433,
+ 434,
+ 435,
+ 436,
+ 437,
+ 438,
+ 439,
+ 440,
+ 441,
+ 442,
+ 443,
+ 516,
+ 517,
+ 518,
+ 519,
+ 520,
+ 521,
+ 522,
+ 523,
+ 524,
+ 525,
+ 526,
+ 527,
+ 528,
+ 529,
+ 530,
+ 531,
+ 532,
+ 533,
+ 534,
+ 535,
+ 536,
+ 537,
+ 538,
+ 539,
+ 612,
+ 613,
+ 614,
+ 615,
+ 616,
+ 617,
+ 618,
+ 619,
+ 620,
+ 621,
+ 622,
+ 623,
+ 624,
+ 625,
+ 626,
+ 627,
+ 628,
+ 629,
+ 630,
+ 631,
+ 632,
+ 633,
+ 634,
+ 635,
+ 708,
+ 709,
+ 710,
+ 711,
+ 712,
+ 713,
+ 714,
+ 715,
+ 716,
+ 717,
+ 718,
+ 719,
+ 720,
+ 721,
+ 722,
+ 723,
+ 724,
+ 725,
+ 726,
+ 727,
+ 728,
+ 729,
+ 730,
+ 731,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Alonzo[] =
+{
+ 444,
+ 445,
+ 446,
+ 447,
+ 448,
+ 449,
+ 450,
+ 451,
+ 452,
+ 453,
+ 454,
+ 455,
+ 456,
+ 457,
+ 458,
+ 459,
+ 460,
+ 461,
+ 462,
+ 463,
+ 464,
+ 465,
+ 466,
+ 467,
+ 540,
+ 541,
+ 542,
+ 543,
+ 544,
+ 545,
+ 546,
+ 547,
+ 548,
+ 549,
+ 550,
+ 551,
+ 552,
+ 553,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 560,
+ 561,
+ 562,
+ 563,
+ 636,
+ 637,
+ 638,
+ 639,
+ 640,
+ 641,
+ 642,
+ 643,
+ 644,
+ 645,
+ 646,
+ 647,
+ 648,
+ 649,
+ 650,
+ 651,
+ 652,
+ 653,
+ 654,
+ 655,
+ 656,
+ 657,
+ 658,
+ 659,
+ 732,
+ 733,
+ 734,
+ 735,
+ 736,
+ 737,
+ 738,
+ 739,
+ 740,
+ 741,
+ 742,
+ 743,
+ 744,
+ 745,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 752,
+ 753,
+ 754,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Vince[] =
+{
+ 421,
+ 425,
+ 431,
+ 437,
+ 439,
+ 456,
+ 460,
+ 465,
+ 466,
+ 517,
+ 521,
+ 527,
+ 533,
+ 535,
+ 552,
+ 556,
+ 561,
+ 562,
+ 613,
+ 617,
+ 623,
+ 629,
+ 631,
+ 648,
+ 652,
+ 657,
+ 658,
+ 709,
+ 713,
+ 719,
+ 725,
+ 727,
+ 744,
+ 748,
+ 753,
+ 754,
+ 766,
+ 777,
+ 788,
+ 799,
+ 800,
+ 801,
+ 802,
+ 803,
+ 804,
+ 805,
+ 806,
+ 807,
+ 808,
+ 809,
+ 810,
+ 811,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 820,
+ 821,
+ 822,
+ 823,
+ 824,
+ 825,
+ 826,
+ 827,
+ 828,
+ 829,
+ 830,
+ 831,
+ 832,
+ 833,
+ 834,
+ 835,
+ 846,
+ 847,
+ 848,
+ 849,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Bryon[] =
+{
+ 756,
+ 757,
+ 758,
+ 759,
+ 760,
+ 761,
+ 762,
+ 763,
+ 764,
+ 766,
+ 767,
+ 768,
+ 769,
+ 770,
+ 771,
+ 772,
+ 773,
+ 774,
+ 775,
+ 777,
+ 778,
+ 779,
+ 780,
+ 781,
+ 782,
+ 783,
+ 784,
+ 785,
+ 786,
+ 788,
+ 789,
+ 790,
+ 791,
+ 792,
+ 793,
+ 794,
+ 795,
+ 796,
+ 797,
+ 799,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 846,
+ 847,
+ 848,
+ 849,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ 870,
+ 871,
+ 872,
+ 873,
+ 874,
+ 875,
+ 876,
+ 877,
+ 878,
+ 879,
+ 880,
+ 881,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ava[] =
+{
+ 372,
+ 373,
+ 374,
+ 375,
+ 376,
+ 377,
+ 378,
+ 379,
+ 380,
+ 381,
+ 382,
+ 383,
+ 384,
+ 385,
+ 386,
+ 387,
+ 388,
+ 389,
+ 390,
+ 391,
+ 392,
+ 393,
+ 394,
+ 395,
+ 468,
+ 469,
+ 470,
+ 471,
+ 472,
+ 473,
+ 474,
+ 475,
+ 476,
+ 477,
+ 478,
+ 479,
+ 480,
+ 481,
+ 482,
+ 483,
+ 484,
+ 485,
+ 486,
+ 487,
+ 488,
+ 489,
+ 490,
+ 491,
+ 564,
+ 565,
+ 566,
+ 567,
+ 568,
+ 569,
+ 570,
+ 571,
+ 572,
+ 573,
+ 574,
+ 575,
+ 576,
+ 577,
+ 578,
+ 579,
+ 580,
+ 581,
+ 582,
+ 583,
+ 584,
+ 585,
+ 586,
+ 587,
+ 660,
+ 661,
+ 662,
+ 663,
+ 664,
+ 665,
+ 666,
+ 667,
+ 668,
+ 669,
+ 670,
+ 671,
+ 672,
+ 673,
+ 674,
+ 675,
+ 676,
+ 677,
+ 678,
+ 679,
+ 680,
+ 681,
+ 682,
+ 683,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Miriam[] =
+{
+ 396,
+ 397,
+ 398,
+ 399,
+ 400,
+ 401,
+ 402,
+ 403,
+ 404,
+ 405,
+ 406,
+ 407,
+ 408,
+ 409,
+ 410,
+ 411,
+ 412,
+ 413,
+ 414,
+ 415,
+ 416,
+ 417,
+ 418,
+ 419,
+ 492,
+ 493,
+ 494,
+ 495,
+ 496,
+ 497,
+ 498,
+ 499,
+ 500,
+ 501,
+ 502,
+ 503,
+ 504,
+ 505,
+ 506,
+ 507,
+ 508,
+ 509,
+ 510,
+ 511,
+ 512,
+ 513,
+ 514,
+ 515,
+ 588,
+ 589,
+ 590,
+ 591,
+ 592,
+ 593,
+ 594,
+ 595,
+ 596,
+ 597,
+ 598,
+ 599,
+ 600,
+ 601,
+ 602,
+ 603,
+ 604,
+ 605,
+ 606,
+ 607,
+ 608,
+ 609,
+ 610,
+ 611,
+ 684,
+ 685,
+ 686,
+ 687,
+ 688,
+ 689,
+ 690,
+ 691,
+ 692,
+ 693,
+ 694,
+ 695,
+ 696,
+ 697,
+ 698,
+ 699,
+ 700,
+ 701,
+ 702,
+ 703,
+ 704,
+ 705,
+ 706,
+ 707,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Carrie[] =
+{
+ 421,
+ 425,
+ 431,
+ 437,
+ 439,
+ 456,
+ 460,
+ 465,
+ 466,
+ 517,
+ 521,
+ 527,
+ 533,
+ 535,
+ 552,
+ 556,
+ 561,
+ 562,
+ 613,
+ 617,
+ 623,
+ 629,
+ 631,
+ 648,
+ 652,
+ 657,
+ 658,
+ 709,
+ 713,
+ 719,
+ 725,
+ 727,
+ 744,
+ 748,
+ 753,
+ 754,
+ 765,
+ 776,
+ 787,
+ 798,
+ 800,
+ 801,
+ 802,
+ 803,
+ 804,
+ 805,
+ 806,
+ 807,
+ 808,
+ 809,
+ 810,
+ 811,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 820,
+ 821,
+ 822,
+ 823,
+ 824,
+ 825,
+ 826,
+ 827,
+ 828,
+ 829,
+ 830,
+ 831,
+ 832,
+ 833,
+ 834,
+ 835,
+ 842,
+ 843,
+ 844,
+ 845,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gillian2[] =
+{
+ 756,
+ 757,
+ 758,
+ 759,
+ 760,
+ 761,
+ 762,
+ 763,
+ 764,
+ 765,
+ 767,
+ 768,
+ 769,
+ 770,
+ 771,
+ 772,
+ 773,
+ 774,
+ 775,
+ 776,
+ 778,
+ 779,
+ 780,
+ 781,
+ 782,
+ 783,
+ 784,
+ 785,
+ 786,
+ 787,
+ 789,
+ 790,
+ 791,
+ 792,
+ 793,
+ 794,
+ 795,
+ 796,
+ 797,
+ 798,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 842,
+ 843,
+ 844,
+ 845,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ 870,
+ 871,
+ 872,
+ 873,
+ 874,
+ 875,
+ 876,
+ 877,
+ 878,
+ 879,
+ 880,
+ 881,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Tyler[] =
+{
+ 660,
+ 661,
+ 662,
+ 663,
+ 664,
+ 665,
+ 666,
+ 667,
+ 668,
+ 669,
+ 670,
+ 671,
+ 672,
+ 673,
+ 674,
+ 675,
+ 676,
+ 677,
+ 678,
+ 679,
+ 680,
+ 681,
+ 682,
+ 683,
+ 684,
+ 685,
+ 686,
+ 687,
+ 688,
+ 689,
+ 690,
+ 691,
+ 692,
+ 693,
+ 694,
+ 695,
+ 696,
+ 697,
+ 698,
+ 699,
+ 700,
+ 701,
+ 702,
+ 703,
+ 704,
+ 705,
+ 706,
+ 707,
+ 708,
+ 709,
+ 710,
+ 711,
+ 712,
+ 713,
+ 714,
+ 715,
+ 716,
+ 717,
+ 718,
+ 719,
+ 720,
+ 721,
+ 722,
+ 723,
+ 724,
+ 725,
+ 726,
+ 727,
+ 728,
+ 729,
+ 730,
+ 731,
+ 732,
+ 733,
+ 734,
+ 735,
+ 736,
+ 737,
+ 738,
+ 739,
+ 740,
+ 741,
+ 742,
+ 743,
+ 744,
+ 745,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 752,
+ 753,
+ 754,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Chaz[] =
+{
+ 564,
+ 565,
+ 566,
+ 567,
+ 568,
+ 569,
+ 570,
+ 571,
+ 572,
+ 573,
+ 574,
+ 575,
+ 576,
+ 577,
+ 578,
+ 579,
+ 580,
+ 581,
+ 582,
+ 583,
+ 584,
+ 585,
+ 586,
+ 587,
+ 588,
+ 589,
+ 590,
+ 591,
+ 592,
+ 593,
+ 594,
+ 595,
+ 596,
+ 597,
+ 598,
+ 599,
+ 600,
+ 601,
+ 602,
+ 603,
+ 604,
+ 605,
+ 606,
+ 607,
+ 608,
+ 609,
+ 610,
+ 611,
+ 612,
+ 613,
+ 614,
+ 615,
+ 616,
+ 617,
+ 618,
+ 619,
+ 620,
+ 621,
+ 622,
+ 623,
+ 624,
+ 625,
+ 626,
+ 627,
+ 628,
+ 629,
+ 630,
+ 631,
+ 632,
+ 633,
+ 634,
+ 635,
+ 636,
+ 637,
+ 638,
+ 639,
+ 640,
+ 641,
+ 642,
+ 643,
+ 644,
+ 645,
+ 646,
+ 647,
+ 648,
+ 649,
+ 650,
+ 651,
+ 652,
+ 653,
+ 654,
+ 655,
+ 656,
+ 657,
+ 658,
+ 659,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Nelson[] =
+{
+ 756,
+ 757,
+ 758,
+ 759,
+ 760,
+ 761,
+ 762,
+ 763,
+ 764,
+ 766,
+ 767,
+ 768,
+ 769,
+ 770,
+ 771,
+ 772,
+ 773,
+ 774,
+ 775,
+ 777,
+ 778,
+ 779,
+ 780,
+ 781,
+ 782,
+ 783,
+ 784,
+ 785,
+ 786,
+ 788,
+ 789,
+ 790,
+ 791,
+ 792,
+ 793,
+ 794,
+ 795,
+ 796,
+ 797,
+ 799,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 846,
+ 847,
+ 848,
+ 849,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ 870,
+ 871,
+ 872,
+ 873,
+ 874,
+ 875,
+ 876,
+ 877,
+ 878,
+ 879,
+ 880,
+ 881,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Shania[] =
+{
+ 468,
+ 469,
+ 470,
+ 471,
+ 472,
+ 473,
+ 474,
+ 475,
+ 476,
+ 477,
+ 478,
+ 479,
+ 480,
+ 481,
+ 482,
+ 483,
+ 484,
+ 485,
+ 486,
+ 487,
+ 488,
+ 489,
+ 490,
+ 491,
+ 492,
+ 493,
+ 494,
+ 495,
+ 496,
+ 497,
+ 498,
+ 499,
+ 500,
+ 501,
+ 502,
+ 503,
+ 504,
+ 505,
+ 506,
+ 507,
+ 508,
+ 509,
+ 510,
+ 511,
+ 512,
+ 513,
+ 514,
+ 515,
+ 516,
+ 517,
+ 518,
+ 519,
+ 520,
+ 521,
+ 522,
+ 523,
+ 524,
+ 525,
+ 526,
+ 527,
+ 528,
+ 529,
+ 530,
+ 531,
+ 532,
+ 533,
+ 534,
+ 535,
+ 536,
+ 537,
+ 538,
+ 539,
+ 540,
+ 541,
+ 542,
+ 543,
+ 544,
+ 545,
+ 546,
+ 547,
+ 548,
+ 549,
+ 550,
+ 551,
+ 552,
+ 553,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 560,
+ 561,
+ 562,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Stella[] =
+{
+ 372,
+ 373,
+ 374,
+ 375,
+ 376,
+ 377,
+ 378,
+ 379,
+ 380,
+ 381,
+ 382,
+ 383,
+ 384,
+ 385,
+ 386,
+ 387,
+ 388,
+ 389,
+ 390,
+ 391,
+ 392,
+ 393,
+ 394,
+ 395,
+ 396,
+ 397,
+ 398,
+ 399,
+ 400,
+ 401,
+ 402,
+ 403,
+ 404,
+ 405,
+ 406,
+ 407,
+ 408,
+ 409,
+ 410,
+ 411,
+ 412,
+ 413,
+ 414,
+ 415,
+ 416,
+ 417,
+ 418,
+ 419,
+ 420,
+ 421,
+ 422,
+ 423,
+ 424,
+ 425,
+ 426,
+ 427,
+ 428,
+ 429,
+ 430,
+ 431,
+ 432,
+ 433,
+ 434,
+ 435,
+ 436,
+ 437,
+ 438,
+ 439,
+ 440,
+ 441,
+ 442,
+ 443,
+ 444,
+ 445,
+ 446,
+ 447,
+ 448,
+ 449,
+ 450,
+ 451,
+ 452,
+ 453,
+ 454,
+ 455,
+ 456,
+ 457,
+ 458,
+ 459,
+ 460,
+ 461,
+ 462,
+ 463,
+ 464,
+ 465,
+ 466,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dorine[] =
+{
+ 756,
+ 757,
+ 758,
+ 759,
+ 760,
+ 761,
+ 762,
+ 763,
+ 764,
+ 765,
+ 767,
+ 768,
+ 769,
+ 770,
+ 771,
+ 772,
+ 773,
+ 774,
+ 775,
+ 776,
+ 778,
+ 779,
+ 780,
+ 781,
+ 782,
+ 783,
+ 784,
+ 785,
+ 786,
+ 787,
+ 789,
+ 790,
+ 791,
+ 792,
+ 793,
+ 794,
+ 795,
+ 796,
+ 797,
+ 798,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 842,
+ 843,
+ 844,
+ 845,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ 870,
+ 871,
+ 872,
+ 873,
+ 874,
+ 875,
+ 876,
+ 877,
+ 878,
+ 879,
+ 880,
+ 881,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Maddox[] =
+{
+ 403,
+ 412,
+ 413,
+ 414,
+ 433,
+ 435,
+ 440,
+ 450,
+ 454,
+ 456,
+ 459,
+ 461,
+ 463,
+ 465,
+ 499,
+ 508,
+ 509,
+ 510,
+ 529,
+ 531,
+ 536,
+ 546,
+ 550,
+ 552,
+ 555,
+ 557,
+ 559,
+ 561,
+ 595,
+ 604,
+ 605,
+ 606,
+ 625,
+ 627,
+ 632,
+ 642,
+ 646,
+ 648,
+ 651,
+ 653,
+ 655,
+ 657,
+ 691,
+ 700,
+ 701,
+ 702,
+ 721,
+ 723,
+ 728,
+ 738,
+ 742,
+ 744,
+ 747,
+ 749,
+ 751,
+ 753,
+ 765,
+ 766,
+ 776,
+ 777,
+ 787,
+ 788,
+ 798,
+ 799,
+ 828,
+ 829,
+ 830,
+ 831,
+ 842,
+ 843,
+ 844,
+ 845,
+ 846,
+ 847,
+ 848,
+ 849,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Davin[] =
+{
+ 403,
+ 412,
+ 413,
+ 414,
+ 433,
+ 435,
+ 440,
+ 450,
+ 454,
+ 456,
+ 459,
+ 461,
+ 463,
+ 465,
+ 499,
+ 508,
+ 509,
+ 510,
+ 529,
+ 531,
+ 536,
+ 546,
+ 550,
+ 552,
+ 555,
+ 557,
+ 559,
+ 561,
+ 595,
+ 604,
+ 605,
+ 606,
+ 625,
+ 627,
+ 632,
+ 642,
+ 646,
+ 648,
+ 651,
+ 653,
+ 655,
+ 657,
+ 691,
+ 700,
+ 701,
+ 702,
+ 721,
+ 723,
+ 728,
+ 738,
+ 742,
+ 744,
+ 747,
+ 749,
+ 751,
+ 753,
+ 765,
+ 766,
+ 776,
+ 777,
+ 787,
+ 788,
+ 798,
+ 799,
+ 828,
+ 829,
+ 830,
+ 831,
+ 842,
+ 843,
+ 844,
+ 845,
+ 846,
+ 847,
+ 848,
+ 849,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Trevon[] =
+{
+ 403,
+ 412,
+ 413,
+ 414,
+ 433,
+ 435,
+ 440,
+ 450,
+ 454,
+ 456,
+ 459,
+ 461,
+ 463,
+ 465,
+ 499,
+ 508,
+ 509,
+ 510,
+ 529,
+ 531,
+ 536,
+ 546,
+ 550,
+ 552,
+ 555,
+ 557,
+ 559,
+ 561,
+ 595,
+ 604,
+ 605,
+ 606,
+ 625,
+ 627,
+ 632,
+ 642,
+ 646,
+ 648,
+ 651,
+ 653,
+ 655,
+ 657,
+ 691,
+ 700,
+ 701,
+ 702,
+ 721,
+ 723,
+ 728,
+ 738,
+ 742,
+ 744,
+ 747,
+ 749,
+ 751,
+ 753,
+ 765,
+ 766,
+ 776,
+ 777,
+ 787,
+ 788,
+ 798,
+ 799,
+ 828,
+ 829,
+ 830,
+ 831,
+ 842,
+ 843,
+ 844,
+ 845,
+ 846,
+ 847,
+ 848,
+ 849,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Mateo[] =
+{
+ 373,
+ 382,
+ 390,
+ 402,
+ 403,
+ 416,
+ 417,
+ 424,
+ 431,
+ 432,
+ 435,
+ 450,
+ 451,
+ 469,
+ 480,
+ 486,
+ 498,
+ 499,
+ 512,
+ 513,
+ 520,
+ 527,
+ 528,
+ 531,
+ 546,
+ 547,
+ 565,
+ 574,
+ 582,
+ 594,
+ 595,
+ 608,
+ 609,
+ 616,
+ 623,
+ 624,
+ 627,
+ 642,
+ 643,
+ 661,
+ 670,
+ 678,
+ 690,
+ 691,
+ 704,
+ 705,
+ 712,
+ 719,
+ 720,
+ 723,
+ 738,
+ 739,
+ 808,
+ 809,
+ 810,
+ 811,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Bret[] =
+{
+ 373,
+ 382,
+ 390,
+ 415,
+ 419,
+ 424,
+ 426,
+ 430,
+ 431,
+ 444,
+ 451,
+ 454,
+ 455,
+ 464,
+ 469,
+ 480,
+ 486,
+ 511,
+ 515,
+ 520,
+ 522,
+ 526,
+ 527,
+ 540,
+ 547,
+ 550,
+ 551,
+ 560,
+ 565,
+ 574,
+ 582,
+ 607,
+ 611,
+ 616,
+ 618,
+ 622,
+ 623,
+ 636,
+ 643,
+ 646,
+ 647,
+ 656,
+ 661,
+ 670,
+ 678,
+ 703,
+ 707,
+ 712,
+ 714,
+ 718,
+ 719,
+ 732,
+ 739,
+ 742,
+ 743,
+ 752,
+ 808,
+ 809,
+ 810,
+ 811,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Raul[] =
+{
+ 373,
+ 382,
+ 383,
+ 386,
+ 390,
+ 423,
+ 424,
+ 431,
+ 433,
+ 450,
+ 451,
+ 466,
+ 469,
+ 480,
+ 481,
+ 482,
+ 486,
+ 519,
+ 520,
+ 527,
+ 529,
+ 546,
+ 547,
+ 562,
+ 565,
+ 574,
+ 575,
+ 578,
+ 582,
+ 615,
+ 616,
+ 623,
+ 625,
+ 642,
+ 643,
+ 658,
+ 661,
+ 670,
+ 671,
+ 674,
+ 678,
+ 711,
+ 712,
+ 719,
+ 721,
+ 738,
+ 739,
+ 754,
+ 808,
+ 809,
+ 810,
+ 811,
+ 832,
+ 833,
+ 834,
+ 835,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Kay[] =
+{
+ 373,
+ 382,
+ 387,
+ 390,
+ 402,
+ 403,
+ 413,
+ 414,
+ 424,
+ 427,
+ 431,
+ 433,
+ 451,
+ 469,
+ 470,
+ 480,
+ 486,
+ 498,
+ 499,
+ 509,
+ 510,
+ 520,
+ 523,
+ 527,
+ 529,
+ 547,
+ 565,
+ 574,
+ 579,
+ 582,
+ 594,
+ 595,
+ 605,
+ 606,
+ 616,
+ 619,
+ 623,
+ 625,
+ 643,
+ 661,
+ 670,
+ 675,
+ 678,
+ 690,
+ 691,
+ 701,
+ 702,
+ 712,
+ 715,
+ 719,
+ 721,
+ 739,
+ 808,
+ 809,
+ 810,
+ 811,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Elena[] =
+{
+ 373,
+ 382,
+ 390,
+ 415,
+ 419,
+ 424,
+ 426,
+ 430,
+ 431,
+ 444,
+ 451,
+ 454,
+ 455,
+ 464,
+ 469,
+ 480,
+ 486,
+ 511,
+ 515,
+ 520,
+ 522,
+ 526,
+ 527,
+ 540,
+ 547,
+ 550,
+ 551,
+ 560,
+ 565,
+ 574,
+ 582,
+ 607,
+ 611,
+ 616,
+ 618,
+ 622,
+ 623,
+ 636,
+ 643,
+ 646,
+ 647,
+ 656,
+ 661,
+ 670,
+ 678,
+ 703,
+ 707,
+ 712,
+ 714,
+ 718,
+ 719,
+ 732,
+ 739,
+ 742,
+ 743,
+ 752,
+ 808,
+ 809,
+ 810,
+ 811,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Alana[] =
+{
+ 373,
+ 382,
+ 383,
+ 386,
+ 390,
+ 423,
+ 424,
+ 431,
+ 433,
+ 450,
+ 451,
+ 466,
+ 469,
+ 480,
+ 481,
+ 482,
+ 486,
+ 519,
+ 520,
+ 527,
+ 529,
+ 546,
+ 547,
+ 562,
+ 565,
+ 574,
+ 575,
+ 578,
+ 582,
+ 615,
+ 616,
+ 623,
+ 625,
+ 642,
+ 643,
+ 658,
+ 661,
+ 670,
+ 671,
+ 674,
+ 678,
+ 711,
+ 712,
+ 719,
+ 721,
+ 738,
+ 739,
+ 754,
+ 808,
+ 809,
+ 810,
+ 811,
+ 832,
+ 833,
+ 834,
+ 835,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Alexas[] =
+{
+ 382,
+ 387,
+ 403,
+ 423,
+ 424,
+ 425,
+ 431,
+ 433,
+ 435,
+ 450,
+ 459,
+ 461,
+ 465,
+ 466,
+ 470,
+ 480,
+ 499,
+ 519,
+ 520,
+ 521,
+ 527,
+ 529,
+ 531,
+ 546,
+ 555,
+ 557,
+ 561,
+ 562,
+ 574,
+ 579,
+ 595,
+ 615,
+ 616,
+ 617,
+ 623,
+ 625,
+ 627,
+ 642,
+ 651,
+ 653,
+ 657,
+ 658,
+ 670,
+ 675,
+ 691,
+ 711,
+ 712,
+ 713,
+ 719,
+ 721,
+ 723,
+ 738,
+ 747,
+ 749,
+ 753,
+ 754,
+ 762,
+ 763,
+ 764,
+ 773,
+ 774,
+ 775,
+ 784,
+ 785,
+ 786,
+ 795,
+ 796,
+ 797,
+ 804,
+ 805,
+ 806,
+ 807,
+ 808,
+ 809,
+ 810,
+ 811,
+ 828,
+ 829,
+ 830,
+ 831,
+ 832,
+ 833,
+ 834,
+ 835,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Weston[] =
+{
+ 374,
+ 377,
+ 404,
+ 421,
+ 422,
+ 426,
+ 437,
+ 439,
+ 446,
+ 451,
+ 453,
+ 457,
+ 458,
+ 472,
+ 475,
+ 500,
+ 517,
+ 518,
+ 522,
+ 533,
+ 535,
+ 542,
+ 547,
+ 549,
+ 553,
+ 554,
+ 566,
+ 569,
+ 596,
+ 613,
+ 614,
+ 618,
+ 629,
+ 631,
+ 638,
+ 643,
+ 645,
+ 649,
+ 650,
+ 662,
+ 665,
+ 692,
+ 709,
+ 710,
+ 714,
+ 725,
+ 727,
+ 734,
+ 739,
+ 741,
+ 745,
+ 746,
+ 762,
+ 763,
+ 764,
+ 766,
+ 773,
+ 774,
+ 775,
+ 777,
+ 784,
+ 785,
+ 786,
+ 788,
+ 795,
+ 796,
+ 797,
+ 799,
+ 800,
+ 801,
+ 802,
+ 803,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 846,
+ 847,
+ 848,
+ 849,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jasper[] =
+{
+ 378,
+ 388,
+ 400,
+ 409,
+ 410,
+ 411,
+ 416,
+ 429,
+ 432,
+ 438,
+ 447,
+ 452,
+ 456,
+ 460,
+ 462,
+ 463,
+ 471,
+ 476,
+ 496,
+ 505,
+ 506,
+ 507,
+ 512,
+ 525,
+ 528,
+ 534,
+ 543,
+ 548,
+ 552,
+ 556,
+ 558,
+ 559,
+ 570,
+ 580,
+ 592,
+ 601,
+ 602,
+ 603,
+ 608,
+ 621,
+ 624,
+ 630,
+ 639,
+ 644,
+ 648,
+ 652,
+ 654,
+ 655,
+ 666,
+ 676,
+ 688,
+ 697,
+ 698,
+ 699,
+ 704,
+ 717,
+ 720,
+ 726,
+ 735,
+ 740,
+ 744,
+ 748,
+ 750,
+ 751,
+ 762,
+ 763,
+ 764,
+ 773,
+ 774,
+ 775,
+ 784,
+ 785,
+ 786,
+ 795,
+ 796,
+ 797,
+ 820,
+ 821,
+ 822,
+ 823,
+ 824,
+ 825,
+ 826,
+ 827,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Nadia[] =
+{
+ 382,
+ 387,
+ 403,
+ 423,
+ 424,
+ 425,
+ 431,
+ 433,
+ 435,
+ 450,
+ 459,
+ 461,
+ 465,
+ 466,
+ 470,
+ 480,
+ 499,
+ 519,
+ 520,
+ 521,
+ 527,
+ 529,
+ 531,
+ 546,
+ 555,
+ 557,
+ 561,
+ 562,
+ 574,
+ 579,
+ 595,
+ 615,
+ 616,
+ 617,
+ 623,
+ 625,
+ 627,
+ 642,
+ 651,
+ 653,
+ 657,
+ 658,
+ 670,
+ 675,
+ 691,
+ 711,
+ 712,
+ 713,
+ 719,
+ 721,
+ 723,
+ 738,
+ 747,
+ 749,
+ 753,
+ 754,
+ 762,
+ 763,
+ 764,
+ 773,
+ 774,
+ 775,
+ 784,
+ 785,
+ 786,
+ 795,
+ 796,
+ 797,
+ 804,
+ 805,
+ 806,
+ 807,
+ 808,
+ 809,
+ 810,
+ 811,
+ 828,
+ 829,
+ 830,
+ 831,
+ 832,
+ 833,
+ 834,
+ 835,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Miranda[] =
+{
+ 374,
+ 377,
+ 404,
+ 421,
+ 422,
+ 426,
+ 437,
+ 439,
+ 446,
+ 451,
+ 453,
+ 457,
+ 458,
+ 472,
+ 475,
+ 500,
+ 517,
+ 518,
+ 522,
+ 533,
+ 535,
+ 542,
+ 547,
+ 549,
+ 553,
+ 554,
+ 566,
+ 569,
+ 596,
+ 613,
+ 614,
+ 618,
+ 629,
+ 631,
+ 638,
+ 643,
+ 645,
+ 649,
+ 650,
+ 662,
+ 665,
+ 692,
+ 709,
+ 710,
+ 714,
+ 725,
+ 727,
+ 734,
+ 739,
+ 741,
+ 745,
+ 746,
+ 762,
+ 763,
+ 764,
+ 765,
+ 773,
+ 774,
+ 775,
+ 776,
+ 784,
+ 785,
+ 786,
+ 787,
+ 795,
+ 796,
+ 797,
+ 798,
+ 800,
+ 801,
+ 802,
+ 803,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 842,
+ 843,
+ 844,
+ 845,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Emma[] =
+{
+ 378,
+ 388,
+ 400,
+ 409,
+ 410,
+ 411,
+ 416,
+ 429,
+ 432,
+ 438,
+ 447,
+ 452,
+ 456,
+ 460,
+ 462,
+ 463,
+ 471,
+ 476,
+ 496,
+ 505,
+ 506,
+ 507,
+ 512,
+ 525,
+ 528,
+ 534,
+ 543,
+ 548,
+ 552,
+ 556,
+ 558,
+ 559,
+ 570,
+ 580,
+ 592,
+ 601,
+ 602,
+ 603,
+ 608,
+ 621,
+ 624,
+ 630,
+ 639,
+ 644,
+ 648,
+ 652,
+ 654,
+ 655,
+ 666,
+ 676,
+ 688,
+ 697,
+ 698,
+ 699,
+ 704,
+ 717,
+ 720,
+ 726,
+ 735,
+ 740,
+ 744,
+ 748,
+ 750,
+ 751,
+ 762,
+ 763,
+ 764,
+ 773,
+ 774,
+ 775,
+ 784,
+ 785,
+ 786,
+ 795,
+ 796,
+ 797,
+ 820,
+ 821,
+ 822,
+ 823,
+ 824,
+ 825,
+ 826,
+ 827,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Rolando[] =
+{
+ 185,
+ 290,
+ 377,
+ 380,
+ 385,
+ 401,
+ 404,
+ 409,
+ 410,
+ 428,
+ 437,
+ 438,
+ 439,
+ 446,
+ 466,
+ 475,
+ 478,
+ 484,
+ 497,
+ 500,
+ 505,
+ 506,
+ 524,
+ 533,
+ 534,
+ 535,
+ 542,
+ 562,
+ 569,
+ 572,
+ 577,
+ 593,
+ 596,
+ 601,
+ 602,
+ 620,
+ 629,
+ 630,
+ 631,
+ 638,
+ 658,
+ 665,
+ 668,
+ 673,
+ 689,
+ 692,
+ 697,
+ 698,
+ 716,
+ 725,
+ 726,
+ 727,
+ 734,
+ 754,
+ 756,
+ 757,
+ 758,
+ 766,
+ 767,
+ 768,
+ 769,
+ 777,
+ 778,
+ 779,
+ 780,
+ 788,
+ 789,
+ 790,
+ 791,
+ 799,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 832,
+ 833,
+ 834,
+ 835,
+ 846,
+ 847,
+ 848,
+ 849,
+ 870,
+ 871,
+ 872,
+ 873,
+ 874,
+ 875,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Stanly[] =
+{
+ 185,
+ 290,
+ 377,
+ 380,
+ 385,
+ 401,
+ 404,
+ 409,
+ 410,
+ 428,
+ 437,
+ 438,
+ 439,
+ 446,
+ 466,
+ 475,
+ 478,
+ 484,
+ 497,
+ 500,
+ 505,
+ 506,
+ 524,
+ 533,
+ 534,
+ 535,
+ 542,
+ 562,
+ 569,
+ 572,
+ 577,
+ 593,
+ 596,
+ 601,
+ 602,
+ 620,
+ 629,
+ 630,
+ 631,
+ 638,
+ 658,
+ 665,
+ 668,
+ 673,
+ 689,
+ 692,
+ 697,
+ 698,
+ 716,
+ 725,
+ 726,
+ 727,
+ 734,
+ 754,
+ 759,
+ 760,
+ 761,
+ 766,
+ 770,
+ 771,
+ 772,
+ 777,
+ 781,
+ 782,
+ 783,
+ 788,
+ 792,
+ 793,
+ 794,
+ 799,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 832,
+ 833,
+ 834,
+ 835,
+ 846,
+ 847,
+ 848,
+ 849,
+ 876,
+ 877,
+ 878,
+ 879,
+ 880,
+ 881,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dario[] =
+{
+ 185,
+ 290,
+ 377,
+ 380,
+ 385,
+ 401,
+ 404,
+ 409,
+ 410,
+ 428,
+ 437,
+ 438,
+ 439,
+ 446,
+ 466,
+ 475,
+ 478,
+ 484,
+ 497,
+ 500,
+ 505,
+ 506,
+ 524,
+ 533,
+ 534,
+ 535,
+ 542,
+ 562,
+ 569,
+ 572,
+ 577,
+ 593,
+ 596,
+ 601,
+ 602,
+ 620,
+ 629,
+ 630,
+ 631,
+ 638,
+ 658,
+ 665,
+ 668,
+ 673,
+ 689,
+ 692,
+ 697,
+ 698,
+ 716,
+ 725,
+ 726,
+ 727,
+ 734,
+ 754,
+ 762,
+ 763,
+ 764,
+ 766,
+ 773,
+ 774,
+ 775,
+ 777,
+ 784,
+ 785,
+ 786,
+ 788,
+ 795,
+ 796,
+ 797,
+ 799,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 832,
+ 833,
+ 834,
+ 835,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 846,
+ 847,
+ 848,
+ 849,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Karlee[] =
+{
+ 185,
+ 290,
+ 377,
+ 380,
+ 385,
+ 401,
+ 404,
+ 409,
+ 410,
+ 428,
+ 437,
+ 438,
+ 439,
+ 446,
+ 466,
+ 475,
+ 478,
+ 484,
+ 497,
+ 500,
+ 505,
+ 506,
+ 524,
+ 533,
+ 534,
+ 535,
+ 542,
+ 562,
+ 569,
+ 572,
+ 577,
+ 593,
+ 596,
+ 601,
+ 602,
+ 620,
+ 629,
+ 630,
+ 631,
+ 638,
+ 658,
+ 665,
+ 668,
+ 673,
+ 689,
+ 692,
+ 697,
+ 698,
+ 716,
+ 725,
+ 726,
+ 727,
+ 734,
+ 754,
+ 756,
+ 757,
+ 758,
+ 765,
+ 767,
+ 768,
+ 769,
+ 776,
+ 778,
+ 779,
+ 780,
+ 787,
+ 789,
+ 790,
+ 791,
+ 798,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 832,
+ 833,
+ 834,
+ 835,
+ 842,
+ 843,
+ 844,
+ 845,
+ 870,
+ 871,
+ 872,
+ 873,
+ 874,
+ 875,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jaylin[] =
+{
+ 185,
+ 290,
+ 377,
+ 380,
+ 385,
+ 401,
+ 404,
+ 409,
+ 410,
+ 428,
+ 437,
+ 438,
+ 439,
+ 446,
+ 466,
+ 475,
+ 478,
+ 484,
+ 497,
+ 500,
+ 505,
+ 506,
+ 524,
+ 533,
+ 534,
+ 535,
+ 542,
+ 562,
+ 569,
+ 572,
+ 577,
+ 593,
+ 596,
+ 601,
+ 602,
+ 620,
+ 629,
+ 630,
+ 631,
+ 638,
+ 658,
+ 665,
+ 668,
+ 673,
+ 689,
+ 692,
+ 697,
+ 698,
+ 716,
+ 725,
+ 726,
+ 727,
+ 734,
+ 754,
+ 759,
+ 760,
+ 761,
+ 765,
+ 770,
+ 771,
+ 772,
+ 776,
+ 781,
+ 782,
+ 783,
+ 787,
+ 792,
+ 793,
+ 794,
+ 798,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 832,
+ 833,
+ 834,
+ 835,
+ 842,
+ 843,
+ 844,
+ 845,
+ 876,
+ 877,
+ 878,
+ 879,
+ 880,
+ 881,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ingrid[] =
+{
+ 185,
+ 290,
+ 377,
+ 380,
+ 385,
+ 401,
+ 404,
+ 409,
+ 410,
+ 428,
+ 437,
+ 438,
+ 439,
+ 446,
+ 466,
+ 475,
+ 478,
+ 484,
+ 497,
+ 500,
+ 505,
+ 506,
+ 524,
+ 533,
+ 534,
+ 535,
+ 542,
+ 562,
+ 569,
+ 572,
+ 577,
+ 593,
+ 596,
+ 601,
+ 602,
+ 620,
+ 629,
+ 630,
+ 631,
+ 638,
+ 658,
+ 665,
+ 668,
+ 673,
+ 689,
+ 692,
+ 697,
+ 698,
+ 716,
+ 725,
+ 726,
+ 727,
+ 734,
+ 754,
+ 762,
+ 763,
+ 764,
+ 765,
+ 773,
+ 774,
+ 775,
+ 776,
+ 784,
+ 785,
+ 786,
+ 787,
+ 795,
+ 796,
+ 797,
+ 798,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 832,
+ 833,
+ 834,
+ 835,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 842,
+ 843,
+ 844,
+ 845,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Delilah[] =
+{
+ 347,
+ 352,
+ 374,
+ 378,
+ 398,
+ 421,
+ 426,
+ 447,
+ 472,
+ 476,
+ 494,
+ 517,
+ 522,
+ 543,
+ 566,
+ 570,
+ 590,
+ 613,
+ 618,
+ 639,
+ 662,
+ 666,
+ 686,
+ 709,
+ 714,
+ 735,
+ 800,
+ 801,
+ 802,
+ 803,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Carly[] =
+{
+ 344,
+ 374,
+ 378,
+ 394,
+ 395,
+ 405,
+ 413,
+ 414,
+ 420,
+ 421,
+ 434,
+ 441,
+ 457,
+ 472,
+ 476,
+ 490,
+ 491,
+ 501,
+ 509,
+ 510,
+ 516,
+ 517,
+ 530,
+ 537,
+ 553,
+ 566,
+ 570,
+ 586,
+ 587,
+ 597,
+ 605,
+ 606,
+ 612,
+ 613,
+ 626,
+ 633,
+ 649,
+ 662,
+ 666,
+ 682,
+ 683,
+ 693,
+ 701,
+ 702,
+ 708,
+ 709,
+ 722,
+ 729,
+ 745,
+ 800,
+ 801,
+ 802,
+ 803,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Lexie[] =
+{
+ 344,
+ 347,
+ 352,
+ 394,
+ 395,
+ 398,
+ 405,
+ 413,
+ 414,
+ 420,
+ 421,
+ 426,
+ 434,
+ 441,
+ 447,
+ 457,
+ 490,
+ 491,
+ 494,
+ 501,
+ 509,
+ 510,
+ 516,
+ 517,
+ 522,
+ 530,
+ 537,
+ 543,
+ 553,
+ 586,
+ 587,
+ 590,
+ 597,
+ 605,
+ 606,
+ 612,
+ 613,
+ 618,
+ 626,
+ 633,
+ 639,
+ 649,
+ 682,
+ 683,
+ 686,
+ 693,
+ 701,
+ 702,
+ 708,
+ 709,
+ 714,
+ 722,
+ 729,
+ 735,
+ 745,
+ 800,
+ 801,
+ 802,
+ 803,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Miller[] =
+{
+ 345,
+ 376,
+ 386,
+ 387,
+ 397,
+ 399,
+ 402,
+ 403,
+ 406,
+ 408,
+ 411,
+ 413,
+ 414,
+ 425,
+ 427,
+ 429,
+ 433,
+ 435,
+ 440,
+ 441,
+ 445,
+ 448,
+ 449,
+ 450,
+ 452,
+ 454,
+ 456,
+ 458,
+ 459,
+ 460,
+ 462,
+ 465,
+ 466,
+ 467,
+ 470,
+ 474,
+ 482,
+ 493,
+ 495,
+ 498,
+ 499,
+ 502,
+ 504,
+ 507,
+ 509,
+ 510,
+ 521,
+ 523,
+ 525,
+ 529,
+ 531,
+ 536,
+ 537,
+ 541,
+ 544,
+ 545,
+ 546,
+ 548,
+ 550,
+ 552,
+ 554,
+ 555,
+ 556,
+ 558,
+ 561,
+ 562,
+ 563,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Marv[] =
+{
+ 345,
+ 568,
+ 578,
+ 579,
+ 589,
+ 591,
+ 594,
+ 595,
+ 598,
+ 600,
+ 603,
+ 605,
+ 606,
+ 617,
+ 619,
+ 621,
+ 625,
+ 627,
+ 632,
+ 633,
+ 637,
+ 640,
+ 641,
+ 642,
+ 644,
+ 646,
+ 648,
+ 650,
+ 651,
+ 652,
+ 654,
+ 657,
+ 658,
+ 659,
+ 664,
+ 674,
+ 675,
+ 685,
+ 687,
+ 690,
+ 691,
+ 694,
+ 696,
+ 699,
+ 701,
+ 702,
+ 713,
+ 715,
+ 717,
+ 721,
+ 723,
+ 728,
+ 729,
+ 733,
+ 736,
+ 737,
+ 738,
+ 740,
+ 742,
+ 744,
+ 746,
+ 747,
+ 748,
+ 750,
+ 753,
+ 754,
+ 755,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Layton[] =
+{
+ 345,
+ 425,
+ 433,
+ 435,
+ 445,
+ 450,
+ 454,
+ 456,
+ 458,
+ 459,
+ 460,
+ 465,
+ 466,
+ 521,
+ 529,
+ 531,
+ 541,
+ 546,
+ 550,
+ 552,
+ 554,
+ 555,
+ 556,
+ 561,
+ 562,
+ 617,
+ 625,
+ 627,
+ 637,
+ 642,
+ 646,
+ 648,
+ 650,
+ 651,
+ 652,
+ 657,
+ 658,
+ 713,
+ 721,
+ 723,
+ 733,
+ 738,
+ 742,
+ 744,
+ 746,
+ 747,
+ 748,
+ 753,
+ 754,
+ 804,
+ 805,
+ 806,
+ 807,
+ 820,
+ 821,
+ 822,
+ 823,
+ 824,
+ 825,
+ 826,
+ 827,
+ 828,
+ 829,
+ 830,
+ 831,
+ 832,
+ 833,
+ 834,
+ 835,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Brooks[] =
+{
+ 660,
+ 661,
+ 662,
+ 663,
+ 664,
+ 665,
+ 666,
+ 667,
+ 668,
+ 669,
+ 670,
+ 671,
+ 672,
+ 673,
+ 674,
+ 675,
+ 676,
+ 677,
+ 678,
+ 679,
+ 680,
+ 681,
+ 682,
+ 683,
+ 684,
+ 685,
+ 686,
+ 687,
+ 688,
+ 689,
+ 690,
+ 691,
+ 692,
+ 693,
+ 694,
+ 695,
+ 696,
+ 697,
+ 698,
+ 699,
+ 700,
+ 701,
+ 702,
+ 703,
+ 704,
+ 705,
+ 706,
+ 707,
+ 708,
+ 709,
+ 710,
+ 711,
+ 712,
+ 713,
+ 714,
+ 715,
+ 716,
+ 717,
+ 718,
+ 719,
+ 720,
+ 721,
+ 722,
+ 723,
+ 724,
+ 725,
+ 726,
+ 727,
+ 728,
+ 729,
+ 730,
+ 731,
+ 732,
+ 733,
+ 734,
+ 735,
+ 736,
+ 737,
+ 738,
+ 739,
+ 740,
+ 741,
+ 742,
+ 743,
+ 744,
+ 745,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 752,
+ 753,
+ 754,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gregory[] =
+{
+ 421,
+ 425,
+ 431,
+ 437,
+ 439,
+ 456,
+ 460,
+ 465,
+ 466,
+ 517,
+ 521,
+ 527,
+ 533,
+ 535,
+ 552,
+ 556,
+ 561,
+ 562,
+ 613,
+ 617,
+ 623,
+ 629,
+ 631,
+ 648,
+ 652,
+ 657,
+ 658,
+ 709,
+ 713,
+ 719,
+ 725,
+ 727,
+ 744,
+ 748,
+ 753,
+ 754,
+ 765,
+ 766,
+ 776,
+ 777,
+ 787,
+ 788,
+ 798,
+ 799,
+ 800,
+ 801,
+ 802,
+ 803,
+ 804,
+ 805,
+ 806,
+ 807,
+ 808,
+ 809,
+ 810,
+ 811,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 820,
+ 821,
+ 822,
+ 823,
+ 824,
+ 825,
+ 826,
+ 827,
+ 828,
+ 829,
+ 830,
+ 831,
+ 832,
+ 833,
+ 834,
+ 835,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Reese[] =
+{
+ 756,
+ 757,
+ 758,
+ 759,
+ 760,
+ 761,
+ 762,
+ 763,
+ 764,
+ 765,
+ 766,
+ 767,
+ 768,
+ 769,
+ 770,
+ 771,
+ 772,
+ 773,
+ 774,
+ 775,
+ 776,
+ 777,
+ 778,
+ 779,
+ 780,
+ 781,
+ 782,
+ 783,
+ 784,
+ 785,
+ 786,
+ 787,
+ 788,
+ 789,
+ 790,
+ 791,
+ 792,
+ 793,
+ 794,
+ 795,
+ 796,
+ 797,
+ 798,
+ 799,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 842,
+ 843,
+ 844,
+ 845,
+ 846,
+ 847,
+ 848,
+ 849,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ 870,
+ 871,
+ 872,
+ 873,
+ 874,
+ 875,
+ 876,
+ 877,
+ 878,
+ 879,
+ 880,
+ 881,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Mason[] =
+{
+ 660,
+ 661,
+ 662,
+ 663,
+ 664,
+ 665,
+ 666,
+ 667,
+ 668,
+ 669,
+ 670,
+ 671,
+ 672,
+ 673,
+ 674,
+ 675,
+ 676,
+ 677,
+ 678,
+ 679,
+ 680,
+ 681,
+ 682,
+ 683,
+ 684,
+ 685,
+ 686,
+ 687,
+ 688,
+ 689,
+ 690,
+ 691,
+ 692,
+ 693,
+ 694,
+ 695,
+ 696,
+ 697,
+ 698,
+ 699,
+ 700,
+ 701,
+ 702,
+ 703,
+ 704,
+ 705,
+ 706,
+ 707,
+ 708,
+ 709,
+ 710,
+ 711,
+ 712,
+ 713,
+ 714,
+ 715,
+ 716,
+ 717,
+ 718,
+ 719,
+ 720,
+ 721,
+ 722,
+ 723,
+ 724,
+ 725,
+ 726,
+ 727,
+ 728,
+ 729,
+ 730,
+ 731,
+ 732,
+ 733,
+ 734,
+ 735,
+ 736,
+ 737,
+ 738,
+ 739,
+ 740,
+ 741,
+ 742,
+ 743,
+ 744,
+ 745,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 752,
+ 753,
+ 754,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Toby[] =
+{
+ 564,
+ 565,
+ 566,
+ 567,
+ 568,
+ 569,
+ 570,
+ 571,
+ 572,
+ 573,
+ 574,
+ 575,
+ 576,
+ 577,
+ 578,
+ 579,
+ 580,
+ 581,
+ 582,
+ 583,
+ 584,
+ 585,
+ 586,
+ 587,
+ 588,
+ 589,
+ 590,
+ 591,
+ 592,
+ 593,
+ 594,
+ 595,
+ 596,
+ 597,
+ 598,
+ 599,
+ 600,
+ 601,
+ 602,
+ 603,
+ 604,
+ 605,
+ 606,
+ 607,
+ 608,
+ 609,
+ 610,
+ 611,
+ 612,
+ 613,
+ 614,
+ 615,
+ 616,
+ 617,
+ 618,
+ 619,
+ 620,
+ 621,
+ 622,
+ 623,
+ 624,
+ 625,
+ 626,
+ 627,
+ 628,
+ 629,
+ 630,
+ 631,
+ 632,
+ 633,
+ 634,
+ 635,
+ 636,
+ 637,
+ 638,
+ 639,
+ 640,
+ 641,
+ 642,
+ 643,
+ 644,
+ 645,
+ 646,
+ 647,
+ 648,
+ 649,
+ 650,
+ 651,
+ 652,
+ 653,
+ 654,
+ 655,
+ 656,
+ 657,
+ 658,
+ 659,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dorothy[] =
+{
+ 468,
+ 469,
+ 470,
+ 471,
+ 472,
+ 473,
+ 474,
+ 475,
+ 476,
+ 477,
+ 478,
+ 479,
+ 480,
+ 481,
+ 482,
+ 483,
+ 484,
+ 485,
+ 486,
+ 487,
+ 488,
+ 489,
+ 490,
+ 491,
+ 492,
+ 493,
+ 494,
+ 495,
+ 496,
+ 497,
+ 498,
+ 499,
+ 500,
+ 501,
+ 502,
+ 503,
+ 504,
+ 505,
+ 506,
+ 507,
+ 508,
+ 509,
+ 510,
+ 511,
+ 512,
+ 513,
+ 514,
+ 515,
+ 516,
+ 517,
+ 518,
+ 519,
+ 520,
+ 521,
+ 522,
+ 523,
+ 524,
+ 525,
+ 526,
+ 527,
+ 528,
+ 529,
+ 530,
+ 531,
+ 532,
+ 533,
+ 534,
+ 535,
+ 536,
+ 537,
+ 538,
+ 539,
+ 540,
+ 541,
+ 542,
+ 543,
+ 544,
+ 545,
+ 546,
+ 547,
+ 548,
+ 549,
+ 550,
+ 551,
+ 552,
+ 553,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 560,
+ 561,
+ 562,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Piper[] =
+{
+ 372,
+ 373,
+ 374,
+ 375,
+ 376,
+ 377,
+ 378,
+ 379,
+ 380,
+ 381,
+ 382,
+ 383,
+ 384,
+ 385,
+ 386,
+ 387,
+ 388,
+ 389,
+ 390,
+ 391,
+ 392,
+ 393,
+ 394,
+ 395,
+ 396,
+ 397,
+ 398,
+ 399,
+ 400,
+ 401,
+ 402,
+ 403,
+ 404,
+ 405,
+ 406,
+ 407,
+ 408,
+ 409,
+ 410,
+ 411,
+ 412,
+ 413,
+ 414,
+ 415,
+ 416,
+ 417,
+ 418,
+ 419,
+ 420,
+ 421,
+ 422,
+ 423,
+ 424,
+ 425,
+ 426,
+ 427,
+ 428,
+ 429,
+ 430,
+ 431,
+ 432,
+ 433,
+ 434,
+ 435,
+ 436,
+ 437,
+ 438,
+ 439,
+ 440,
+ 441,
+ 442,
+ 443,
+ 444,
+ 445,
+ 446,
+ 447,
+ 448,
+ 449,
+ 450,
+ 451,
+ 452,
+ 453,
+ 454,
+ 455,
+ 456,
+ 457,
+ 458,
+ 459,
+ 460,
+ 461,
+ 462,
+ 463,
+ 464,
+ 465,
+ 466,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Finn[] =
+{
+ 317,
+ 371,
+ 373,
+ 377,
+ 390,
+ 392,
+ 399,
+ 431,
+ 452,
+ 456,
+ 469,
+ 475,
+ 486,
+ 488,
+ 495,
+ 527,
+ 548,
+ 552,
+ 565,
+ 569,
+ 573,
+ 576,
+ 580,
+ 582,
+ 584,
+ 591,
+ 592,
+ 601,
+ 602,
+ 610,
+ 621,
+ 623,
+ 626,
+ 631,
+ 634,
+ 640,
+ 641,
+ 644,
+ 648,
+ 650,
+ 651,
+ 653,
+ 655,
+ 661,
+ 665,
+ 669,
+ 672,
+ 676,
+ 678,
+ 680,
+ 687,
+ 688,
+ 697,
+ 698,
+ 706,
+ 717,
+ 719,
+ 722,
+ 727,
+ 730,
+ 736,
+ 737,
+ 740,
+ 744,
+ 746,
+ 747,
+ 749,
+ 751,
+ 808,
+ 809,
+ 810,
+ 811,
+ 816,
+ 817,
+ 818,
+ 819,
+ 820,
+ 821,
+ 822,
+ 823,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Samir[] =
+{
+ 317,
+ 371,
+ 373,
+ 377,
+ 390,
+ 392,
+ 399,
+ 431,
+ 452,
+ 456,
+ 469,
+ 475,
+ 486,
+ 488,
+ 495,
+ 527,
+ 548,
+ 552,
+ 565,
+ 569,
+ 573,
+ 576,
+ 580,
+ 582,
+ 584,
+ 591,
+ 592,
+ 601,
+ 602,
+ 610,
+ 621,
+ 623,
+ 626,
+ 631,
+ 634,
+ 640,
+ 641,
+ 644,
+ 648,
+ 650,
+ 651,
+ 653,
+ 655,
+ 661,
+ 665,
+ 669,
+ 672,
+ 676,
+ 678,
+ 680,
+ 687,
+ 688,
+ 697,
+ 698,
+ 706,
+ 717,
+ 719,
+ 722,
+ 727,
+ 730,
+ 736,
+ 737,
+ 740,
+ 744,
+ 746,
+ 747,
+ 749,
+ 751,
+ 808,
+ 809,
+ 810,
+ 811,
+ 816,
+ 817,
+ 818,
+ 819,
+ 820,
+ 821,
+ 822,
+ 823,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Fiona[] =
+{
+ 317,
+ 371,
+ 373,
+ 377,
+ 381,
+ 384,
+ 388,
+ 390,
+ 392,
+ 399,
+ 400,
+ 409,
+ 410,
+ 418,
+ 429,
+ 431,
+ 434,
+ 439,
+ 442,
+ 448,
+ 449,
+ 452,
+ 456,
+ 458,
+ 459,
+ 461,
+ 463,
+ 469,
+ 471,
+ 475,
+ 479,
+ 483,
+ 486,
+ 488,
+ 495,
+ 496,
+ 505,
+ 506,
+ 514,
+ 525,
+ 527,
+ 530,
+ 535,
+ 538,
+ 544,
+ 545,
+ 548,
+ 552,
+ 554,
+ 555,
+ 557,
+ 559,
+ 565,
+ 569,
+ 582,
+ 584,
+ 591,
+ 623,
+ 644,
+ 648,
+ 661,
+ 665,
+ 678,
+ 680,
+ 687,
+ 719,
+ 740,
+ 744,
+ 808,
+ 809,
+ 810,
+ 811,
+ 816,
+ 817,
+ 818,
+ 819,
+ 820,
+ 821,
+ 822,
+ 823,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gloria[] =
+{
+ 317,
+ 371,
+ 373,
+ 377,
+ 381,
+ 384,
+ 388,
+ 390,
+ 392,
+ 399,
+ 400,
+ 409,
+ 410,
+ 418,
+ 429,
+ 431,
+ 434,
+ 439,
+ 442,
+ 448,
+ 449,
+ 452,
+ 456,
+ 458,
+ 459,
+ 461,
+ 463,
+ 469,
+ 471,
+ 475,
+ 479,
+ 483,
+ 486,
+ 488,
+ 495,
+ 496,
+ 505,
+ 506,
+ 514,
+ 525,
+ 527,
+ 530,
+ 535,
+ 538,
+ 544,
+ 545,
+ 548,
+ 552,
+ 554,
+ 555,
+ 557,
+ 559,
+ 565,
+ 569,
+ 582,
+ 584,
+ 591,
+ 623,
+ 644,
+ 648,
+ 661,
+ 665,
+ 678,
+ 680,
+ 687,
+ 719,
+ 740,
+ 744,
+ 808,
+ 809,
+ 810,
+ 811,
+ 816,
+ 817,
+ 818,
+ 819,
+ 820,
+ 821,
+ 822,
+ 823,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Nico[] =
+{
+ 660,
+ 661,
+ 662,
+ 663,
+ 664,
+ 665,
+ 666,
+ 667,
+ 668,
+ 669,
+ 670,
+ 671,
+ 672,
+ 673,
+ 674,
+ 675,
+ 676,
+ 677,
+ 678,
+ 679,
+ 680,
+ 681,
+ 682,
+ 683,
+ 684,
+ 685,
+ 686,
+ 687,
+ 688,
+ 689,
+ 690,
+ 691,
+ 692,
+ 693,
+ 694,
+ 695,
+ 696,
+ 697,
+ 698,
+ 699,
+ 700,
+ 701,
+ 702,
+ 703,
+ 704,
+ 705,
+ 706,
+ 707,
+ 708,
+ 709,
+ 710,
+ 711,
+ 712,
+ 713,
+ 714,
+ 715,
+ 716,
+ 717,
+ 718,
+ 719,
+ 720,
+ 721,
+ 722,
+ 723,
+ 724,
+ 725,
+ 726,
+ 727,
+ 728,
+ 729,
+ 730,
+ 731,
+ 732,
+ 733,
+ 734,
+ 735,
+ 736,
+ 737,
+ 738,
+ 739,
+ 740,
+ 741,
+ 742,
+ 743,
+ 744,
+ 745,
+ 746,
+ 747,
+ 748,
+ 749,
+ 750,
+ 751,
+ 752,
+ 753,
+ 754,
+ 755,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Jeremy[] =
+{
+ 564,
+ 565,
+ 566,
+ 567,
+ 568,
+ 569,
+ 570,
+ 571,
+ 572,
+ 573,
+ 574,
+ 575,
+ 576,
+ 577,
+ 578,
+ 579,
+ 580,
+ 581,
+ 582,
+ 583,
+ 584,
+ 585,
+ 586,
+ 587,
+ 588,
+ 589,
+ 590,
+ 591,
+ 592,
+ 593,
+ 594,
+ 595,
+ 596,
+ 597,
+ 598,
+ 599,
+ 600,
+ 601,
+ 602,
+ 603,
+ 604,
+ 605,
+ 606,
+ 607,
+ 608,
+ 609,
+ 610,
+ 611,
+ 612,
+ 613,
+ 614,
+ 615,
+ 616,
+ 617,
+ 618,
+ 619,
+ 620,
+ 621,
+ 622,
+ 623,
+ 624,
+ 625,
+ 626,
+ 627,
+ 628,
+ 629,
+ 630,
+ 631,
+ 632,
+ 633,
+ 634,
+ 635,
+ 636,
+ 637,
+ 638,
+ 639,
+ 640,
+ 641,
+ 642,
+ 643,
+ 644,
+ 645,
+ 646,
+ 647,
+ 648,
+ 649,
+ 650,
+ 651,
+ 652,
+ 653,
+ 654,
+ 655,
+ 656,
+ 657,
+ 658,
+ 659,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Caitlin[] =
+{
+ 468,
+ 469,
+ 470,
+ 471,
+ 472,
+ 473,
+ 474,
+ 475,
+ 476,
+ 477,
+ 478,
+ 479,
+ 480,
+ 481,
+ 482,
+ 483,
+ 484,
+ 485,
+ 486,
+ 487,
+ 488,
+ 489,
+ 490,
+ 491,
+ 492,
+ 493,
+ 494,
+ 495,
+ 496,
+ 497,
+ 498,
+ 499,
+ 500,
+ 501,
+ 502,
+ 503,
+ 504,
+ 505,
+ 506,
+ 507,
+ 508,
+ 509,
+ 510,
+ 511,
+ 512,
+ 513,
+ 514,
+ 515,
+ 516,
+ 517,
+ 518,
+ 519,
+ 520,
+ 521,
+ 522,
+ 523,
+ 524,
+ 525,
+ 526,
+ 527,
+ 528,
+ 529,
+ 530,
+ 531,
+ 532,
+ 533,
+ 534,
+ 535,
+ 536,
+ 537,
+ 538,
+ 539,
+ 540,
+ 541,
+ 542,
+ 543,
+ 544,
+ 545,
+ 546,
+ 547,
+ 548,
+ 549,
+ 550,
+ 551,
+ 552,
+ 553,
+ 554,
+ 555,
+ 556,
+ 557,
+ 558,
+ 559,
+ 560,
+ 561,
+ 562,
+ 563,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Reena[] =
+{
+ 372,
+ 373,
+ 374,
+ 375,
+ 376,
+ 377,
+ 378,
+ 379,
+ 380,
+ 381,
+ 382,
+ 383,
+ 384,
+ 385,
+ 386,
+ 387,
+ 388,
+ 389,
+ 390,
+ 391,
+ 392,
+ 393,
+ 394,
+ 395,
+ 396,
+ 397,
+ 398,
+ 399,
+ 400,
+ 401,
+ 402,
+ 403,
+ 404,
+ 405,
+ 406,
+ 407,
+ 408,
+ 409,
+ 410,
+ 411,
+ 412,
+ 413,
+ 414,
+ 415,
+ 416,
+ 417,
+ 418,
+ 419,
+ 420,
+ 421,
+ 422,
+ 423,
+ 424,
+ 425,
+ 426,
+ 427,
+ 428,
+ 429,
+ 430,
+ 431,
+ 432,
+ 433,
+ 434,
+ 435,
+ 436,
+ 437,
+ 438,
+ 439,
+ 440,
+ 441,
+ 442,
+ 443,
+ 444,
+ 445,
+ 446,
+ 447,
+ 448,
+ 449,
+ 450,
+ 451,
+ 452,
+ 453,
+ 454,
+ 455,
+ 456,
+ 457,
+ 458,
+ 459,
+ 460,
+ 461,
+ 462,
+ 463,
+ 464,
+ 465,
+ 466,
+ 467,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Avery[] =
+{
+ 21,
+ 238,
+ 282,
+ 303,
+ 331,
+ 343,
+ 368,
+ 369,
+ 383,
+ 417,
+ 423,
+ 424,
+ 432,
+ 481,
+ 513,
+ 519,
+ 520,
+ 528,
+ 575,
+ 609,
+ 615,
+ 616,
+ 624,
+ 671,
+ 705,
+ 711,
+ 712,
+ 720,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Liam[] =
+{
+ 21,
+ 238,
+ 282,
+ 303,
+ 331,
+ 343,
+ 368,
+ 369,
+ 383,
+ 417,
+ 423,
+ 424,
+ 432,
+ 481,
+ 513,
+ 519,
+ 520,
+ 528,
+ 575,
+ 609,
+ 615,
+ 616,
+ 624,
+ 671,
+ 705,
+ 711,
+ 712,
+ 720,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Theo[] =
+{
+ 333,
+ 347,
+ 350,
+ 354,
+ 358,
+ 361,
+ 362,
+ 363,
+ 364,
+ 371,
+ 381,
+ 384,
+ 429,
+ 434,
+ 439,
+ 479,
+ 483,
+ 525,
+ 530,
+ 535,
+ 573,
+ 576,
+ 621,
+ 626,
+ 631,
+ 669,
+ 672,
+ 717,
+ 722,
+ 727,
+ 816,
+ 817,
+ 818,
+ 819,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Bailey[] =
+{
+ 333,
+ 347,
+ 350,
+ 354,
+ 358,
+ 361,
+ 362,
+ 363,
+ 364,
+ 371,
+ 381,
+ 384,
+ 429,
+ 434,
+ 439,
+ 479,
+ 483,
+ 525,
+ 530,
+ 535,
+ 573,
+ 576,
+ 621,
+ 626,
+ 631,
+ 669,
+ 672,
+ 717,
+ 722,
+ 727,
+ 816,
+ 817,
+ 818,
+ 819,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Hugo[] =
+{
+ 383,
+ 386,
+ 402,
+ 403,
+ 416,
+ 417,
+ 423,
+ 432,
+ 433,
+ 435,
+ 450,
+ 466,
+ 481,
+ 482,
+ 498,
+ 499,
+ 512,
+ 513,
+ 519,
+ 528,
+ 529,
+ 531,
+ 546,
+ 562,
+ 575,
+ 578,
+ 594,
+ 595,
+ 608,
+ 609,
+ 615,
+ 624,
+ 625,
+ 627,
+ 642,
+ 658,
+ 671,
+ 674,
+ 690,
+ 691,
+ 704,
+ 705,
+ 711,
+ 720,
+ 721,
+ 723,
+ 738,
+ 754,
+ 762,
+ 763,
+ 764,
+ 773,
+ 774,
+ 775,
+ 784,
+ 785,
+ 786,
+ 795,
+ 796,
+ 797,
+ 832,
+ 833,
+ 834,
+ 835,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Bryce[] =
+{
+ 383,
+ 386,
+ 402,
+ 403,
+ 416,
+ 417,
+ 423,
+ 432,
+ 433,
+ 435,
+ 450,
+ 466,
+ 481,
+ 482,
+ 498,
+ 499,
+ 512,
+ 513,
+ 519,
+ 528,
+ 529,
+ 531,
+ 546,
+ 562,
+ 575,
+ 578,
+ 594,
+ 595,
+ 608,
+ 609,
+ 615,
+ 624,
+ 625,
+ 627,
+ 642,
+ 658,
+ 671,
+ 674,
+ 690,
+ 691,
+ 704,
+ 705,
+ 711,
+ 720,
+ 721,
+ 723,
+ 738,
+ 754,
+ 762,
+ 763,
+ 764,
+ 773,
+ 774,
+ 775,
+ 784,
+ 785,
+ 786,
+ 795,
+ 796,
+ 797,
+ 832,
+ 833,
+ 834,
+ 835,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gideon[] =
+{
+ 441,
+ 445,
+ 448,
+ 449,
+ 451,
+ 453,
+ 454,
+ 455,
+ 458,
+ 537,
+ 541,
+ 544,
+ 545,
+ 547,
+ 549,
+ 550,
+ 551,
+ 554,
+ 633,
+ 637,
+ 640,
+ 641,
+ 643,
+ 645,
+ 646,
+ 647,
+ 650,
+ 729,
+ 733,
+ 736,
+ 737,
+ 739,
+ 741,
+ 742,
+ 743,
+ 746,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Triston[] =
+{
+ 441,
+ 445,
+ 448,
+ 449,
+ 451,
+ 453,
+ 454,
+ 455,
+ 458,
+ 537,
+ 541,
+ 544,
+ 545,
+ 547,
+ 549,
+ 550,
+ 551,
+ 554,
+ 633,
+ 637,
+ 640,
+ 641,
+ 643,
+ 645,
+ 646,
+ 647,
+ 650,
+ 729,
+ 733,
+ 736,
+ 737,
+ 739,
+ 741,
+ 742,
+ 743,
+ 746,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Charles[] =
+{
+ 352,
+ 381,
+ 391,
+ 393,
+ 396,
+ 398,
+ 407,
+ 422,
+ 426,
+ 443,
+ 447,
+ 479,
+ 487,
+ 489,
+ 492,
+ 494,
+ 503,
+ 518,
+ 522,
+ 539,
+ 543,
+ 573,
+ 583,
+ 585,
+ 588,
+ 590,
+ 599,
+ 614,
+ 618,
+ 635,
+ 639,
+ 669,
+ 679,
+ 681,
+ 684,
+ 686,
+ 695,
+ 710,
+ 714,
+ 731,
+ 735,
+ 756,
+ 757,
+ 758,
+ 767,
+ 768,
+ 769,
+ 778,
+ 779,
+ 780,
+ 789,
+ 790,
+ 791,
+ 870,
+ 871,
+ 872,
+ 873,
+ 874,
+ 875,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Raymond[] =
+{
+ 374,
+ 376,
+ 381,
+ 404,
+ 407,
+ 422,
+ 439,
+ 443,
+ 459,
+ 472,
+ 500,
+ 506,
+ 507,
+ 518,
+ 532,
+ 546,
+ 566,
+ 585,
+ 588,
+ 628,
+ 635,
+ 679,
+ 681,
+ 684,
+ 710,
+ 731,
+ 785,
+ 795,
+ 796,
+ 797,
+ 817,
+ 842,
+ 843,
+ 846,
+ 847,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dirk[] =
+{
+ 355,
+ 375,
+ 379,
+ 385,
+ 386,
+ 412,
+ 435,
+ 440,
+ 454,
+ 457,
+ 459,
+ 465,
+ 473,
+ 477,
+ 482,
+ 484,
+ 508,
+ 531,
+ 536,
+ 550,
+ 553,
+ 555,
+ 561,
+ 567,
+ 571,
+ 577,
+ 578,
+ 604,
+ 627,
+ 632,
+ 646,
+ 649,
+ 651,
+ 657,
+ 663,
+ 667,
+ 673,
+ 674,
+ 700,
+ 723,
+ 728,
+ 742,
+ 745,
+ 747,
+ 753,
+ 756,
+ 757,
+ 758,
+ 767,
+ 768,
+ 769,
+ 778,
+ 779,
+ 780,
+ 789,
+ 790,
+ 791,
+ 828,
+ 829,
+ 830,
+ 831,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Harold[] =
+{
+ 355,
+ 375,
+ 379,
+ 385,
+ 386,
+ 412,
+ 435,
+ 440,
+ 454,
+ 457,
+ 459,
+ 465,
+ 473,
+ 477,
+ 482,
+ 484,
+ 508,
+ 531,
+ 536,
+ 550,
+ 553,
+ 555,
+ 561,
+ 567,
+ 571,
+ 577,
+ 578,
+ 604,
+ 627,
+ 632,
+ 646,
+ 649,
+ 651,
+ 657,
+ 663,
+ 667,
+ 673,
+ 674,
+ 700,
+ 723,
+ 728,
+ 742,
+ 745,
+ 747,
+ 753,
+ 756,
+ 757,
+ 758,
+ 767,
+ 768,
+ 769,
+ 778,
+ 779,
+ 780,
+ 789,
+ 790,
+ 791,
+ 828,
+ 829,
+ 830,
+ 831,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Omar[] =
+{
+ 373,
+ 388,
+ 390,
+ 392,
+ 400,
+ 409,
+ 410,
+ 418,
+ 431,
+ 442,
+ 448,
+ 449,
+ 452,
+ 456,
+ 458,
+ 459,
+ 461,
+ 463,
+ 469,
+ 471,
+ 486,
+ 488,
+ 496,
+ 505,
+ 506,
+ 514,
+ 527,
+ 538,
+ 544,
+ 545,
+ 548,
+ 552,
+ 554,
+ 555,
+ 557,
+ 559,
+ 565,
+ 580,
+ 582,
+ 584,
+ 592,
+ 601,
+ 602,
+ 610,
+ 623,
+ 634,
+ 640,
+ 641,
+ 644,
+ 648,
+ 650,
+ 651,
+ 653,
+ 655,
+ 661,
+ 676,
+ 678,
+ 680,
+ 688,
+ 697,
+ 698,
+ 706,
+ 719,
+ 730,
+ 736,
+ 737,
+ 740,
+ 744,
+ 746,
+ 747,
+ 749,
+ 751,
+ 808,
+ 809,
+ 810,
+ 811,
+ 820,
+ 821,
+ 822,
+ 823,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Peter[] =
+{
+ 373,
+ 388,
+ 390,
+ 392,
+ 400,
+ 409,
+ 410,
+ 418,
+ 431,
+ 442,
+ 448,
+ 449,
+ 452,
+ 456,
+ 458,
+ 459,
+ 461,
+ 463,
+ 469,
+ 471,
+ 486,
+ 488,
+ 496,
+ 505,
+ 506,
+ 514,
+ 527,
+ 538,
+ 544,
+ 545,
+ 548,
+ 552,
+ 554,
+ 555,
+ 557,
+ 559,
+ 565,
+ 580,
+ 582,
+ 584,
+ 592,
+ 601,
+ 602,
+ 610,
+ 623,
+ 634,
+ 640,
+ 641,
+ 644,
+ 648,
+ 650,
+ 651,
+ 653,
+ 655,
+ 661,
+ 676,
+ 678,
+ 680,
+ 688,
+ 697,
+ 698,
+ 706,
+ 719,
+ 730,
+ 736,
+ 737,
+ 740,
+ 744,
+ 746,
+ 747,
+ 749,
+ 751,
+ 808,
+ 809,
+ 810,
+ 811,
+ 820,
+ 821,
+ 822,
+ 823,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dev[] =
+{
+ 372,
+ 387,
+ 402,
+ 403,
+ 413,
+ 414,
+ 416,
+ 417,
+ 427,
+ 428,
+ 432,
+ 433,
+ 435,
+ 440,
+ 450,
+ 466,
+ 468,
+ 470,
+ 498,
+ 499,
+ 509,
+ 510,
+ 512,
+ 513,
+ 523,
+ 524,
+ 528,
+ 529,
+ 531,
+ 536,
+ 546,
+ 562,
+ 564,
+ 579,
+ 594,
+ 595,
+ 605,
+ 606,
+ 608,
+ 609,
+ 619,
+ 620,
+ 624,
+ 625,
+ 627,
+ 632,
+ 642,
+ 658,
+ 660,
+ 675,
+ 690,
+ 691,
+ 701,
+ 702,
+ 704,
+ 705,
+ 715,
+ 716,
+ 720,
+ 721,
+ 723,
+ 728,
+ 738,
+ 754,
+ 832,
+ 833,
+ 834,
+ 835,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Corey[] =
+{
+ 372,
+ 387,
+ 402,
+ 403,
+ 413,
+ 414,
+ 416,
+ 417,
+ 427,
+ 428,
+ 432,
+ 433,
+ 435,
+ 440,
+ 450,
+ 466,
+ 468,
+ 470,
+ 498,
+ 499,
+ 509,
+ 510,
+ 512,
+ 513,
+ 523,
+ 524,
+ 528,
+ 529,
+ 531,
+ 536,
+ 546,
+ 562,
+ 564,
+ 579,
+ 594,
+ 595,
+ 605,
+ 606,
+ 608,
+ 609,
+ 619,
+ 620,
+ 624,
+ 625,
+ 627,
+ 632,
+ 642,
+ 658,
+ 660,
+ 675,
+ 690,
+ 691,
+ 701,
+ 702,
+ 704,
+ 705,
+ 715,
+ 716,
+ 720,
+ 721,
+ 723,
+ 728,
+ 738,
+ 754,
+ 832,
+ 833,
+ 834,
+ 835,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Andre[] =
+{
+ 374,
+ 378,
+ 415,
+ 419,
+ 421,
+ 426,
+ 430,
+ 444,
+ 451,
+ 454,
+ 455,
+ 464,
+ 472,
+ 476,
+ 511,
+ 515,
+ 517,
+ 522,
+ 526,
+ 540,
+ 547,
+ 550,
+ 551,
+ 560,
+ 566,
+ 570,
+ 607,
+ 611,
+ 613,
+ 618,
+ 622,
+ 636,
+ 643,
+ 646,
+ 647,
+ 656,
+ 662,
+ 666,
+ 703,
+ 707,
+ 709,
+ 714,
+ 718,
+ 732,
+ 739,
+ 742,
+ 743,
+ 752,
+ 800,
+ 801,
+ 802,
+ 803,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Ferris[] =
+{
+ 374,
+ 378,
+ 415,
+ 419,
+ 421,
+ 426,
+ 430,
+ 444,
+ 451,
+ 454,
+ 455,
+ 464,
+ 472,
+ 476,
+ 511,
+ 515,
+ 517,
+ 522,
+ 526,
+ 540,
+ 547,
+ 550,
+ 551,
+ 560,
+ 566,
+ 570,
+ 607,
+ 611,
+ 613,
+ 618,
+ 622,
+ 636,
+ 643,
+ 646,
+ 647,
+ 656,
+ 662,
+ 666,
+ 703,
+ 707,
+ 709,
+ 714,
+ 718,
+ 732,
+ 739,
+ 742,
+ 743,
+ 752,
+ 800,
+ 801,
+ 802,
+ 803,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Alivia[] =
+{
+ 399,
+ 400,
+ 409,
+ 422,
+ 438,
+ 441,
+ 445,
+ 448,
+ 449,
+ 451,
+ 452,
+ 454,
+ 455,
+ 489,
+ 492,
+ 493,
+ 503,
+ 526,
+ 532,
+ 535,
+ 536,
+ 560,
+ 573,
+ 583,
+ 590,
+ 592,
+ 608,
+ 611,
+ 620,
+ 651,
+ 682,
+ 688,
+ 714,
+ 729,
+ 732,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Paige[] =
+{
+ 399,
+ 400,
+ 409,
+ 422,
+ 438,
+ 441,
+ 445,
+ 448,
+ 449,
+ 451,
+ 452,
+ 454,
+ 455,
+ 489,
+ 492,
+ 493,
+ 503,
+ 526,
+ 532,
+ 535,
+ 536,
+ 560,
+ 573,
+ 583,
+ 590,
+ 592,
+ 608,
+ 611,
+ 620,
+ 651,
+ 682,
+ 688,
+ 714,
+ 729,
+ 732,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Anya[] =
+{
+ 442,
+ 443,
+ 444,
+ 446,
+ 447,
+ 538,
+ 539,
+ 540,
+ 542,
+ 543,
+ 634,
+ 635,
+ 636,
+ 638,
+ 639,
+ 730,
+ 731,
+ 732,
+ 734,
+ 735,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Dawn[] =
+{
+ 377,
+ 381,
+ 410,
+ 421,
+ 422,
+ 443,
+ 456,
+ 460,
+ 461,
+ 471,
+ 472,
+ 473,
+ 484,
+ 491,
+ 502,
+ 503,
+ 507,
+ 508,
+ 515,
+ 520,
+ 540,
+ 549,
+ 569,
+ 574,
+ 583,
+ 586,
+ 601,
+ 622,
+ 624,
+ 639,
+ 644,
+ 655,
+ 734,
+ 804,
+ 810,
+ 815,
+ 823,
+ 831,
+ 843,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Abby[] =
+{
+ 185,
+ 290,
+ 313,
+ 334,
+ 348,
+ 359,
+ 360,
+ 377,
+ 380,
+ 382,
+ 385,
+ 394,
+ 395,
+ 398,
+ 400,
+ 401,
+ 404,
+ 409,
+ 410,
+ 416,
+ 437,
+ 438,
+ 439,
+ 441,
+ 445,
+ 446,
+ 453,
+ 475,
+ 478,
+ 480,
+ 484,
+ 490,
+ 491,
+ 494,
+ 496,
+ 497,
+ 500,
+ 505,
+ 506,
+ 512,
+ 533,
+ 534,
+ 535,
+ 537,
+ 541,
+ 542,
+ 549,
+ 569,
+ 572,
+ 574,
+ 577,
+ 586,
+ 587,
+ 590,
+ 592,
+ 593,
+ 596,
+ 601,
+ 602,
+ 608,
+ 629,
+ 630,
+ 631,
+ 633,
+ 637,
+ 638,
+ 645,
+ 665,
+ 668,
+ 670,
+ 673,
+ 682,
+ 683,
+ 686,
+ 688,
+ 689,
+ 692,
+ 697,
+ 698,
+ 704,
+ 725,
+ 726,
+ 727,
+ 729,
+ 733,
+ 734,
+ 741,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ -1
+};
+
+const u16 gBattleFrontierTrainerMons_Gretel[] =
+{
+ 185,
+ 290,
+ 313,
+ 334,
+ 348,
+ 359,
+ 360,
+ 377,
+ 380,
+ 382,
+ 385,
+ 394,
+ 395,
+ 398,
+ 400,
+ 401,
+ 404,
+ 409,
+ 410,
+ 416,
+ 437,
+ 438,
+ 439,
+ 441,
+ 445,
+ 446,
+ 453,
+ 475,
+ 478,
+ 480,
+ 484,
+ 490,
+ 491,
+ 494,
+ 496,
+ 497,
+ 500,
+ 505,
+ 506,
+ 512,
+ 533,
+ 534,
+ 535,
+ 537,
+ 541,
+ 542,
+ 549,
+ 569,
+ 572,
+ 574,
+ 577,
+ 586,
+ 587,
+ 590,
+ 592,
+ 593,
+ 596,
+ 601,
+ 602,
+ 608,
+ 629,
+ 630,
+ 631,
+ 633,
+ 637,
+ 638,
+ 645,
+ 665,
+ 668,
+ 670,
+ 673,
+ 682,
+ 683,
+ 686,
+ 688,
+ 689,
+ 692,
+ 697,
+ 698,
+ 704,
+ 725,
+ 726,
+ 727,
+ 729,
+ 733,
+ 734,
+ 741,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ -1
+};
diff --git a/src/data/battle_frontier/battle_frontier_trainers.h b/src/data/battle_frontier/battle_frontier_trainers.h
new file mode 100644
index 000000000..faef40656
--- /dev/null
+++ b/src/data/battle_frontier/battle_frontier_trainers.h
@@ -0,0 +1,2403 @@
+const struct BattleFrontierTrainer gBattleFrontierTrainers[] =
+{
+ [0] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("BRADY"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_NEVER, EC_WORD_GOING, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_STRONG, EC_WORD_AREN_T, EC_WORD_I, EC_WORD_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_WHAT, EC_WORD_QUES, 0xFFFF, EC_WORD_BUT, EC_WORD_HOW, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Brady
+ },
+ [1] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("CONNER"),
+ .speechBefore = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_WORD_BUG, EC_WORD_ME, 0xFFFF, 0xFFFF},
+ .speechWin = {EC_WORD_A, EC_WORD_WIN, EC_WORD_IS, EC_WORD_JUST, EC_WORD_AWESOME, 0xFFFF},
+ .speechLose = {EC_WORD_DARN, EC_WORD_ELLIPSIS, EC_WORD_LOSING, EC_WORD_DOES, EC_WORD_BUG, EC_WORD_ME},
+ .monSets = gBattleFrontierTrainerMons_Conner
+ },
+ [2] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("BRADLEY"),
+ .speechBefore = {EC_WORD_HEY_THERE, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_MY, EC_WORD_OPPONENT, EC_WORD_TODAY},
+ .speechWin = {EC_WORD_HAHAHA, EC_WORD_EXCL, 0xFFFF, EC_WORD_SEE_YA, EC_WORD_LATER, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_TOMORROW, EC_WORD_IS, EC_WORD_WHEN, EC_WORD_WE, EC_WORD_REALLY, EC_WORD_BATTLE},
+ .monSets = gBattleFrontierTrainerMons_Bradley
+ },
+ [3] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("CYBIL"),
+ .speechBefore = {EC_WORD_YOU_RE, EC_WORD_REALLY, EC_WORD_NOT_VERY, EC_WORD_SCARY, EC_WORD_AT, EC_WORD_ALL},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_SAD, EC_WORD_TO, EC_WORD_SEE, EC_WORD_YOU, EC_MOVE2(STRUGGLE)},
+ .speechLose = {EC_WORD_THIS, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_HAPPENING, EC_WORD_TO_ME, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Cybil
+ },
+ [4] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("RODETTE"),
+ .speechBefore = {EC_WORD_OH, EC_WORD_THIS, EC_WORD_IS, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_INCREDIBLE, EC_WORD_HOW, EC_WORD_STRONG, EC_WORD_I_AM, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_OH_DEAR, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_JUST, EC_WORD_NO, EC_WORD_GOOD},
+ .monSets = gBattleFrontierTrainerMons_Rodette
+ },
+ [5] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("PEGGY"),
+ .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_TO, EC_WORD_BE, EC_WORD_DESTROYED, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_HAHAHA, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_I_AM, EC_WORD_LOLLING, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_SAD, EC_WORD_THANKS, EC_WORD_TO, EC_WORD_YOU},
+ .monSets = gBattleFrontierTrainerMons_Peggy
+ },
+ [6] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_M,
+ .trainerName = _("KEITH"),
+ .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_JUST, EC_WORD_STUDY, EC_WORD_YOU, EC_WORD_KNOW},
+ .speechWin = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_STUDY, EC_WORD_ENOUGH, EC_WORD_ELLIPSIS, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MORE, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Keith
+ },
+ [7] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_M,
+ .trainerName = _("GRAYSON"),
+ .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_BATTLE, EC_WORD_ISN_T, EC_WORD_CHILD_S_PLAY, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_DONE, EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_WE, EC_WORD_WERE, EC_WORD_LIKE, EC_WORD_TOYS, EC_WORD_TO, EC_WORD_YOU},
+ .monSets = gBattleFrontierTrainerMons_Grayson
+ },
+ [8] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_M,
+ .trainerName = _("GLENN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_COOL, EC_WORD_IF_I_WIN, 0xFFFF},
+ .speechWin = {EC_WORD_COOL, EC_WORD_EXCL, 0xFFFF, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_TO, EC_WORD_BE, EC_WORD_COOL},
+ .monSets = gBattleFrontierTrainerMons_Glenn
+ },
+ [9] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .trainerName = _("LILIANA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_GIVE_UP, EC_WORD_UNTIL, EC_WORD_I, EC_WORD_WIN},
+ .speechWin = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NO, EC_WORD_SURRENDER, EC_WORD_IN, EC_WORD_ME},
+ .speechLose = {EC_WORD_THAT_S, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_GIVE_UP, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Liliana
+ },
+ [10] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .trainerName = _("ELISE"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_IS, EC_WORD_FROM, EC_WORD_MY, EC_WORD_FATHER},
+ .speechWin = {EC_WORD_I, EC_WORD_WIN, EC_WORD_EXCL, EC_WORD_FATHER, EC_WORD_I_VE, EC_WORD_WON},
+ .speechLose = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_FATHER, EC_WORD_FOR, EC_WORD_I_VE, EC_WORD_LOST},
+ .monSets = gBattleFrontierTrainerMons_Elise
+ },
+ [11] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .trainerName = _("ZOEY"),
+ .speechBefore = {EC_WORD_PLEASE, EC_WORD_BATTLE, EC_WORD_LIKE, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_IT},
+ .speechWin = {EC_WORD_THANK_YOU, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_THANK_YOU, EC_WORD_SO, EC_WORD_MUCH},
+ .speechLose = {EC_WORD_WERE, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_BEING, EC_WORD_SERIOUS, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Zoey
+ },
+ [12] = {
+ .facilityClass = FACILITY_CLASS_RICH_BOY,
+ .trainerName = _("MANUEL"),
+ .speechBefore = {EC_WORD_ME, EC_WORD_LOSE, EC_WORD_QUES, EC_WORD_THAT_S, EC_WORD_PREPOSTEROUS, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_NATURALLY, EC_WORD_I, EC_WORD_WIN, 0xFFFF, 0xFFFF, 0xFFFF},
+ .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_LOST, EC_WORD_MOTHER},
+ .monSets = gBattleFrontierTrainerMons_Manuel
+ },
+ [13] = {
+ .facilityClass = FACILITY_CLASS_RICH_BOY,
+ .trainerName = _("RUSS"),
+ .speechBefore = {EC_WORD_THEY, EC_WORD_ALL, EC_WORD_WANT, EC_WORD_MY, EC_WORD_FABULOUS, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_WORD_HAVE, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_PARTY},
+ .speechLose = {EC_WORD_HOW, EC_WORD_COULD, EC_WORD_YOU, EC_WORD_DO, EC_WORD_THAT, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Russ
+ },
+ [14] = {
+ .facilityClass = FACILITY_CLASS_RICH_BOY,
+ .trainerName = _("DUSTIN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_COOL, EC_WORD_POKEMON, 0xFFFF},
+ .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_MYSELF, EC_WORD_WHEN_I_WIN, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_MYSELF, EC_WORD_IF_I_LOSE, EC_WORD_TOO, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Dustin
+ },
+ [15] = {
+ .facilityClass = FACILITY_CLASS_LADY,
+ .trainerName = _("TINA"),
+ .speechBefore = {EC_WORD_IF_I_WIN, EC_WORD_YOU, EC_WORD_CAN, EC_WORD_HAVE, EC_WORD_A, EC_MOVE2(SWEET_KISS)},
+ .speechWin = {EC_WORD_HERE_IT_IS, EC_WORD_YOUR, EC_MOVE2(SWEET_KISS), EC_WORD_FROM, EC_WORD_MY, EC_POKEMON2(JYNX)},
+ .speechLose = {EC_WORD_YOU, EC_WORD_WANT, EC_WORD_A, EC_MOVE(SWIFT), EC_MOVE2(MEGA_KICK), EC_WORD_INSTEAD},
+ .monSets = gBattleFrontierTrainerMons_Tina
+ },
+ [16] = {
+ .facilityClass = FACILITY_CLASS_LADY,
+ .trainerName = _("GILLIAN"),
+ .speechBefore = {EC_WORD_THE, EC_WORD_GOURMET, EC_WORD_THING, EC_WORD_IS, EC_WORD_SO, EC_WORD_YESTERDAY},
+ .speechWin = {EC_WORD_POKEMON, EC_WORD_NEVER, EC_WORD_GO, EC_WORD_OUT, EC_WORD_OF, EC_WORD_FASHION},
+ .speechLose = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_WORD_DISAPPOINT, EC_WORD_ME, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Gillian
+ },
+ [17] = {
+ .facilityClass = FACILITY_CLASS_LADY,
+ .trainerName = _("ZOE"),
+ .speechBefore = {EC_WORD_I, EC_WORD_HAVEN_T, EC_WORD_A, EC_WORD_WORRY, EC_WORD_AT, EC_WORD_ALL},
+ .speechWin = {EC_WORD_LIFE, EC_WORD_IS, EC_WORD_ALWAYS, EC_WORD_GOOD, EC_WORD_TO_ME, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_WORRY, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_SKILL},
+ .monSets = gBattleFrontierTrainerMons_Zoe
+ },
+ [18] = {
+ .facilityClass = FACILITY_CLASS_CAMPER,
+ .trainerName = _("CHEN"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_TOTALLY, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_TODAY},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_READY, EC_WORD_TO, EC_WORD_GO, EC_WORD_ON, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_MY, EC_MOVE(FOCUS_ENERGY), EC_WORD_AND, EC_WORD_TOUGHNESS},
+ .monSets = gBattleFrontierTrainerMons_Chen
+ },
+ [19] = {
+ .facilityClass = FACILITY_CLASS_CAMPER,
+ .trainerName = _("AL"),
+ .speechBefore = {EC_WORD_YOUR, EC_WORD_LOOK, EC_WORD_SAYS, EC_WORD_YOU_RE, EC_WORD_REALLY, EC_WORD_TOUGH},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_ME, EC_WORD_WHO_IS, EC_WORD_REALLY, EC_WORD_TOUGH, 0xFFFF},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_RIGHT, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_REALLY, EC_WORD_TOUGH},
+ .monSets = gBattleFrontierTrainerMons_Al
+ },
+ [20] = {
+ .facilityClass = FACILITY_CLASS_CAMPER,
+ .trainerName = _("MITCH"),
+ .speechBefore = {EC_WORD_MOTHER, EC_WORD_NATURE, EC_WORD_IS, EC_WORD_MY, EC_WORD_ALLY, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_WAS, EC_WORD_THAT, EC_WORD_ENOUGH, EC_WORD_FOR, EC_WORD_YOU, EC_WORD_QUES},
+ .speechLose = {EC_WORD_MOTHER, EC_WORD_NATURE, EC_WORD_DIDN_T, EC_WORD_LET_ME_WIN, EC_WORD_QUES, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Mitch
+ },
+ [21] = {
+ .facilityClass = FACILITY_CLASS_PICNICKER,
+ .trainerName = _("ANNE"),
+ .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_LET_S, EC_WORD_BATTLE, EC_WORD_NOW},
+ .speechWin = {EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_IS, EC_WORD_OVERWHELMING, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Anne
+ },
+ [22] = {
+ .facilityClass = FACILITY_CLASS_PICNICKER,
+ .trainerName = _("ALIZE"),
+ .speechBefore = {EC_WORD_CUTE, EC_WORD_AND, EC_WORD_AWFULLY, EC_WORD_STRONG, EC_WORD_THAT_S, EC_WORD_ME},
+ .speechWin = {EC_WORD_YUP, EC_WORD_I_AM, EC_WORD_CUTE, EC_WORD_AND, EC_WORD_AWFULLY, EC_WORD_STRONG},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_WEAK, EC_WORD_ELLIPSIS, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_CUTE},
+ .monSets = gBattleFrontierTrainerMons_Alize
+ },
+ [23] = {
+ .facilityClass = FACILITY_CLASS_PICNICKER,
+ .trainerName = _("LAUREN"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_OLD, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_ALSO, EC_WORD_GOOD},
+ .speechWin = {EC_WORD_I, EC_WORD_SAID, EC_WORD_I_WAS, EC_WORD_OLD, EC_WORD_BUT, EC_WORD_GOOD},
+ .speechLose = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_WEIRD, EC_WORD_DREAM, EC_WORD_THAT_WAS, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Lauren
+ },
+ [24] = {
+ .facilityClass = FACILITY_CLASS_TUBER_M,
+ .trainerName = _("KIPP"),
+ .speechBefore = {EC_WORD_IF_I_WIN, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GO, EC_MOVE2(SURF)},
+ .speechWin = {EC_WORD_YEAH, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_OFF, EC_WORD_TO, EC_MOVE2(SURF)},
+ .speechLose = {EC_WORD_OH, EC_WORD_NO, EC_WORD_EXCL, EC_WORD_A, EC_MOVE(WHIRLPOOL), EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Kipp
+ },
+ [25] = {
+ .facilityClass = FACILITY_CLASS_TUBER_M,
+ .trainerName = _("JASON"),
+ .speechBefore = {EC_WORD_TEACH, EC_WORD_ME, EC_WORD_A, EC_WORD_GOOD, EC_WORD_STRATEGY, 0xFFFF},
+ .speechWin = {EC_WORD_THAT_WAS, EC_WORD_YOUR, EC_WORD_GOOD, EC_WORD_STRATEGY, EC_WORD_QUES_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_WOW, EC_WORD_THAT, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_STRATEGY},
+ .monSets = gBattleFrontierTrainerMons_Jason
+ },
+ [26] = {
+ .facilityClass = FACILITY_CLASS_TUBER_M,
+ .trainerName = _("JOHN"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_PRETTY, EC_WORD_NEW, EC_WORD_TRAINER, 0xFFFF},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_NEW, EC_WORD_BUT, EC_WORD_I, EC_WORD_WON, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_NEW, EC_WORD_SO, EC_WORD_WHAT, EC_WORD_IF_I_LOSE, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_John
+ },
+ [27] = {
+ .facilityClass = FACILITY_CLASS_TUBER_F,
+ .trainerName = _("ANN"),
+ .speechBefore = {EC_WORD_IT_S, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_IT, EC_WORD_REALLY, EC_WORD_IS},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_HAPPY, EC_WORD_I, EC_WORD_CAN, EC_WORD_CRY},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SAD, EC_WORD_I, EC_WORD_WILL, EC_WORD_CRY},
+ .monSets = gBattleFrontierTrainerMons_Ann
+ },
+ [28] = {
+ .facilityClass = FACILITY_CLASS_TUBER_F,
+ .trainerName = _("EILEEN"),
+ .speechBefore = {EC_WORD_LET_S, EC_WORD_PRETEND, EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_OK_QUES},
+ .speechWin = {EC_WORD_SO, EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_FEELING},
+ .speechLose = {EC_WORD_AN, EC_WORD_ADULT, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Eileen
+ },
+ [29] = {
+ .facilityClass = FACILITY_CLASS_TUBER_F,
+ .trainerName = _("CARLIE"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_SUMMER, EC_WORD_VACATION, EC_WORD_IS, EC_WORD_FOR, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_MY, EC_WORD_SUMMER, EC_WORD_VACATION, EC_WORD_WILL, EC_WORD_BE, EC_WORD_AWESOME},
+ .speechLose = {EC_WORD_I, EC_WORD_CAN_T_WIN, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Carlie
+ },
+ [30] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_M,
+ .trainerName = _("GORDON"),
+ .speechBefore = {EC_WORD_VICTORY, EC_WORD_WILL, EC_WORD_COME, EC_WORD_TO_ME, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_OH_YEAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_REALLY, EC_WORD_WON},
+ .speechLose = {EC_WORD_NOTHING, EC_WORD_IS, EC_WORD_WORKING, EC_WORD_OUT, EC_WORD_FOR, EC_WORD_ME},
+ .monSets = gBattleFrontierTrainerMons_Gordon
+ },
+ [31] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_M,
+ .trainerName = _("AYDEN"),
+ .speechBefore = {EC_WORD_COME_ON, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_HOT, EC_WORD_BATTLE},
+ .speechWin = {EC_WORD_I, EC_WORD_NEED, EC_WORD_WATER, EC_WORD_TO, EC_WORD_COOL, EC_WORD_DOWN},
+ .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_ICE, EC_WORD_COLD},
+ .monSets = gBattleFrontierTrainerMons_Ayden
+ },
+ [32] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_M,
+ .trainerName = _("MARCO"),
+ .speechBefore = {EC_WORD_I, EC_MOVE2(SURF), EC_WORD_IN, EC_WORD_THE, EC_WORD_WINTER, EC_WORD_TOO},
+ .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GO, EC_MOVE2(SURF), EC_WORD_RIGHT, EC_WORD_NOW},
+ .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_MOVE2(BEAT_UP), EC_WORD_MY, EC_MOVE2(SURF), EC_WORD_BOARD},
+ .monSets = gBattleFrontierTrainerMons_Marco
+ },
+ [33] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_F,
+ .trainerName = _("CIERRA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_SYNCHRONIZE, EC_WORD_MY, EC_WORD_SWIFT_SWIM},
+ .speechWin = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_SYNCHRONIZE, EC_WORD_WITH, EC_WORD_ME, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_SYNCHRONIZE, EC_WORD_BETTER, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Cierra
+ },
+ [34] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_F,
+ .trainerName = _("MARCY"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_KNOCKOUT, EC_WORD_YOU, EC_WORD_CAN_T_WIN, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_AFTER, EC_WORD_ALL, EC_WORD_I_AM, EC_WORD_A, EC_WORD_KNOCKOUT, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_THAT_S, EC_WORD_NOT, EC_WORD_THE, EC_WORD_KNOCKOUT, EC_WORD_I, EC_WORD_MEAN},
+ .monSets = gBattleFrontierTrainerMons_Marcy
+ },
+ [35] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_F,
+ .trainerName = _("KATHY"),
+ .speechBefore = {EC_WORD_I_VE, EC_WORD_WON, EC_WORD_EVERY, EC_WORD_MATCH, EC_WORD_TODAY, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_SO, EC_WORD_GREAT, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_HUH_QUES, EC_WORD_I, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_HAVE, EC_WORD_LOST},
+ .monSets = gBattleFrontierTrainerMons_Kathy
+ },
+ [36] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .trainerName = _("PEYTON"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_NEVER, EC_WORD_DISAPPOINTED, EC_WORD_WITH, EC_WORD_MY, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_IF, EC_WORD_WE, EC_WORD_WIN, EC_WORD_TOGETHER},
+ .speechLose = {EC_WORD_I, EC_WORD_ADORE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_MORE, EC_WORD_IF_I_LOSE},
+ .monSets = gBattleFrontierTrainerMons_Peyton
+ },
+ [37] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .trainerName = _("JULIAN"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_ADORE, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_RIGHT, EC_WORD_QUES},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOTALLY, EC_WORD_OUT, EC_WORD_OF, EC_WORD_THE, EC_WORD_QUESTION},
+ .speechLose = {EC_WORD_YOU, EC_WORD_DO, EC_WORD_ADORE, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Julian
+ },
+ [38] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .trainerName = _("QUINN"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_BUT, EC_WORD_A, EC_WORD_DREAM},
+ .speechWin = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_BEAUTIFUL, EC_WORD_DREAM, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWFUL, EC_MOVE(NIGHTMARE), EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Quinn
+ },
+ [39] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .trainerName = _("HAYLEE"),
+ .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_I_AM, EC_WORD_FEELING},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_OVERWHELMING, EC_WORD_JOY, EC_WORD_OVER, EC_WORD_THIS},
+ .speechLose = {EC_WORD_DESTROYED, EC_WORD_IS, EC_WORD_THE, EC_WORD_WAY, EC_WORD_I_AM, EC_WORD_FEELING},
+ .monSets = gBattleFrontierTrainerMons_Haylee
+ },
+ [40] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .trainerName = _("AMANDA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_COME, EC_WORD_FROM, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_FAMILY},
+ .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_WORD_TREASURE, EC_WORD_THIS, EC_WORD_WIN, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO_HOME, EC_WORD_RIGHT, EC_WORD_NOW},
+ .monSets = gBattleFrontierTrainerMons_Amanda
+ },
+ [41] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .trainerName = _("STACY"),
+ .speechBefore = {EC_WORD_ALL, EC_WORD_POKEMON, EC_WORD_HAVE, EC_WORD_THEIR, EC_WORD_OWN, EC_WORD_CUTE_CHARM},
+ .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_WHAT, EC_WORD_I, EC_WORD_MEAN, EC_WORD_QUES},
+ .speechLose = {EC_WORD_SHOULD, EC_WORD_I, EC_WORD_NOT, EC_WORD_ADORE, EC_WORD_POKEMON, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Stacy
+ },
+ [42] = {
+ .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M,
+ .trainerName = _("RAFAEL"),
+ .speechBefore = {EC_WORD_COME_ON, EC_WORD_EXCL, EC_WORD_LET_S, EC_WORD_SEE, EC_WORD_SOME, EC_WORD_SPIRIT},
+ .speechWin = {EC_WORD_THAT_S_IT_EXCL, EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_SPIRIT, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_WELL, EC_WORD_SO, EC_WORD_MUCH, EC_WORD_FOR, EC_WORD_OUR, EC_WORD_SPIRIT},
+ .monSets = gBattleFrontierTrainerMons_Rafael
+ },
+ [43] = {
+ .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M,
+ .trainerName = _("OLIVER"),
+ .speechBefore = {EC_WORD_A, EC_WORD_GENIUS, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_WORKS, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_MORE, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_THAN, EC_WORD_I_AM},
+ .monSets = gBattleFrontierTrainerMons_Oliver
+ },
+ [44] = {
+ .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M,
+ .trainerName = _("PAYTON"),
+ .speechBefore = {EC_WORD_I, EC_WORD_TRAIN, EC_WORD_FROM, EC_WORD_THE, EC_WORD_EGG, EC_WORD_UP},
+ .speechWin = {EC_WORD_WELL, EC_WORD_DONE, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_A, EC_MOVE2(SOFT_BOILED), EC_WORD_LOSS, EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Payton
+ },
+ [45] = {
+ .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .trainerName = _("PAMELA"),
+ .speechBefore = {EC_WORD_ALL, EC_WORD_POKEMON, EC_WORD_ADORE, EC_WORD_A, EC_WORD_KIND, EC_WORD_TRAINER},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_YOU, EC_WORD_LOST, 0xFFFF},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_KIND, EC_WORD_AND, EC_WORD_YOU_RE, EC_WORD_ALSO, EC_WORD_STRONG},
+ .monSets = gBattleFrontierTrainerMons_Pamela
+ },
+ [46] = {
+ .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .trainerName = _("ELIZA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_ADORE, EC_WORD_POKEMON, EC_WORD_LIKE, EC_WORD_MY, EC_WORD_CHILDREN},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_HAPPY, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POKEMON},
+ .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, EC_WORD_ABOUT, EC_WORD_THIS},
+ .monSets = gBattleFrontierTrainerMons_Eliza
+ },
+ [47] = {
+ .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .trainerName = _("MARISA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_TO, EC_WORD_BATTLE, EC_WORD_SERIOUSLY, 0xFFFF},
+ .speechWin = {EC_WORD_PROMISE, EC_WORD_ME, EC_WORD_YOU, EC_WORD_WILL, EC_WORD_DO, EC_WORD_BETTER},
+ .speechLose = {EC_WORD_PROMISE, EC_WORD_ME, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_PLEASE, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Marisa
+ },
+ [48] = {
+ .facilityClass = FACILITY_CLASS_BUG_CATCHER,
+ .trainerName = _("LEWIS"),
+ .speechBefore = {EC_WORD_A_LITTLE, EC_WORD_BUG, EC_WORD_IS, EC_WORD_SCARY, EC_WORD_QUES, EC_WORD_HAHAHA},
+ .speechWin = {EC_WORD_LOOK, EC_WORD_LOOK, EC_WORD_EXCL, EC_WORD_A, EC_WORD_SCARY, EC_WORD_BUG},
+ .speechLose = {EC_WORD_OH, EC_WORD_A, EC_WORD_BUG, EC_WORD_ISN_T, EC_WORD_SCARY, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Lewis
+ },
+ [49] = {
+ .facilityClass = FACILITY_CLASS_BUG_CATCHER,
+ .trainerName = _("YOSHI"),
+ .speechBefore = {EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_LOVEY_DOVEY},
+ .speechWin = {EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_THE, EC_WORD_BEST, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_IGNORANT, EC_WORD_ABOUT, EC_WORD_BUG, EC_WORD_POKEMON, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Yoshi
+ },
+ [50] = {
+ .facilityClass = FACILITY_CLASS_BUG_CATCHER,
+ .trainerName = _("DESTIN"),
+ .speechBefore = {EC_WORD_IT_S, EC_WORD_WAY, EC_WORD_TOO, EC_WORD_HOT, EC_WORD_HERE, 0xFFFF},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_ABOUT, EC_WORD_TO, EC_MOVE(OVERHEAT), 0xFFFF, 0xFFFF},
+ .speechLose = {EC_WORD_PLEASE, EC_WORD_I, EC_WORD_NEED, EC_WORD_SOME, EC_WORD_WATER, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Destin
+ },
+ [51] = {
+ .facilityClass = FACILITY_CLASS_NINJA_BOY,
+ .trainerName = _("KEON"),
+ .speechBefore = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_BUT, EC_WORD_HERE_I_COME, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_FOR, EC_WORD_MY, EC_WORD_OVERWHELMING, EC_WORD_POWER},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Keon
+ },
+ [52] = {
+ .facilityClass = FACILITY_CLASS_NINJA_BOY,
+ .trainerName = _("STUART"),
+ .speechBefore = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_YOU, EC_WORD_A, EC_WORD_HOT, EC_WORD_BATTLE},
+ .speechWin = {EC_WORD_THE, EC_WORD_MASTER, EC_WORD_OF, EC_WORD_COOL, EC_WORD_THAT_S, EC_WORD_ME},
+ .speechLose = {EC_WORD_I, EC_WORD_SEE, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_SO, EC_WORD_COOL},
+ .monSets = gBattleFrontierTrainerMons_Stuart
+ },
+ [53] = {
+ .facilityClass = FACILITY_CLASS_NINJA_BOY,
+ .trainerName = _("NESTOR"),
+ .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_A, EC_WORD_REALLY, EC_WORD_SMOOTH, EC_WORD_MOVE},
+ .speechWin = {EC_WORD_THERE, EC_WORD_WAS, EC_WORD_NOTHING, EC_WORD_SMOOTH, EC_WORD_ABOUT, EC_WORD_THAT},
+ .speechLose = {EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_ARE, EC_WORD_SMOOTH, EC_WORD_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Nestor
+ },
+ [54] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("DERRICK"),
+ .speechBefore = {EC_WORD_LET_S, EC_WORD_SEE, EC_WORD_YOU, EC_MOVE2(MEDITATE), EC_WORD_LIKE, EC_WORD_ME},
+ .speechWin = {EC_WORD_HOW, EC_WORD_I, EC_MOVE2(MEDITATE), EC_WORD_IS, EC_WORD_JUST, EC_WORD_BEAUTIFUL},
+ .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_MOVE2(MEDITATE), EC_WORD_FOR, EC_WORD_A, EC_MOVE2(CALM_MIND)},
+ .monSets = gBattleFrontierTrainerMons_Derrick
+ },
+ [55] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("BRYSON"),
+ .speechBefore = {EC_MOVE2(POISON_POWDER), EC_WORD_IS, EC_WORD_IN, EC_WORD_OUR, EC_MOVE2(COTTON_SPORE), EC_WORD_MOVE},
+ .speechWin = {EC_WORD_HOW_DO, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_OUR, EC_MOVE2(POISON_POWDER), EC_WORD_QUES},
+ .speechLose = {EC_WORD_MY, EC_MOVE2(COTTON_SPORE), EC_WORD_WAS, EC_WORD_USELESS, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Bryson
+ },
+ [56] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("CLAYTON"),
+ .speechBefore = {EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF, EC_WORD_WHERE, EC_WORD_IS_IT_QUES, 0xFFFF},
+ .speechWin = {EC_WORD_WHERE, EC_WORD_IS_IT_QUES, EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_MY, EC_WORD_POKENAV},
+ .speechLose = {EC_WORD_WHERE, EC_WORD_IS_IT_QUES, EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_MY, EC_WORD_SENSE},
+ .monSets = gBattleFrontierTrainerMons_Clayton
+ },
+ [57] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("TRENTON"),
+ .speechBefore = {EC_WORD_COME_OVER, EC_WORD_FOR, EC_WORD_SOME, EC_WORD_TASTY, EC_WORD_WATER, 0xFFFF},
+ .speechWin = {EC_WORD_MMM, EC_WORD_DO, EC_WORD_YOU, EC_WORD_WANT, EC_WORD_SOME, EC_WORD_QUES},
+ .speechLose = {EC_WORD_I, EC_WORD_GOT, EC_WORD_THIS, EC_WORD_TASTY, EC_WORD_WATER, EC_WORD_SHOPPING},
+ .monSets = gBattleFrontierTrainerMons_Trenton
+ },
+ [58] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("JENSON"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_DOWNCAST},
+ .speechWin = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_THE, EC_MOVE(CUT)},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_TRAINER, EC_WORD_WHO_IS, EC_WORD_FEELING, EC_WORD_DOWNCAST},
+ .monSets = gBattleFrontierTrainerMons_Jenson
+ },
+ [59] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("WESLEY"),
+ .speechBefore = {EC_POKEMON2(MEW), EC_POKEMON2(MEW), EC_WORD_IS, EC_WORD_HOW, EC_WORD_I, EC_WORD_CRY},
+ .speechWin = {EC_WORD_YES, EC_WORD_I, EC_WORD_KNOW, EC_WORD_I_AM, EC_WORD_CUTE, EC_WORD_EXCL},
+ .speechLose = {EC_POKEMON2(MEW), EC_POKEMON2(MEW), EC_WORD_EXCL, EC_POKEMON2(MEW), EC_WORD_EXCL_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Wesley
+ },
+ [60] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("ANTON"),
+ .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_FOR, EC_WORD_ME, EC_WORD_TO, EC_MOVE(THRASH)},
+ .speechWin = {EC_WORD_WAHAHAHA, EC_WORD_EXCL, EC_WORD_SORRY, EC_WORD_ABOUT, EC_WORD_THAT, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_TOUGH, EC_WORD_LOSS, EC_WORD_TO, EC_MOVE2(SWALLOW)},
+ .monSets = gBattleFrontierTrainerMons_Anton
+ },
+ [61] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("LAWSON"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_YOUNG, EC_WORD_AT, EC_WORD_HEART, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_NOT, EC_WORD_COOL, EC_WORD_EXCL, EC_WORD_NOT, EC_WORD_AT, EC_WORD_ALL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_OLD, EC_WORD_AND, EC_WORD_FEELING, EC_WORD_SHAKY, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Lawson
+ },
+ [62] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("SAMMY"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_PARTY, EC_WORD_IS, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK},
+ .speechWin = {EC_WORD_MY, EC_WORD_PARTY, EC_WORD_IS, EC_WORD_JUST, EC_WORD_INCREDIBLE, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_CRY, EC_WORD_FOR, EC_WORD_MY, EC_WORD_PARTY, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Sammy
+ },
+ [63] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("ARNIE"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_I, EC_WORD_HAVE, EC_WORD_NO, EC_WORD_RIVAL},
+ .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE},
+ .speechLose = {EC_WORD_NO, EC_WORD_EXCL, EC_WORD_I, EC_WORD_WON_T, EC_WORD_ACCEPT, EC_WORD_THIS},
+ .monSets = gBattleFrontierTrainerMons_Arnie
+ },
+ [64] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("ADRIAN"),
+ .speechBefore = {EC_WORD_YAHOO, EC_WORD_EXCL, 0xFFFF, EC_WORD_YAHOO, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_THANK_YOU, EC_WORD_EXCL, 0xFFFF, EC_WORD_THANK_YOU, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_GOOD_BYE, EC_WORD_EXCL, 0xFFFF, EC_WORD_GOOD_BYE, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Adrian
+ },
+ [65] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("TRISTAN"),
+ .speechBefore = {EC_WORD_CONFUSED, EC_WORD_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_A, EC_WORD_GENIUS},
+ .speechWin = {EC_WORD_SEE, EC_WORD_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_A, EC_WORD_GENIUS},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_IN, EC_WORD_BATTLE},
+ .monSets = gBattleFrontierTrainerMons_Tristan
+ },
+ [66] = {
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .trainerName = _("JULIANA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_THINK, EC_WORD_I_AM, EC_WORD_SHOPPING, EC_WORD_TOO, EC_WORD_MUCH},
+ .speechWin = {EC_WORD_BUT, EC_WORD_I, EC_WORD_WANT, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_PLUSH_DOLL},
+ .speechLose = {EC_WORD_I, EC_WORD_SO, EC_WORD_WANT, EC_WORD_ANOTHER, EC_WORD_POKEMON, EC_WORD_PLUSH_DOLL},
+ .monSets = gBattleFrontierTrainerMons_Juliana
+ },
+ [67] = {
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .trainerName = _("RYLEE"),
+ .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THAT, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_GUTS},
+ .speechWin = {EC_WORD_BYE_BYE, EC_WORD_EXCL, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_NO, EC_WORD_GUTS},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_GUTSY, EC_WORD_ELLIPSIS, EC_WORD_YOU_RE, EC_WORD_QUITE, EC_WORD_SUPER},
+ .monSets = gBattleFrontierTrainerMons_Rylee
+ },
+ [68] = {
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .trainerName = _("CHELSEA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_SERIOUSLY, EC_WORD_MEAN, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_THAT_WAS, EC_WORD_MY, EC_WORD_WILL, EC_WORD_TO, EC_WORD_WIN, 0xFFFF},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_FAR, EC_WORD_TOO_STRONG, EC_WORD_FOR, EC_WORD_ME, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Chelsea
+ },
+ [69] = {
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .trainerName = _("DANELA"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_MUST_BE, EC_WORD_MY, EC_WORD_OPPONENT, EC_WORD_NOW, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_OH_DEAR, EC_WORD_TOO_WEAK, EC_WORD_EXCL, EC_WORD_DON_T, EC_WORD_GIVE_UP, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_GOOD, EC_WORD_AND, EC_WORD_THIS, EC_WORD_IS, EC_WORD_GOOD_BYE},
+ .monSets = gBattleFrontierTrainerMons_Danela
+ },
+ [70] = {
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .trainerName = _("LIZBETH"),
+ .speechBefore = {EC_WORD_IF_I_LOSE, EC_WORD_YOU, EC_WORD_CAN, EC_WORD_HAVE, EC_WORD_A, EC_MOVE2(PRESENT)},
+ .speechWin = {EC_WORD_HERE_IT_IS, EC_WORD_A_LITTLE, EC_WORD_PRAISE, EC_WORD_AS, EC_WORD_YOUR, EC_MOVE2(PRESENT)},
+ .speechLose = {EC_WORD_YOUR, EC_MOVE2(PRESENT), EC_WORD_QUES_EXCL, EC_WORD_HERE_IT_IS, EC_WORD_A, EC_MOVE(DOUBLE_SLAP)},
+ .monSets = gBattleFrontierTrainerMons_Lizbeth
+ },
+ [71] = {
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .trainerName = _("AMELIA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_CUTE, EC_WORD_FASHION, EC_WORD_APPEAL},
+ .speechWin = {EC_WORD_YOUR, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_A, EC_WORD_DISASTER},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_AWFUL, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_HOME},
+ .monSets = gBattleFrontierTrainerMons_Amelia
+ },
+ [72] = {
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .trainerName = _("JILLIAN"),
+ .speechBefore = {EC_WORD_WHAT, EC_WORD_IS, EC_WORD_THAT, EC_WORD_I, EC_WORD_SMELL, EC_WORD_QUES},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_THE, EC_MOVE(SWEET_SCENT), EC_WORD_OF, EC_WORD_TASTY, EC_WORD_WATER},
+ .speechLose = {EC_WORD_IT_S, EC_WORD_YOUR, EC_WORD_OFFENSIVE, EC_WORD_STENCH, EC_WORD_THAT_S, EC_WORD_WHAT},
+ .monSets = gBattleFrontierTrainerMons_Jillian
+ },
+ [73] = {
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .trainerName = _("ABBIE"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_TRY, EC_WORD_MY, EC_WORD_SECRET, EC_MOVE(AROMATHERAPY), EC_WORD_OK_QUES},
+ .speechWin = {EC_WORD_MY, EC_MOVE(AROMATHERAPY), EC_WORD_IS, EC_WORD_TERRIBLE, EC_WORD_FOR, EC_WORD_YOU},
+ .speechLose = {EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_SMELL, EC_WORD_A, EC_WORD_THING, EC_WORD_QUES_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Abbie
+ },
+ [74] = {
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .trainerName = _("BRIANA"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_BOY, EC_WORD_FRIEND, EC_WORD_WORKS, EC_WORD_TOO, EC_WORD_MUCH},
+ .speechWin = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_MISS, EC_WORD_HIM, EC_WORD_MORE, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_LONESOME, EC_WORD_WITHOUT, EC_WORD_HIM, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Briana
+ },
+ [75] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("ANTONIO"),
+ .speechBefore = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_TO, EC_WORD_GO, EC_WORD_GO},
+ .speechWin = {EC_WORD_BUT, EC_WORD_I, EC_WORD_DON_T, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_DANCE},
+ .speechLose = {EC_WORD_GO, EC_WORD_GO, EC_WORD_ELLIPSIS, EC_WORD_JUST, EC_MOVE(FLAIL), EC_WORD_ABOUT},
+ .monSets = gBattleFrontierTrainerMons_Antonio
+ },
+ [76] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("JADEN"),
+ .speechBefore = {EC_WORD_HELLO, EC_WORD_I, EC_WORD_THINK, EC_WORD_I, EC_WORD_ADORE, EC_WORD_YOU},
+ .speechWin = {EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_MOVE(THRASH), EC_WORD_IN, EC_MOVE2(FRUSTRATION)},
+ .speechLose = {EC_WORD_THIS_IS_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_GOOD_BYE, EC_WORD_FOREVER, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Jaden
+ },
+ [77] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("DAKOTA"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_DANCE, EC_WORD_WITH, EC_WORD_POWER},
+ .speechWin = {EC_WORD_GOT, EC_WORD_IT, EC_WORD_QUES, EC_WORD_DANCE, EC_WORD_WITH, EC_WORD_POWER},
+ .speechLose = {EC_WORD_OKAY, EC_WORD_YOU, EC_WORD_UNDERSTAND, EC_WORD_ALL_RIGHT, EC_WORD_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Dakota
+ },
+ [78] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("BRAYDEN"),
+ .speechBefore = {EC_WORD_COLOR_CHANGE, EC_WORD_VERSION, EC_WORD_TOYS, EC_WORD_ARE, EC_WORD_USELESS, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_COLLECT, EC_WORD_NORMAL, EC_WORD_VERSION, EC_WORD_TOYS},
+ .speechLose = {EC_WORD_I, EC_MOVE2(ATTRACT), EC_WORD_COLOR_CHANGE, EC_WORD_VERSION, EC_WORD_TOYS, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Brayden
+ },
+ [79] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("CORSON"),
+ .speechBefore = {EC_WORD_I, EC_WORD_GET, EC_WORD_TO, EC_MOVE2(BEAT_UP), EC_WORD_ON, EC_WORD_YOU},
+ .speechWin = {EC_WORD_TOO, EC_WORD_EASY, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_COOL},
+ .speechLose = {EC_WORD_WHY, EC_WORD_QUES_EXCL, 0xFFFF, EC_WORD_I, EC_MOVE2(CURSE), EC_WORD_YOU},
+ .monSets = gBattleFrontierTrainerMons_Corson
+ },
+ [80] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("TREVIN"),
+ .speechBefore = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NONE, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_ME},
+ .speechWin = {EC_WORD_YES_SIR_EXCL, 0xFFFF, 0xFFFF, EC_WORD_I_AM, EC_WORD_THE, EC_WORD_BEST},
+ .speechLose = {EC_WORD_SERIOUS, EC_WORD_QUES_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Trevin
+ },
+ [81] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("PATRICK"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_PERFECT, EC_WORD_EXCL, EC_WORD_GIVE_UP, EC_WORD_NOW, 0xFFFF},
+ .speechWin = {EC_WORD_DON_T, EC_WORD_BE, EC_WORD_DISAPPOINTED, EC_WORD_I_AM, EC_WORD_PERFECT, 0xFFFF},
+ .speechLose = {EC_WORD_BUT, EC_WORD_HOW, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_PERFECT, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Patrick
+ },
+ [82] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("KADEN"),
+ .speechBefore = {EC_WORD_WHAT, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_UP, EC_WORD_TO, EC_WORD_QUES},
+ .speechWin = {EC_WORD_YOU, EC_WORD_WERE, EC_WORD_A, EC_WORD_SURPRISE, EC_WORD_TO_ME, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_WHO, EC_WORD_I_AM, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Kaden
+ },
+ [83] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("MAXWELL"),
+ .speechBefore = {EC_WORD_HEY_THERE, EC_WORD_WHO_IS, EC_WORD_YOUR, EC_WORD_RIVAL, EC_WORD_QUES, 0xFFFF},
+ .speechWin = {EC_WORD_MY, EC_WORD_RIVAL, EC_WORD_IS, EC_WORD_MY, EC_WORD_GIRL, EC_WORD_FRIEND},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_MAKING, EC_WORD_YOU, EC_WORD_MY, EC_WORD_RIVAL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Maxwell
+ },
+ [84] = {
+ .facilityClass = FACILITY_CLASS_HIKER,
+ .trainerName = _("DARYL"),
+ .speechBefore = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_TO, EC_MOVE(CHARGE)},
+ .speechWin = {EC_WORD_AM, EC_WORD_I, EC_WORD_OVERWHELMING, EC_WORD_OR, EC_WORD_WHAT, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_A, EC_WORD_LEGEND, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Daryl
+ },
+ [85] = {
+ .facilityClass = FACILITY_CLASS_HIKER,
+ .trainerName = _("KENNETH"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_BETTER, EC_WORD_NOT, EC_MOVE2(SLACK_OFF), EC_WORD_WITH, EC_WORD_ME},
+ .speechWin = {EC_WORD_DID, EC_WORD_MY, EC_MOVE2(TAUNT), EC_WORD_INTIMIDATE, EC_WORD_YOU, EC_WORD_QUES},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Kenneth
+ },
+ [86] = {
+ .facilityClass = FACILITY_CLASS_HIKER,
+ .trainerName = _("RICH"),
+ .speechBefore = {EC_WORD_YOUR, EC_MOVE(FACADE), EC_WORD_DOESN_T, EC_MOVE2(TRICK), EC_WORD_ME, 0xFFFF},
+ .speechWin = {EC_WORD_SERIOUSLY, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_OK_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_REALLY, EC_WORD_TOUGH, EC_WORD_ON, EC_WORD_ME, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Rich
+ },
+ [87] = {
+ .facilityClass = FACILITY_CLASS_KINDLER,
+ .trainerName = _("CADEN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_DEFEATED, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_FIRE, EC_WORD_EXCL, 0xFFFF, EC_WORD_FIRE, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_SO, EC_WORD_HOT},
+ .monSets = gBattleFrontierTrainerMons_Caden
+ },
+ [88] = {
+ .facilityClass = FACILITY_CLASS_KINDLER,
+ .trainerName = _("MARLON"),
+ .speechBefore = {EC_WORD_A, EC_WORD_POKEDEX, EC_WORD_IS, EC_WORD_A_LITTLE, EC_WORD_RADIO, EC_WORD_QUES},
+ .speechWin = {EC_WORD_A_LITTLE, EC_WORD_RADIO, EC_WORD_HUH_QUES, EC_WORD_THAT_S, EC_WORD_TOTALLY, EC_WORD_COOL},
+ .speechLose = {EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_QUES, EC_WORD_IS, EC_WORD_POKENAV, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Marlon
+ },
+ [89] = {
+ .facilityClass = FACILITY_CLASS_KINDLER,
+ .trainerName = _("NASH"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_ON, EC_WORD_FIRE, EC_WORD_BABY, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_I, EC_WORD_LEFT, EC_WORD_YOU, EC_WORD_JUST, EC_WORD_AN, EC_MOVE2(EMBER)},
+ .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_WATER, EC_WORD_PLEASE},
+ .monSets = gBattleFrontierTrainerMons_Nash
+ },
+ [90] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ .trainerName = _("ROBBY"),
+ .speechBefore = {EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_HAPPY, EC_WORD_TO, EC_WORD_MEET_YOU, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_LEADER, EC_WORD_WITH, EC_WORD_REFRESHING, EC_WORD_SERENE_GRACE},
+ .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_MOVE(THRASH), EC_WORD_MY, EC_WORD_TOYS, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Robby
+ },
+ [91] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ .trainerName = _("REECE"),
+ .speechBefore = {EC_WORD_MY, EC_MOVE2(QUICK_ATTACK), EC_WORD_CAN, EC_WORD_BEAT, EC_WORD_A, EC_MOVE2(TELEPORT)},
+ .speechWin = {EC_WORD_LIKE, EC_WORD_I, EC_WORD_SAID, EC_WORD_I_AM, EC_WORD_DARN, EC_WORD_FAST},
+ .speechLose = {EC_WORD_I_WAS, EC_WORD_KIDDING, EC_WORD_ABOUT, EC_WORD_THAT, EC_MOVE2(TELEPORT), EC_WORD_THING},
+ .monSets = gBattleFrontierTrainerMons_Reece
+ },
+ [92] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ .trainerName = _("KATHRYN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_TRAIN, EC_WORD_GOOD, EC_WORD_ENOUGH, EC_WORD_QUES},
+ .speechWin = {EC_WORD_DON_T, EC_MOVE2(TAUNT), EC_WORD_ME, EC_WORD_LIKE, EC_WORD_THAT, EC_WORD_OK_QUES},
+ .speechLose = {EC_WORD_WHY, EC_WORD_COULDN_T, EC_WORD_I, EC_WORD_WIN, EC_WORD_THIS, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Kathryn
+ },
+ [93] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ .trainerName = _("ELLEN"),
+ .speechBefore = {EC_WORD_CRUSH, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_AN, EC_WORD_EGG, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_THAT_WAS, EC_WORD_A, EC_WORD_TASTY, EC_WORD_VICTORY, EC_WORD_FOR, EC_WORD_ME},
+ .speechLose = {EC_WORD_TOO, EC_WORD_TOUGH, EC_WORD_TO, EC_WORD_CRUSH, EC_WORD_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Ellen
+ },
+ [94] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("RAMON"),
+ .speechBefore = {EC_WORD_OKAY, EC_WORD_EXCL, 0xFFFF, EC_WORD_THIS, EC_WORD_IS, EC_WORD_PERFECTION},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_THAT, EC_WORD_I, EC_WORD_WON, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_SECRET, EC_WORD_WHY, EC_WORD_I_AM, EC_WORD_HAPPY},
+ .monSets = gBattleFrontierTrainerMons_Ramon
+ },
+ [95] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("ARTHUR"),
+ .speechBefore = {EC_WORD_HERE_I_COME, EC_WORD_FEELING, EC_WORD_READY, EC_WORD_FOR, EC_WORD_IT, EC_WORD_ALL},
+ .speechWin = {EC_WORD_THAT_S_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_THAT_WAS, EC_WORD_FABULOUS, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_NOT, EC_WORD_WHAT, EC_WORD_I, EC_WORD_NEED, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Arthur
+ },
+ [96] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("ALONDRA"),
+ .speechBefore = {EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_IS, EC_WORD_A, EC_WORD_GREAT, EC_WORD_DAY},
+ .speechWin = {EC_WORD_MY, EC_MOVE2(DIVE), EC_WORD_WILL, EC_WORD_BE, EC_WORD_A, EC_WORD_LEGEND},
+ .speechLose = {EC_WORD_MY, EC_MOVE2(DIVE), EC_WORD_LEFT, EC_WORD_ME, EC_WORD_COLD, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Alondra
+ },
+ [97] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("ADRIANA"),
+ .speechBefore = {EC_WORD_COME, EC_WORD_SEE, EC_WORD_AN, EC_WORD_INCREDIBLE, EC_WORD_SWIFT_SWIM, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_I, EC_WORD_MAKE, EC_WORD_IT, EC_WORD_LOOK, EC_WORD_SO, EC_WORD_EASY},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_MOVE2(BEAT_UP), EC_WORD_AND, EC_WORD_TIRED, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Adriana
+ },
+ [98] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .trainerName = _("MALIK"),
+ .speechBefore = {EC_WORD_OH, EC_WORD_NOT, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_PLEASE, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_I, EC_WORD_FINALLY, EC_WORD_WON, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_TIRED},
+ .speechLose = {EC_WORD_I, EC_WORD_FINALLY, EC_WORD_LOST, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_TIRED},
+ .monSets = gBattleFrontierTrainerMons_Malik
+ },
+ [99] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ .trainerName = _("JILL"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_MOVE2(QUICK_ATTACK), EC_WORD_TRAINER, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_THE, EC_MOVE2(QUICK_ATTACK), EC_WORD_TRAINER, EC_WORD_WINS, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_THE, EC_MOVE2(QUICK_ATTACK), EC_WORD_TRAINER, EC_WORD_GIVES, EC_WORD_UP, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Jill
+ },
+ [100] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ .trainerName = _("ERIK"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_SPEED_BOOST, EC_WORD_HERO, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_THANK_YOU, EC_WORD_FROM, EC_WORD_THE, EC_WORD_SPEED_BOOST, EC_WORD_HERO, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_NO, EC_WORD_EXCL_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Erik
+ },
+ [101] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ .trainerName = _("YAZMIN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_RATHER, EC_WORD_RUN, EC_WORD_THAN, EC_WORD_BIKE},
+ .speechWin = {EC_WORD_YES, EC_WORD_I, EC_WORD_WOULD, EC_WORD_MUCH, EC_WORD_RATHER, EC_WORD_RUN},
+ .speechLose = {EC_WORD_BYE_BYE, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_RUN_AWAY},
+ .monSets = gBattleFrontierTrainerMons_Yazmin
+ },
+ [102] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("JAMAL"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_BE, EC_WORD_A, EC_WORD_FATHER},
+ .speechWin = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_FOR, EC_WORD_MY, EC_WORD_BABY},
+ .speechLose = {EC_WORD_MY, EC_WORD_BABY, EC_WORD_WILL, EC_WORD_BE, EC_WORD_TOTALLY, EC_WORD_AWESOME},
+ .monSets = gBattleFrontierTrainerMons_Jamal
+ },
+ [103] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("LESLIE"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_BE, EC_WORD_A, EC_WORD_MOTHER},
+ .speechWin = {EC_WORD_A, EC_WORD_BABY, EC_WORD_WILL, EC_WORD_BE, EC_WORD_A_LITTLE, EC_WORD_CHALLENGE},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_HAPPY, EC_WORD_TO, EC_WORD_BE, EC_WORD_ANGRY},
+ .monSets = gBattleFrontierTrainerMons_Leslie
+ },
+ [104] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .trainerName = _("DAVE"),
+ .speechBefore = {EC_WORD_WHAT, EC_WORD_SHOULD, EC_WORD_I, EC_WORD_DO, EC_WORD_TODAY, EC_WORD_QUES},
+ .speechWin = {EC_WORD_I, EC_WORD_SHOULD, EC_WORD_ENJOY, EC_WORD_SOME, EC_WORD_SPORTS, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GO, EC_WORD_PLAY, EC_WORD_A, EC_WORD_GAME},
+ .monSets = gBattleFrontierTrainerMons_Dave
+ },
+ [105] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .trainerName = _("CARLO"),
+ .speechBefore = {EC_WORD_HAH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_I, EC_WORD_DO, EC_WORD_THINGS, EC_WORD_AT, EC_MOVE(EXTREME_SPEED), EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_LOST, EC_WORD_AT, EC_MOVE(EXTREME_SPEED), EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Carlo
+ },
+ [106] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ .trainerName = _("EMILIA"),
+ .speechBefore = {EC_WORD_ME, EC_WORD_WORRY, EC_WORD_QUES, EC_WORD_I, EC_WORD_HAVE, EC_WORD_NONE},
+ .speechWin = {EC_WORD_AHAHA, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_THAT_WAS, EC_WORD_FANTASTIC, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_AHAHA, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_THAT_WAS, EC_WORD_ENTERTAINING, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Emilia
+ },
+ [107] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ .trainerName = _("DALIA"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_IS, EC_WORD_VERY, EC_WORD_EXPENSIVE, 0xFFFF},
+ .speechWin = {EC_WORD_DON_T, EC_WORD_COME, EC_WORD_NEAR, EC_WORD_MY, EC_WORD_BIKE, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_IS, EC_WORD_MY, EC_WORD_BEST, EC_WORD_FRIEND},
+ .monSets = gBattleFrontierTrainerMons_Dalia
+ },
+ [108] = {
+ .facilityClass = FACILITY_CLASS_BLACK_BELT,
+ .trainerName = _("HITOMI"),
+ .speechBefore = {EC_WORD_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_HAH, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_WHAT, EC_WORD_QUES_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES_EXCL},
+ .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_EXCL_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Hitomi
+ },
+ [109] = {
+ .facilityClass = FACILITY_CLASS_BLACK_BELT,
+ .trainerName = _("RICARDO"),
+ .speechBefore = {EC_WORD_COME_ON, EC_WORD_EXCL, EC_WORD_PLAY, EC_WORD_TIME, EC_WORD_IS, EC_WORD_OVER},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_OUT, EC_WORD_OF, EC_WORD_HERE, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_PLEASE, EC_WORD_DON_T, EC_WORD_HIT, EC_WORD_ME, EC_WORD_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Ricardo
+ },
+ [110] = {
+ .facilityClass = FACILITY_CLASS_BLACK_BELT,
+ .trainerName = _("SHIZUKA"),
+ .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THAT, EC_WORD_YOU_RE, EC_WORD_SERIOUS, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_FORGET, EC_WORD_ABOUT, EC_WORD_YOU, 0xFFFF},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_PERFECT, EC_WORD_IN, EC_WORD_EVERY, EC_WORD_WAY, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Shizuka
+ },
+ [111] = {
+ .facilityClass = FACILITY_CLASS_BATTLE_GIRL,
+ .trainerName = _("JOANA"),
+ .speechBefore = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_RIGHT, EC_WORD_AWAY},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_WINNER, EC_WORD_HEAR, EC_WORD_ME, EC_MOVE2(ROAR)},
+ .speechLose = {EC_WORD_I, EC_WORD_REFUSE, EC_WORD_TO, EC_WORD_ACCEPT, EC_WORD_THAT, EC_MOVE(OUTRAGE)},
+ .monSets = gBattleFrontierTrainerMons_Joana
+ },
+ [112] = {
+ .facilityClass = FACILITY_CLASS_BATTLE_GIRL,
+ .trainerName = _("KELLY"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_NIGHT, EC_WORD_SCHOOL, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_SCARY},
+ .speechWin = {EC_WORD_A, EC_WORD_LADY, EC_WORD_GHOST, EC_WORD_APPEARS, EC_WORD_THERE, 0xFFFF},
+ .speechLose = {EC_WORD_THE, EC_WORD_HOME, EC_WORD_WORK, EC_WORD_IS, EC_WORD_AWFULLY, EC_WORD_SCARY},
+ .monSets = gBattleFrontierTrainerMons_Kelly
+ },
+ [113] = {
+ .facilityClass = FACILITY_CLASS_BATTLE_GIRL,
+ .trainerName = _("RAYNA"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_WHEN, EC_WORD_IT_S, EC_WORD_ABOUT, EC_WORD_POWER},
+ .speechWin = {EC_WORD_UNDERSTAND, EC_WORD_MY, EC_WORD_POWER, EC_WORD_NOW, EC_WORD_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_TERRIBLE, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_TERRIBLE, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Rayna
+ },
+ [114] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .trainerName = _("EVAN"),
+ .speechBefore = {EC_WORD_EVERY, EC_WORD_BATTLE, EC_WORD_HAS, EC_WORD_A, EC_WORD_SMELL, 0xFFFF},
+ .speechWin = {EC_WORD_OH, EC_WORD_EXCL, EC_WORD_THE, EC_MOVE(SWEET_SCENT), EC_WORD_OF, EC_WORD_VICTORY},
+ .speechLose = {EC_WORD_THE, EC_WORD_AWFUL, EC_WORD_STENCH, EC_WORD_OF, EC_WORD_A, EC_WORD_LOSS},
+ .monSets = gBattleFrontierTrainerMons_Evan
+ },
+ [115] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .trainerName = _("JORDAN"),
+ .speechBefore = {EC_WORD_GOOD, EC_WORD_EXCL, 0xFFFF, EC_WORD_COME_ON, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_ME, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_WHAT, EC_WORD_QUES_EXCL, 0xFFFF, EC_WORD_BUT, EC_WORD_HOW, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Jordan
+ },
+ [116] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .trainerName = _("JOEL"),
+ .speechBefore = {EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
+ .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
+ .speechLose = {EC_WORD_HAHAHA, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Joel
+ },
+ [117] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .trainerName = _("KRISTEN"),
+ .speechBefore = {EC_WORD_HAHAHA, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_A, EC_WORD_KID, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_JUST, EC_WORD_A_LITTLE, EC_WORD_KID, EC_WORD_AFTER, EC_WORD_ALL, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_A, EC_WORD_TOUGH, EC_WORD_KID, EC_WORD_HUH_QUES, EC_WORD_HUMPH, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Kristen
+ },
+ [118] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .trainerName = _("SELPHY"),
+ .speechBefore = {EC_WORD_HUH_QUES, EC_WORD_WHAT, EC_WORD_IS_IT_QUES, 0xFFFF, 0xFFFF, 0xFFFF},
+ .speechWin = {EC_WORD_OH, EC_WORD_YES, EC_WORD_EXCL, EC_WORD_WHY, EC_WORD_NOT, EC_WORD_QUES},
+ .speechLose = {EC_WORD_OH, EC_WORD_NO, EC_WORD_EXCL, EC_WORD_WHY, EC_WORD_NOT, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Selphy
+ },
+ [119] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .trainerName = _("CHLOE"),
+ .speechBefore = {EC_WORD_COME, EC_WORD_WE, EC_WORD_WILL, EC_WORD_DO, EC_WORD_BATTLE, EC_WORD_NOW},
+ .speechWin = {EC_WORD_MORE, EC_WORD_EXCL, 0xFFFF, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_OH, EC_WORD_EXCL, 0xFFFF, EC_WORD_STRONG, EC_WORD_YOU, EC_WORD_ARE},
+ .monSets = gBattleFrontierTrainerMons_Chloe
+ },
+ [120] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_M,
+ .trainerName = _("NORTON"),
+ .speechBefore = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_ONLY, EC_WORD_YOU, 0xFFFF, 0xFFFF},
+ .speechWin = {EC_WORD_EXCUSE_ME, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_PUSHOVER, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_SOME, EC_WORD_KIND, EC_WORD_OF, EC_WORD_AWESOME, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Norton
+ },
+ [121] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_M,
+ .trainerName = _("LUKAS"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_JOKING, EC_WORD_IS, EC_WORD_PRETTY, EC_WORD_TERRIBLE, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_YOUR, EC_WORD_ROCK_HEAD, EC_WORD_EXISTS, EC_WORD_TO, EC_WORD_SHINE, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOUR, EC_WORD_ROCK_HEAD, EC_WORD_COME, EC_WORD_TO, EC_WORD_SHINE, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Lukas
+ },
+ [122] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_M,
+ .trainerName = _("ZACH"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_EXCELLENT, EC_MOVE2(MIMIC), EC_WORD_OF, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_LIKE, EC_WORD_A_LITTLE, EC_POKEMON2(TOGEPI), EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_ANGRY, EC_WORD_LIKE, EC_WORD_A, EC_POKEMON2(MANKEY), EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Zach
+ },
+ [123] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_F,
+ .trainerName = _("KAITLYN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_CRUSH, EC_WORD_THINGS, EC_WORD_WITH, EC_WORD_PSYCHIC, EC_WORD_POWER},
+ .speechWin = {EC_WORD_MY, EC_WORD_VICTORY, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_THE, EC_WORD_NEWS},
+ .speechLose = {EC_WORD_NO, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_WORD_THIS, EC_WORD_WON_T, EC_WORD_DO},
+ .monSets = gBattleFrontierTrainerMons_Kaitlyn
+ },
+ [124] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_F,
+ .trainerName = _("BREANNA"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_WILL, EC_WORD_CRUSH, EC_WORD_YOU, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_HAVE, EC_WORD_SOME, EC_WORD_MORE, EC_WORD_OF, EC_WORD_THIS, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_GUTS, EC_WORD_AND, EC_WORD_SKILL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Breanna
+ },
+ [125] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_F,
+ .trainerName = _("KENDRA"),
+ .speechBefore = {EC_WORD_IF, EC_WORD_YOU_RE, EC_WORD_SMART, EC_WORD_STOP, EC_WORD_RIGHT, EC_WORD_NOW},
+ .speechWin = {EC_WORD_I, EC_WORD_SAID, EC_WORD_THAT, EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_STOP},
+ .speechLose = {EC_WORD_WHY, EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_STOP, EC_WORD_QUES, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Kendra
+ },
+ [126] = {
+ .facilityClass = FACILITY_CLASS_HEX_MANIAC,
+ .trainerName = _("MOLLY"),
+ .speechBefore = {EC_WORD_WILL, EC_WORD_MY, EC_WORD_CUTE_CHARM, EC_MOVE2(ATTRACT), EC_WORD_YOU, EC_WORD_QUES},
+ .speechWin = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_MY, EC_WORD_TOYS, EC_WORD_NOW},
+ .speechLose = {EC_WORD_OH, EC_WORD_HOW, EC_WORD_COULD, EC_WORD_YOU, EC_WORD_QUES, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Molly
+ },
+ [127] = {
+ .facilityClass = FACILITY_CLASS_HEX_MANIAC,
+ .trainerName = _("JAZMIN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_FORECAST, EC_WORD_TERRIBLE, EC_WORD_THINGS, EC_WORD_FOR, EC_WORD_YOU},
+ .speechWin = {EC_WORD_THERE, EC_WORD_WASN_T, EC_WORD_MY, EC_WORD_FORECAST, EC_WORD_RIGHT, EC_WORD_QUES},
+ .speechLose = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_DIDN_T, EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THIS},
+ .monSets = gBattleFrontierTrainerMons_Jazmin
+ },
+ [128] = {
+ .facilityClass = FACILITY_CLASS_HEX_MANIAC,
+ .trainerName = _("KELSEY"),
+ .speechBefore = {EC_WORD_I, EC_WORD_HAVEN_T, EC_WORD_SLEPT, EC_WORD_IN, EC_WORD_DAYS, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_MY, EC_WORD_SLEEP, EC_WORD_WILL, EC_WORD_BE, EC_WORD_EXCELLENT, EC_WORD_NOW},
+ .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_DESTROYED, EC_WORD_MY, EC_WORD_SLEEP, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Kelsey
+ },
+ [129] = {
+ .facilityClass = FACILITY_CLASS_POKEMANIAC,
+ .trainerName = _("JALEN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_ALLOW, EC_WORD_POKEMON, EC_WORD_TO, EC_MOVE(THRASH)},
+ .speechWin = {EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_ANGRY, EC_WORD_QUES},
+ .speechLose = {EC_WORD_WHY, EC_WORD_IS, EC_WORD_THIS, EC_WORD_SO, EC_WORD_HARD, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Jalen
+ },
+ [130] = {
+ .facilityClass = FACILITY_CLASS_POKEMANIAC,
+ .trainerName = _("GRIFFEN"),
+ .speechBefore = {EC_WORD_I, EC_MOVE2(SWALLOW), EC_MOVE2(SLUDGE), EC_WORD_TO, EC_MOVE2(TRANSFORM), EC_WORD_MYSELF},
+ .speechWin = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_MOVE(GROWTH), EC_WORD_OF, EC_MOVE2(ACID_ARMOR)},
+ .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_MOVE(GROWTH), EC_WORD_OF, EC_WORD_SUCTION_CUPS},
+ .monSets = gBattleFrontierTrainerMons_Griffen
+ },
+ [131] = {
+ .facilityClass = FACILITY_CLASS_POKEMANIAC,
+ .trainerName = _("XANDER"),
+ .speechBefore = {EC_WORD_I, EC_WORD_GOT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ON, EC_WORD_RENTAL},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_INCREDIBLE, EC_WORD_MY, EC_WORD_RENTAL, EC_WORD_POKEMON, EC_WORD_WON},
+ .speechLose = {EC_WORD_RENTAL, EC_WORD_POKEMON, EC_WORD_AREN_T, EC_WORD_UP, EC_WORD_TO, EC_MOVE2(SCRATCH)},
+ .monSets = gBattleFrontierTrainerMons_Xander
+ },
+ [132] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("MARVIN"),
+ .speechBefore = {EC_WORD_YOU_RE, EC_WORD_UP, EC_WORD_TO, EC_WORD_THE, EC_WORD_CHALLENGE, EC_WORD_QUES},
+ .speechWin = {EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_THINK, EC_WORD_YOU_RE, EC_WORD_GOOD, EC_WORD_ENOUGH},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_PERFECT, EC_WORD_THANK_YOU, EC_WORD_SO, EC_WORD_MUCH},
+ .monSets = gBattleFrontierTrainerMons_Marvin
+ },
+ [133] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("BRENNAN"),
+ .speechBefore = {EC_WORD_I, EC_MOVE2(WISH), EC_WORD_TO, EC_WORD_SEE, EC_WORD_THE, EC_WORD_NEWS},
+ .speechWin = {EC_WORD_COMICS, EC_WORD_GET, EC_WORD_DAMP, EC_WORD_FROM, EC_WORD_DRIZZLE, EC_WORD_QUES},
+ .speechLose = {EC_WORD_THE, EC_WORD_TIGHT, EC_WORD_MONEY, EC_WORD_LIVING, EC_WORD_CHANNEL, EC_WORD_QUES_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Brennan
+ },
+ [134] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("BALEY"),
+ .speechBefore = {EC_MOVE(SCREECH), EC_WORD_IS, EC_WORD_LIKE, EC_WORD_MUSIC, EC_WORD_TO_ME, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_MY, EC_MOVE(SCREECH), EC_WORD_STRATEGY, EC_WORD_IS, EC_WORD_THE, EC_WORD_BEST},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_SOUNDPROOF, EC_WORD_QUES, 0xFFFF, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Baley
+ },
+ [135] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("ZACKARY"),
+ .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_MOVE(DIG), EC_WORD_IT, EC_WORD_YO, EC_WORD_QUES},
+ .speechWin = {EC_MOVE2(TAKE_DOWN), EC_WORD_TAKE, EC_WORD_A, EC_MOVE2(DIVE), EC_WORD_YO, EC_WORD_YO},
+ .speechLose = {EC_WORD_BREAK, EC_WORD_DOWN, EC_MOVE2(DIVE), EC_WORD_TIME, EC_WORD_FOR, EC_WORD_ME},
+ .monSets = gBattleFrontierTrainerMons_Zackary
+ },
+ [136] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("GABRIEL"),
+ .speechBefore = {EC_MOVE2(POUND), EC_WORD_THE, EC_WORD_THICK_FAT, EC_WORD_ON, EC_WORD_MY, EC_MOVE2(BELLY_DRUM)},
+ .speechWin = {EC_MOVE2(POUND), EC_WORD_MY, EC_MOVE2(BELLY_DRUM), EC_MOVE2(POUND), EC_WORD_MY, EC_MOVE2(BELLY_DRUM)},
+ .speechLose = {EC_WORD_MY, EC_MOVE2(BELLY_DRUM), EC_WORD_WAS, EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Gabriel
+ },
+ [137] = {
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .trainerName = _("EMILY"),
+ .speechBefore = {EC_WORD_HOW, EC_WORD_ABOUT, EC_WORD_A_TINY_BIT, EC_WORD_OF, EC_MOVE(HYPNOSIS), EC_WORD_QUES},
+ .speechWin = {EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_STRATEGY, EC_WORD_WORKS, EC_WORD_TO, EC_WORD_PERFECTION},
+ .speechLose = {EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_STRATEGY, EC_WORD_WENT, EC_WORD_BADLY, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Emily
+ },
+ [138] = {
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .trainerName = _("JORDYN"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_MY, EC_WORD_SECRET, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_AS, EC_WORD_I, EC_WORD_APPEAR, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_BUT, EC_WORD_HOW, EC_WORD_DID, EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Jordyn
+ },
+ [139] = {
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .trainerName = _("SOFIA"),
+ .speechBefore = {EC_POKEMON(LOUDRED), EC_WORD_PROBABLY, EC_WORD_HAS, EC_WORD_A, EC_MOVE(SWEET_SCENT), 0xFFFF},
+ .speechWin = {EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_FEELING, EC_WORD_THAT, EC_WORD_I, EC_WORD_GET},
+ .speechLose = {EC_WORD_I, EC_WORD_WORK, EC_WORD_AT, EC_WORD_THE, EC_WORD_DEPT_STORE, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Sofia
+ },
+ [140] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("BRADEN"),
+ .speechBefore = {EC_WORD_I_CHOOSE_YOU, EC_WORD_EXCL, 0xFFFF, EC_WORD_THIS_IS_IT_EXCL, 0xFFFF, 0xFFFF},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_PRETTY, EC_WORD_AWESOME, EC_WORD_ABOUT, EC_WORD_MYSELF},
+ .speechLose = {EC_WORD_ALL_RIGHT, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_SURRENDER, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Braden
+ },
+ [141] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("KAYDEN"),
+ .speechBefore = {EC_WORD_THEY, EC_WORD_OVERDO, EC_WORD_THAT, EC_WORD_GOURMET, EC_WORD_THING, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_THAT, EC_WORD_GOURMET, EC_WORD_THING, EC_WORD_ISN_T, EC_WORD_FOR, EC_WORD_ME},
+ .speechLose = {EC_WORD_HEY, EC_WORD_THIS, EC_WORD_IS, EC_WORD_PRETTY, EC_WORD_TASTY, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Kayden
+ },
+ [142] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("COOPER"),
+ .speechBefore = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_ABSOLUTELY, EC_WORD_BE, EC_WORD_A, EC_WORD_PUSHOVER},
+ .speechWin = {EC_WORD_THAT_WAS, EC_WORD_TOO, EC_WORD_EXCITING, EC_WORD_FOR, EC_WORD_ME, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_PLEASE, EC_WORD_EXCL, 0xFFFF, EC_WORD_SORRY, EC_WORD_I_AM, EC_WORD_SORRY},
+ .monSets = gBattleFrontierTrainerMons_Cooper
+ },
+ [143] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("JULIA"),
+ .speechBefore = {EC_WORD_SPIRIT, EC_WORD_ALONE, EC_WORD_WON_T, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_WIN},
+ .speechWin = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_ACCEPT, EC_WORD_THIS, EC_WORD_WITH, EC_WORD_SERENE_GRACE},
+ .speechLose = {EC_WORD_FOR_NOW, EC_WORD_GOOD_BYE, EC_WORD_BUT, EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_OVER},
+ .monSets = gBattleFrontierTrainerMons_Julia
+ },
+ [144] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("AMARA"),
+ .speechBefore = {EC_WORD_WROOOAAR_EXCL, EC_WORD_EXCL_EXCL, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_READY, EC_WORD_EXCL_EXCL},
+ .speechWin = {EC_WORD_I, EC_WORD_LOSE, EC_WORD_MYSELF, EC_WORD_IF, EC_WORD_IT_S, EC_WORD_EXCITING},
+ .speechLose = {EC_WORD_THAT_S, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_MOVE2(TACKLE), EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Amara
+ },
+ [145] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("LYNN"),
+ .speechBefore = {EC_WORD_YOUR, EC_WORD_SECRET, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_HIDDEN, EC_WORD_FOREVER},
+ .speechWin = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_YOUR, EC_WORD_SECRET, EC_WORD_NOW, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_MOVE(SAFEGUARD), EC_WORD_YOUR, EC_WORD_OWN, EC_WORD_SECRET},
+ .monSets = gBattleFrontierTrainerMons_Lynn
+ },
+ [146] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_M,
+ .trainerName = _("JOVAN"),
+ .speechBefore = {EC_WORD_YOUR, EC_WORD_BATTLE, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_SADLY, EC_WORD_LACKING},
+ .speechWin = {EC_WORD_MY, EC_WORD_BATTLE, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_COOL, EC_WORD_ISN_T_IT_QUES},
+ .speechLose = {EC_WORD_I_WAS, EC_WORD_MINUS, EC_WORD_MY, EC_WORD_NORMAL, EC_WORD_POWER, EC_WORD_TODAY},
+ .monSets = gBattleFrontierTrainerMons_Jovan
+ },
+ [147] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_M,
+ .trainerName = _("DOMINIC"),
+ .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_THIS, EC_WORD_EXCELLENT, EC_WORD_CAMERA, 0xFFFF},
+ .speechWin = {EC_WORD_MY, EC_WORD_CAMERA, EC_WORD_WAS, EC_WORD_AWFULLY, EC_WORD_EXPENSIVE, 0xFFFF},
+ .speechLose = {EC_WORD_MY, EC_WORD_CAMERA, EC_WORD_DOESN_T, EC_WORD_MISS, EC_WORD_A, EC_WORD_THING},
+ .monSets = gBattleFrontierTrainerMons_Dominic
+ },
+ [148] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_M,
+ .trainerName = _("NIKOLAS"),
+ .speechBefore = {EC_WORD_I, EC_MOVE2(MIMIC), EC_WORD_POKEMON, EC_WORD_AFTER, EC_WORD_EVERY, EC_WORD_BATTLE},
+ .speechWin = {EC_WORD_IF_I_WIN, EC_WORD_I, EC_WORD_PRETEND, EC_WORD_I_AM, EC_WORD_A, EC_POKEMON2(TAUROS)},
+ .speechLose = {EC_WORD_IF_I_LOSE, EC_WORD_I, EC_WORD_PRETEND, EC_WORD_I_AM, EC_WORD_A, EC_POKEMON2(MILTANK)},
+ .monSets = gBattleFrontierTrainerMons_Nikolas
+ },
+ [149] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
+ .trainerName = _("VALERIA"),
+ .speechBefore = {EC_WORD_I, EC_MOVE2(WISH), EC_WORD_YOU, EC_WORD_WOULD, EC_WORD_NOT, EC_MOVE2(GLARE)},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_MEAN, EC_WORD_EXCL, EC_WORD_I, EC_WORD_MEAN, EC_WORD_REALLY},
+ .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_A, EC_WORD_REALLY, EC_MOVE(SCARY_FACE), EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Valeria
+ },
+ [150] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
+ .trainerName = _("DELANEY"),
+ .speechBefore = {EC_WORD_SCHOOL, EC_WORD_IS, EC_WORD_OVER, EC_WORD_TIME, EC_WORD_TO, EC_WORD_PLAY},
+ .speechWin = {EC_WORD_MY, EC_WORD_BOY, EC_WORD_FRIEND, EC_WORD_IS, EC_WORD_FROM, EC_WORD_SCHOOL},
+ .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_WORK, EC_WORD_NEXT, EC_WORD_WEEK},
+ .monSets = gBattleFrontierTrainerMons_Delaney
+ },
+ [151] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
+ .trainerName = _("MEGHAN"),
+ .speechBefore = {EC_WORD_SCHOOL, EC_WORD_IS, EC_WORD_OUT, EC_WORD_TIME, EC_WORD_TO, EC_WORD_PLAY},
+ .speechWin = {EC_WORD_MY, EC_WORD_BOY, EC_WORD_FRIEND, EC_WORD_LIKES, EC_WORD_COMICS, 0xFFFF},
+ .speechLose = {EC_WORD_IT_S, EC_WORD_BACK, EC_WORD_TO, EC_WORD_SCHOOL, EC_WORD_SOON, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Meghan
+ },
+ [152] = {
+ .facilityClass = FACILITY_CLASS_DRAGON_TAMER,
+ .trainerName = _("ROBERTO"),
+ .speechBefore = {EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_INVINCIBLE, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_YOU, EC_WORD_WEREN_T, EC_WORD_BAD, EC_WORD_I_WAS, EC_WORD_JUST, EC_WORD_BETTER},
+ .speechLose = {EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_SATISFIED, EC_WORD_YET, EC_WORD_QUES, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Roberto
+ },
+ [153] = {
+ .facilityClass = FACILITY_CLASS_DRAGON_TAMER,
+ .trainerName = _("DAMIAN"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_PURE_POWER, EC_WORD_IS, EC_WORD_MACHINE, EC_WORD_LIKE, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_MY, EC_MOVE2(MACH_PUNCH), EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_A, EC_MOVE(BRICK_BREAK)},
+ .speechLose = {EC_WORD_ARRGH, EC_WORD_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Damian
+ },
+ [154] = {
+ .facilityClass = FACILITY_CLASS_DRAGON_TAMER,
+ .trainerName = _("BRODY"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_SEEMS, EC_POKEMON(ODDISH), EC_WORD_QUES},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_MY, EC_WORD_FAMILY, EC_WORD_STAY_AT_HOME, EC_WORD_LOOK, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_QUESTION, EC_WORD_YOUR, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_SERIOUSLY},
+ .monSets = gBattleFrontierTrainerMons_Brody
+ },
+ [155] = {
+ .facilityClass = FACILITY_CLASS_DRAGON_TAMER,
+ .trainerName = _("GRAHAM"),
+ .speechBefore = {EC_WORD_YEAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_WAHAHAHA, EC_WORD_WAHAHAHA, EC_WORD_EXCL, EC_WORD_WAHAHAHA, EC_WORD_WAHAHAHA, EC_WORD_EXCL_EXCL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_MY, EC_WORD_BAD},
+ .monSets = gBattleFrontierTrainerMons_Graham
+ },
+ [156] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .trainerName = _("TYLOR"),
+ .speechBefore = {EC_WORD_ARE, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_MY, EC_MOVE2(HEAT_WAVE), EC_WORD_QUES},
+ .speechWin = {EC_WORD_YES, EC_WORD_I_AM, EC_WORD_ON, EC_WORD_FIRE, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_BUT, EC_WORD_I_WAS, EC_WORD_ON, EC_WORD_FIRE, EC_WORD_FOR, EC_WORD_YOU},
+ .monSets = gBattleFrontierTrainerMons_Tylor
+ },
+ [157] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .trainerName = _("JAREN"),
+ .speechBefore = {EC_WORD_FIGHTING, EC_WORD_SPIRIT, EC_WORD_QUES, EC_WORD_ME, EC_WORD_QUES, 0xFFFF},
+ .speechWin = {EC_WORD_I, EC_WORD_WANT, EC_WORD_MORE, EC_WORD_CUTE, EC_WORD_POKEMON, 0xFFFF},
+ .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_LOOK, EC_WORD_QUITE, EC_WORD_CUTE, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Jaren
+ },
+ [158] = {
+ .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M,
+ .trainerName = _("CORDELL"),
+ .speechBefore = {EC_WORD_A, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_DECIDED, EC_WORD_ON, EC_WORD_SPIRIT},
+ .speechWin = {EC_WORD_CAN_T, EC_WORD_YOU, EC_WORD_ACCEPT, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_BE, EC_WORD_ON, EC_WORD_MY, EC_WORD_WAY},
+ .monSets = gBattleFrontierTrainerMons_Cordell
+ },
+ [159] = {
+ .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .trainerName = _("JAZLYN"),
+ .speechBefore = {EC_WORD_IS, EC_WORD_YOUR, EC_WORD_POKEDEX, EC_WORD_REALLY, EC_WORD_AWESOME, EC_WORD_QUES},
+ .speechWin = {EC_WORD_OH_YEAH, EC_WORD_WOW, EC_WORD_YOUR, EC_WORD_POKEDEX, EC_WORD_IS, EC_WORD_SUPER},
+ .speechLose = {EC_WORD_AN, EC_WORD_AVANT_GARDE, EC_WORD_POKEDEX, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_AWESOME},
+ .monSets = gBattleFrontierTrainerMons_Jazlyn
+ },
+ [160] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("ZACHERY"),
+ .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_MY, EC_WORD_OWN, EC_WORD_PLACE, EC_WORD_YEEHAW_EXCL},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_TIME, EC_WORD_FOR, EC_WORD_ME},
+ .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_FLATTEN, EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Zachery
+ },
+ [161] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("JOHAN"),
+ .speechBefore = {EC_WORD_WINTER, EC_WORD_WILL, EC_WORD_SOON, EC_WORD_BE, EC_WORD_HERE, 0xFFFF},
+ .speechWin = {EC_WORD_MY, EC_WORD_ALLOWANCE, EC_WORD_COULD, EC_WORD_USE, EC_WORD_A, EC_MOVE2(HELPING_HAND)},
+ .speechLose = {EC_WORD_I, EC_WORD_ALWAYS, EC_WORD_USE, EC_WORD_MY, EC_WORD_ALLOWANCE, EC_WORD_UP},
+ .monSets = gBattleFrontierTrainerMons_Johan
+ },
+ [162] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("SHEA"),
+ .speechBefore = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_BATTLE, EC_WORD_WITH, EC_WORD_BEAUTY, EC_WORD_QUES},
+ .speechWin = {EC_WORD_YOU, EC_WORD_BATTLE, EC_WORD_IN, EC_WORD_AN, EC_WORD_UGLY, EC_WORD_WAY},
+ .speechLose = {EC_WORD_WHAT, EC_WORD_IS, EC_WORD_BEAUTY, EC_WORD_TO, EC_WORD_YOU, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Shea
+ },
+ [163] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("KAILA"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_THIRSTY, EC_WORD_RIGHT, EC_WORD_NOW, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_I, EC_WORD_COULD, EC_WORD_USE, EC_WORD_A, EC_WORD_COLD, EC_WORD_DRINK},
+ .speechLose = {EC_WORD_THAT, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_HARD, EC_WORD_TO, EC_MOVE2(SWALLOW)},
+ .monSets = gBattleFrontierTrainerMons_Kaila
+ },
+ [164] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_M,
+ .trainerName = _("ISIAH"),
+ .speechBefore = {EC_WORD_I, EC_WORD_PRETEND, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_A_LOT, 0xFFFF},
+ .speechWin = {EC_WORD_I, EC_MOVE2(TRICK), EC_WORD_MOTHER, EC_WORD_FOR, EC_WORD_MY, EC_WORD_ALLOWANCE},
+ .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_WANT, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MORE},
+ .monSets = gBattleFrontierTrainerMons_Isiah
+ },
+ [165] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_M,
+ .trainerName = _("GARRETT"),
+ .speechBefore = {EC_WORD_I, EC_WORD_ENJOY, EC_WORD_COMICS, EC_WORD_AND, EC_WORD_THIS, EC_WORD_GAME},
+ .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_MUSIC, EC_WORD_IDOL, EC_WORD_TOO},
+ .speechLose = {EC_WORD_BUT, EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MORE},
+ .monSets = gBattleFrontierTrainerMons_Garrett
+ },
+ [166] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .trainerName = _("HAYLIE"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WORRY, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_SLEEP},
+ .speechWin = {EC_WORD_A, EC_WORD_WIN, EC_WORD_GIVES, EC_WORD_ME, EC_WORD_A, EC_MOVE2(CALM_MIND)},
+ .speechLose = {EC_WORD_MY, EC_WORD_INSOMNIA, EC_WORD_WILL, EC_WORD_GET, EC_WORD_BAD, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Haylie
+ },
+ [167] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .trainerName = _("MEGAN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_AN, EC_MOVE(AROMATHERAPY), EC_WORD_BATH},
+ .speechWin = {EC_WORD_I, EC_WORD_WANT, EC_WORD_A, EC_WORD_HEALTHY, EC_WORD_CLEAR_BODY, 0xFFFF},
+ .speechLose = {EC_WORD_IF, EC_WORD_ONLY, EC_MOVE(AROMATHERAPY), EC_WORD_WERE, EC_WORD_LESS, EC_WORD_EXPENSIVE},
+ .monSets = gBattleFrontierTrainerMons_Megan
+ },
+ [168] = {
+ .facilityClass = FACILITY_CLASS_RICH_BOY,
+ .trainerName = _("ISSAC"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_HOBBY, EC_WORD_QUES, 0xFFFF, 0xFFFF, 0xFFFF},
+ .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_ANY, EC_WORD_KIND, EC_WORD_OF, EC_MOVE2(WATER_SPORT)},
+ .speechLose = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_ANY, EC_WORD_KIND, EC_WORD_OF, EC_MOVE2(MUD_SPORT)},
+ .monSets = gBattleFrontierTrainerMons_Issac
+ },
+ [169] = {
+ .facilityClass = FACILITY_CLASS_RICH_BOY,
+ .trainerName = _("QUINTON"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_SAD, EC_WORD_CAUSE, EC_WORD_I_AM, EC_WORD_TOO_WEAK, 0xFFFF},
+ .speechWin = {EC_WORD_YOU, EC_WORD_AREN_T, EC_WORD_TOO_STRONG, EC_WORD_FOR, EC_WORD_ME, 0xFFFF},
+ .speechLose = {EC_WORD_HEY, EC_WORD_WHAT, EC_WORD_DID, EC_WORD_I, EC_WORD_DO, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Quinton
+ },
+ [170] = {
+ .facilityClass = FACILITY_CLASS_LADY,
+ .trainerName = _("SALMA"),
+ .speechBefore = {EC_WORD_YOU_VE, EC_WORD_GOT, EC_WORD_YOUR, EC_WORD_HUSTLE, EC_WORD_ON, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_I, EC_WORD_WIN, EC_WORD_YOU, EC_WORD_HUSTLE, EC_WORD_ON, EC_WORD_OUT},
+ .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_HOW, EC_WORD_I, EC_WORD_LOST},
+ .monSets = gBattleFrontierTrainerMons_Salma
+ },
+ [171] = {
+ .facilityClass = FACILITY_CLASS_LADY,
+ .trainerName = _("ANSLEY"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_BORED, EC_WORD_ELLIPSIS, EC_WORD_DANCE, EC_WORD_FOR, EC_WORD_ME},
+ .speechWin = {EC_WORD_YOU_VE, EC_WORD_BORED, EC_WORD_ME, EC_WORD_SOME, EC_WORD_MORE, 0xFFFF},
+ .speechLose = {EC_WORD_TAKE, EC_WORD_YOUR, EC_MOVE2(FRUSTRATION), EC_WORD_SOME, EC_WORD_OTHER, EC_WORD_PLACE},
+ .monSets = gBattleFrontierTrainerMons_Ansley
+ },
+ [172] = {
+ .facilityClass = FACILITY_CLASS_BUG_CATCHER,
+ .trainerName = _("HOLDEN"),
+ .speechBefore = {EC_WORD_LET_S, EC_WORD_COMMEMORATE, EC_WORD_MY, EC_WORD_COOLNESS, EC_WORD_IN, EC_WORD_BATTLE},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_PRAISE, 0xFFFF},
+ .speechLose = {EC_WORD_YOUR, EC_WORD_BATTLE, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_AMUSING, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Holden
+ },
+ [173] = {
+ .facilityClass = FACILITY_CLASS_BUG_CATCHER,
+ .trainerName = _("LUCA"),
+ .speechBefore = {EC_WORD_WE, EC_WORD_WILL, EC_WORD_HAVE, EC_WORD_A, EC_WORD_COOL, EC_WORD_BATTLE},
+ .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_IN, EC_WORD_A, EC_WORD_COOL, EC_WORD_WAY},
+ .speechLose = {EC_WORD_HELLO, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_JUST, EC_WORD_A, EC_WORD_KID},
+ .monSets = gBattleFrontierTrainerMons_Luca
+ },
+ [174] = {
+ .facilityClass = FACILITY_CLASS_NINJA_BOY,
+ .trainerName = _("JAMISON"),
+ .speechBefore = {EC_WORD_MY, EC_MOVE2(SECRET_POWER), EC_WORD_IS, EC_WORD_OVERWHELMING, EC_WORD_TO, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_DID, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_USE, EC_MOVE(SMOKESCREEN), EC_WORD_TO, EC_WORD_ESCAPE},
+ .monSets = gBattleFrontierTrainerMons_Jamison
+ },
+ [175] = {
+ .facilityClass = FACILITY_CLASS_NINJA_BOY,
+ .trainerName = _("GUNNAR"),
+ .speechBefore = {EC_WORD_I, EC_MOVE(CUT), EC_WORD_DOWN, EC_WORD_EVERY, EC_WORD_OPPONENT, 0xFFFF},
+ .speechWin = {EC_WORD_DON_T, EC_MOVE(GRUDGE), EC_WORD_ME, EC_WORD_FOR, EC_WORD_YOUR, EC_WORD_LOSS},
+ .speechLose = {EC_WORD_PLEASE, EC_WORD_LOSE, EC_WORD_THAT, EC_MOVE(SCARY_FACE), EC_WORD_OF, EC_WORD_YOURS},
+ .monSets = gBattleFrontierTrainerMons_Gunnar
+ },
+ [176] = {
+ .facilityClass = FACILITY_CLASS_TUBER_M,
+ .trainerName = _("CRAIG"),
+ .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_FOR, EC_WORD_MY, EC_WORD_TRAIN},
+ .speechWin = {EC_WORD_MY, EC_WORD_TRAIN, EC_WORD_ISN_T, EC_WORD_HERE, EC_WORD_YET, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_HERE_IT_IS, EC_WORD_MY, EC_WORD_TRAIN, EC_WORD_SEE_YA, EC_WORD_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Craig
+ },
+ [177] = {
+ .facilityClass = FACILITY_CLASS_TUBER_M,
+ .trainerName = _("PIERCE"),
+ .speechBefore = {EC_WORD_THERE, EC_WORD_WAS, EC_WORD_A, EC_MOVE2(HEAT_WAVE), EC_WORD_LAST, EC_WORD_WEEK},
+ .speechWin = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_TAKE, EC_WORD_A, EC_MOVE2(HEAT_WAVE), 0xFFFF},
+ .speechLose = {EC_WORD_DIDN_T, EC_WORD_IT, EC_MOVE(HAIL), EC_WORD_TOO, EC_WORD_QUES, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Pierce
+ },
+ [178] = {
+ .facilityClass = FACILITY_CLASS_TUBER_F,
+ .trainerName = _("REGINA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_PLAY, EC_WORD_IN, EC_WORD_WATER},
+ .speechWin = {EC_WORD_I, EC_WORD_REFUSE, EC_WORD_TO, EC_WORD_COME, EC_WORD_OUT, 0xFFFF},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_MUCH, EC_WORD_GOOD, EC_WORD_IN, EC_WORD_WATER},
+ .monSets = gBattleFrontierTrainerMons_Regina
+ },
+ [179] = {
+ .facilityClass = FACILITY_CLASS_TUBER_F,
+ .trainerName = _("ALISON"),
+ .speechBefore = {EC_WORD_THIS, EC_WORD_KINDERGARTEN, EC_WORD_MAGAZINE, EC_WORD_IS, EC_WORD_TOO, EC_WORD_MUCH},
+ .speechWin = {EC_WORD_HOW, EC_WORD_TO, EC_WORD_BUG, EC_WORD_YOUR, EC_WORD_TEACHER, EC_WORD_QUES},
+ .speechLose = {EC_WORD_ENJOY, EC_WORD_A, EC_WORD_TASTY, EC_WORD_SCHOOL, EC_WORD_DIET, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Alison
+ },
+ [180] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("HANK"),
+ .speechBefore = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_A, EC_WORD_BUG, EC_WORD_EVENT, EC_WORD_SOON},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_BUG, EC_WORD_FASHION, EC_WORD_SHOW, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Hank
+ },
+ [181] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("EARL"),
+ .speechBefore = {EC_WORD_THE, EC_WORD_INVINCIBLE, EC_WORD_BUG, EC_WORD_TRAINER, EC_WORD_IS, EC_WORD_HERE},
+ .speechWin = {EC_WORD_THE, EC_WORD_INVINCIBLE, EC_WORD_BUG, EC_WORD_TRAINER, EC_WORD_AM, EC_WORD_I},
+ .speechLose = {EC_WORD_SEE, EC_WORD_HOW, EC_WORD_FAST, EC_WORD_I, EC_WORD_RUN_AWAY, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Earl
+ },
+ [182] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("RAMIRO"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WENT, EC_WORD_TO, EC_WORD_A, EC_WORD_FISHING, EC_WORD_SCHOOL},
+ .speechWin = {EC_WORD_SERIOUSLY, EC_WORD_I_AM, EC_WORD_IN, EC_WORD_THE, EC_WORD_FISHING, EC_WORD_HALL_OF_FAME},
+ .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_BACK, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Ramiro
+ },
+ [183] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("HUNTER"),
+ .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_A, EC_WORD_TOTALLY, EC_WORD_COOL, EC_MOVE(CROSS_CHOP)},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_DO, EC_WORD_A, EC_MOVE(CROSS_CHOP)},
+ .speechLose = {EC_WORD_WAS, EC_WORD_IT, EC_WORD_A, EC_WORD_MISTAKE, EC_WORD_QUES, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Hunter
+ },
+ [184] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("AIDEN"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_WORK, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_ME, EC_WORD_HEALTHY},
+ .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_HEALTHY, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_MORE, EC_WORD_HEALTHY, EC_WORD_THAN, EC_WORD_I_AM, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Aiden
+ },
+ [185] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("XAVIER"),
+ .speechBefore = {EC_WORD_HEY_THERE, EC_WORD_EXCL, 0xFFFF, EC_WORD_LOOK, EC_WORD_LOOK, EC_WORD_EXCL_EXCL},
+ .speechWin = {EC_WORD_GOOD_BYE, EC_WORD_AND, EC_WORD_THANK_YOU, EC_WORD_THAT_WAS, EC_WORD_FUNNY, 0xFFFF},
+ .speechLose = {EC_WORD_WOWEE, EC_WORD_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_NO, EC_WORD_EXCL_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Xavier
+ },
+ [186] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("CLINTON"),
+ .speechBefore = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_SEE, EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_QUES},
+ .speechWin = {EC_WORD_YOUR, EC_MOVE2(FURY_SWIPES), EC_WORD_YOUR, EC_MOVE(STRENGTH), EC_WORD_YOUNG, EC_WORD_TRAINER},
+ .speechLose = {EC_WORD_TCH, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Clinton
+ },
+ [187] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("JESSE"),
+ .speechBefore = {EC_WORD_THIS, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_FOR, EC_WORD_MY, EC_WORD_MOTHER},
+ .speechWin = {EC_WORD_MOTHER, EC_WORD_WILL, EC_WORD_BE, EC_WORD_HAPPY, EC_WORD_FOR, EC_WORD_ME},
+ .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_MY, EC_WORD_MOTHER, EC_WORD_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Jesse
+ },
+ [188] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("EDUARDO"),
+ .speechBefore = {EC_WORD_OUR, EC_WORD_MUSIC, EC_WORD_WILL, EC_WORD_PLAY, EC_WORD_ALL, EC_WORD_NIGHT},
+ .speechWin = {EC_WORD_NIGHTTIME, EC_WORD_IS, EC_WORD_WHEN, EC_WORD_I, EC_WORD_PLAY, EC_WORD_BEST},
+ .speechLose = {EC_WORD_LET_S, EC_WORD_PARTY, EC_WORD_UNTIL, EC_WORD_THE, EC_MOVE(MORNING_SUN), EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Eduardo
+ },
+ [189] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("HAL"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_TRENDY, EC_WORD_AREN_T, EC_WORD_I, EC_WORD_QUES, 0xFFFF},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_HIP_AND, EC_WORD_HAPPENING, EC_WORD_OH_YEAH, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_ALWAYS, EC_WORD_TRENDY, EC_WORD_THANK_YOU, EC_WORD_VERY, EC_WORD_MUCH},
+ .monSets = gBattleFrontierTrainerMons_Hal
+ },
+ [190] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("GAGE"),
+ .speechBefore = {EC_WORD_HERE_IT_IS, EC_WORD_A, EC_WORD_FLYING, EC_WORD_TYPE, EC_WORD_HIDDEN, EC_WORD_MOVE},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_FLYING, EC_WORD_TYPE, EC_WORD_VICTORY, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_IF_I_LOSE, EC_WORD_I, EC_WORD_JUST, EC_MOVE(FLY), EC_WORD_AWAY, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Gage
+ },
+ [191] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("ARNOLD"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_WEIRD, EC_WORD_FROM, EC_WORD_A, EC_WORD_DREAM},
+ .speechWin = {EC_WORD_YOUR, EC_MOVE(SCARY_FACE), EC_WORD_WAS, EC_WORD_IN, EC_WORD_MY, EC_WORD_DREAM},
+ .speechLose = {EC_WORD_MY, EC_WORD_INCREDIBLE, EC_WORD_DREAM, EC_WORD_WAS, EC_WORD_SO, EC_WORD_WEIRD},
+ .monSets = gBattleFrontierTrainerMons_Arnold
+ },
+ [192] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("JARRETT"),
+ .speechBefore = {EC_WORD_COME_ON, EC_WORD_LET_S, EC_WORD_DANCE, EC_WORD_LIKE, EC_WORD_IT_S, EC_WORD_YESTERDAY},
+ .speechWin = {EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_HOW, EC_WORD_I, EC_WORD_DANCE, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_APPRECIATE, EC_WORD_HOW, EC_WORD_I, EC_WORD_DANCE},
+ .monSets = gBattleFrontierTrainerMons_Jarrett
+ },
+ [193] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("GARETT"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_GIRL, EC_WORD_GIVES, EC_WORD_ME, EC_WORD_A_LITTLE, EC_MOVE2(SWEET_KISS)},
+ .speechWin = {EC_WORD_MY, EC_WORD_GIRL, EC_WORD_FRIEND, EC_WORD_IS, EC_WORD_MY, EC_WORD_TREASURE},
+ .speechLose = {EC_WORD_A, EC_WORD_TREASURE, EC_WORD_ISN_T, EC_WORD_ALWAYS, EC_WORD_ABOUT, EC_WORD_MONEY},
+ .monSets = gBattleFrontierTrainerMons_Garett
+ },
+ [194] = {
+ .facilityClass = FACILITY_CLASS_HIKER,
+ .trainerName = _("EMANUEL"),
+ .speechBefore = {EC_WORD_SMARTNESS, EC_WORD_ALONE, EC_WORD_WON_T, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_WIN},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_NOT_VERY, EC_WORD_SMART, EC_WORD_BUT, EC_WORD_I, EC_WORD_WON},
+ .speechLose = {EC_WORD_HOW, EC_WORD_DID, EC_WORD_YOU, EC_MOVE2(FAKE_OUT), EC_WORD_ME, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Emanuel
+ },
+ [195] = {
+ .facilityClass = FACILITY_CLASS_HIKER,
+ .trainerName = _("GUSTAVO"),
+ .speechBefore = {EC_MOVE(CHARGE), EC_WORD_EXCL, 0xFFFF, EC_MOVE(CHARGE), EC_WORD_EXCL_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_SURRENDER, EC_WORD_QUES, 0xFFFF, EC_WORD_SO, EC_WORD_SOON, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_SURRENDER, EC_WORD_YET},
+ .monSets = gBattleFrontierTrainerMons_Gustavo
+ },
+ [196] = {
+ .facilityClass = FACILITY_CLASS_KINDLER,
+ .trainerName = _("KAMERON"),
+ .speechBefore = {EC_WORD_TAKE_THAT, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_MY, EC_WORD_FIERY, EC_MOVE2(TRICK)},
+ .speechWin = {EC_WORD_DID, EC_WORD_MY, EC_WORD_FIERY, EC_MOVE2(TRICK), EC_MOVE(ASTONISH), EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU, EC_WORD_DIDN_T, EC_WORD_FALL, EC_WORD_FOR, EC_WORD_MY, EC_MOVE2(TRICK)},
+ .monSets = gBattleFrontierTrainerMons_Kameron
+ },
+ [197] = {
+ .facilityClass = FACILITY_CLASS_KINDLER,
+ .trainerName = _("ALFREDO"),
+ .speechBefore = {EC_WORD_A, EC_WORD_FIERY, EC_WORD_GOURMET, EC_WORD_AM, EC_WORD_I, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_TASTY, EC_WORD_GOURMET, EC_WORD_VICTORY, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_DISASTER, EC_WORD_THAT_WAS, EC_WORD_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Alfredo
+ },
+ [198] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("RUBEN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_TO, EC_WORD_GET, EC_WORD_GOING},
+ .speechWin = {EC_WORD_GET, EC_WORD_GOING, EC_WORD_EXCL, EC_WORD_THIS, EC_WORD_IS, EC_WORD_GOOD_BYE},
+ .speechLose = {EC_WORD_I_VE, EC_WORD_GOT, EC_WORD_TO, EC_WORD_GET, EC_WORD_GOING, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Ruben
+ },
+ [199] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("LAMAR"),
+ .speechBefore = {EC_WORD_A, EC_MOVE2(PRESENT), EC_WORD_FOR, EC_WORD_ME, EC_WORD_QUES, 0xFFFF},
+ .speechWin = {EC_WORD_MMM, EC_WORD_THIS, EC_WORD_IS, EC_WORD_QUITE, EC_WORD_TASTY, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_OH, EC_WORD_IT_S, EC_WORD_A, EC_WORD_GAME, EC_WORD_IS_IT_QUES, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Lamar
+ },
+ [200] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("JAXON"),
+ .speechBefore = {EC_WORD_A, EC_WORD_SHELL_ARMOR, EC_WORD_IS, EC_WORD_WHAT, EC_WORD_I, EC_WORD_WANT},
+ .speechWin = {EC_WORD_MY, EC_WORD_FATHER, EC_WORD_AND, EC_WORD_MOTHER, EC_WORD_WON_T, EC_WORD_ACCEPT},
+ .speechLose = {EC_WORD_PLEASE, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_SHELL_ARMOR, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Jaxon
+ },
+ [201] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("LOGAN"),
+ .speechBefore = {EC_WORD_IF_I_LOSE, EC_WORD_I, EC_WORD_WILL, EC_WORD_STUDY, EC_WORD_FOR, EC_WORD_SCHOOL},
+ .speechWin = {EC_WORD_ME, EC_WORD_STUDY, EC_WORD_QUES, EC_WORD_NOT_VERY, EC_WORD_LIKELY_TO, EC_WORD_SEE},
+ .speechLose = {EC_WORD_NO, EC_WORD_THANKS, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_SLEEP},
+ .monSets = gBattleFrontierTrainerMons_Logan
+ },
+ [202] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("EMILEE"),
+ .speechBefore = {EC_WORD_IS, EC_WORD_THIS, EC_WORD_KIND, EC_WORD_OF, EC_WORD_BATTLE, EC_WORD_OK_QUES},
+ .speechWin = {EC_WORD_LET_S, EC_WORD_GO, EC_WORD_FOR, EC_WORD_AN, EC_MOVE(ICY_WIND), EC_MOVE2(SURF)},
+ .speechLose = {EC_WORD_HOW, EC_WORD_ABOUT, EC_WORD_A, EC_MOVE(ROCK_SLIDE), EC_WORD_SHOW, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Emilee
+ },
+ [203] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("JOSIE"),
+ .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_FASHION, EC_WORD_CONTEST, EC_WORD_IS, EC_WORD_PRETTY},
+ .speechWin = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_MODE, EC_WORD_FASHION, EC_WORD_THINGS},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_TOTALLY, EC_WORD_LACKING, EC_WORD_IN, EC_WORD_FASHION, EC_WORD_SENSE},
+ .monSets = gBattleFrontierTrainerMons_Josie
+ },
+ [204] = {
+ .facilityClass = FACILITY_CLASS_CAMPER,
+ .trainerName = _("ARMANDO"),
+ .speechBefore = {EC_WORD_I, EC_WORD_NEED, EC_WORD_MORE, EC_WORD_GRASS, EC_WORD_TYPE, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_TRADE, EC_WORD_ME, EC_WORD_A, EC_WORD_GRASS, EC_WORD_POKEMON, EC_WORD_PLEASE},
+ .speechLose = {EC_WORD_THERE, EC_WORD_AREN_T, EC_WORD_ENOUGH, EC_WORD_GRASS, EC_WORD_TYPE, EC_WORD_POKEMON},
+ .monSets = gBattleFrontierTrainerMons_Armando
+ },
+ [205] = {
+ .facilityClass = FACILITY_CLASS_CAMPER,
+ .trainerName = _("SKYLER"),
+ .speechBefore = {EC_MOVE2(INGRAIN), EC_WORD_IS, EC_WORD_MY, EC_WORD_CHOICE, EC_WORD_BATTLE, EC_WORD_MOVE},
+ .speechWin = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_MOVE, EC_WORD_ME, EC_WORD_NOW, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOU, EC_MOVE(CUT), EC_WORD_ME, EC_WORD_DOWN, EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Skyler
+ },
+ [206] = {
+ .facilityClass = FACILITY_CLASS_PICNICKER,
+ .trainerName = _("RUTH"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_ENJOY, EC_WORD_THIS, EC_WORD_BATTLE},
+ .speechWin = {EC_WORD_THAT_WAS, EC_WORD_MUCH, EC_WORD_TOO, EC_WORD_EASY, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_PLEASE, EC_WORD_STOP, EC_WORD_I, EC_WORD_DON_T, EC_WORD_ENJOY, EC_WORD_THIS},
+ .monSets = gBattleFrontierTrainerMons_Ruth
+ },
+ [207] = {
+ .facilityClass = FACILITY_CLASS_PICNICKER,
+ .trainerName = _("MELODY"),
+ .speechBefore = {EC_WORD_I, EC_MOVE2(WISH), EC_WORD_SUNDAY, EC_WORD_IS, EC_WORD_A, EC_MOVE2(SUNNY_DAY)},
+ .speechWin = {EC_WORD_SUNDAY, EC_WORD_SEEMS, EC_WORD_FOREVER, EC_WORD_TO, EC_WORD_COME, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_THE, EC_WORD_FORECAST, EC_WORD_SAYS, EC_WORD_IT, EC_WORD_WILL, EC_MOVE(HAIL)},
+ .monSets = gBattleFrontierTrainerMons_Melody
+ },
+ [208] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_M,
+ .trainerName = _("PEDRO"),
+ .speechBefore = {EC_WORD_A, EC_WORD_SWIFT_SWIM, EC_WORD_WILL, EC_WORD_DO, EC_WORD_YOU, EC_WORD_GOOD},
+ .speechWin = {EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_I, EC_WORD_SINK, EC_WORD_AN, EC_WORD_OPPONENT},
+ .speechLose = {EC_WORD_UH_OH, EC_WORD_EXCL, 0xFFFF, EC_WORD_A, EC_MOVE(WHIRLPOOL), EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Pedro
+ },
+ [209] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_M,
+ .trainerName = _("ERICK"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_MOVE2(TACKLE), EC_WORD_YOU, EC_WORD_DOWN, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_RUN_AWAY, EC_WORD_YOU, EC_WORD_LOSER, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_THINK, EC_WORD_YOU, EC_WORD_WOULD, EC_MOVE(COUNTER)},
+ .monSets = gBattleFrontierTrainerMons_Erick
+ },
+ [210] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_F,
+ .trainerName = _("ELAINE"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_HEROINE, EC_WORD_ADVENTURE, EC_WORD_ISN_T, EC_WORD_GOING, EC_WORD_WELL},
+ .speechWin = {EC_WORD_THANK_YOU, EC_WORD_EXCL, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I, EC_WORD_NEED},
+ .speechLose = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_A, EC_WORD_HEROINE},
+ .monSets = gBattleFrontierTrainerMons_Elaine
+ },
+ [211] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_F,
+ .trainerName = _("JOYCE"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_GO, EC_WORD_AHAHA, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_LALALA, EC_WORD_NO, EC_WORD_LOSING, EC_WORD_FOR, EC_WORD_ME, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_LALALA, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Joyce
+ },
+ [212] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .trainerName = _("TODD"),
+ .speechBefore = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_LIGHTNINGROD, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POWER},
+ .speechWin = {EC_WORD_THAT_S, EC_WORD_ALL, EC_WORD_YOU, EC_WORD_COULD, EC_MOVE(ABSORB), EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU, EC_MOVE2(REFLECT), EC_WORD_MY, EC_WORD_POWER, EC_WORD_BACK, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Todd
+ },
+ [213] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .trainerName = _("GAVIN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_MOVE(BIDE), EC_WORD_MY, EC_WORD_TIME, 0xFFFF},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_SO, EC_WORD_SOON, EC_WORD_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_MY, EC_WORD_MISTAKE, EC_WORD_WAS, EC_WORD_TOO, EC_WORD_EXPENSIVE, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Gavin
+ },
+ [214] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .trainerName = _("MALORY"),
+ .speechBefore = {EC_WORD_PROMISE, EC_WORD_TO, EC_WORD_SHOW, EC_WORD_ME, EC_WORD_CUTE, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_THANK_YOU, EC_WORD_SO, EC_WORD_MUCH},
+ .speechLose = {EC_WORD_TCH, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_AREN_T, EC_WORD_VERY, EC_WORD_NICE},
+ .monSets = gBattleFrontierTrainerMons_Malory
+ },
+ [215] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .trainerName = _("ESTHER"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_A, EC_WORD_NICE, EC_MOVE2(PRESENT), EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_PLEASE, EC_WORD_GET, EC_WORD_ME, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_GAME},
+ .speechLose = {EC_WORD_MESSAGE, EC_WORD_CARDS, EC_WORD_MAKE, EC_WORD_A, EC_WORD_WEAK, EC_MOVE2(PRESENT)},
+ .monSets = gBattleFrontierTrainerMons_Esther
+ },
+ [216] = {
+ .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M,
+ .trainerName = _("OSCAR"),
+ .speechBefore = {EC_WORD_LET_S, EC_WORD_SEE, EC_WORD_YOUR, EC_WORD_POWER, EC_WORD_IN, EC_WORD_FULL},
+ .speechWin = {EC_WORD_THAT_WAS, EC_WORD_NOT, EC_WORD_YOUR, EC_WORD_FULL, EC_WORD_POWER, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_NOT, EC_WORD_FUNNY, EC_WORD_ELLIPSIS, EC_WORD_YOU_RE, EC_WORD_TOO_STRONG, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Oscar
+ },
+ [217] = {
+ .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M,
+ .trainerName = _("WILSON"),
+ .speechBefore = {EC_WORD_WORK, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_ME, EC_WORD_AN, EC_WORD_EARLY_BIRD},
+ .speechWin = {EC_WORD_ALL, EC_WORD_WORK, EC_WORD_AND, EC_WORD_NO, EC_WORD_PLAY, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_MOVE(ENDURE), EC_WORD_IS, EC_WORD_ALL, EC_WORD_I, EC_WORD_CAN, EC_WORD_DO},
+ .monSets = gBattleFrontierTrainerMons_Wilson
+ },
+ [218] = {
+ .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .trainerName = _("CLARE"),
+ .speechBefore = {EC_WORD_YAY, EC_WORD_EXCL, EC_WORD_A, EC_WORD_TOUGH, EC_WORD_TRAINER, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_A, EC_WORD_WIMPY, EC_WORD_TRAINER, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_COOL, EC_WORD_EXCL, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_TRAINER, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Clare
+ },
+ [219] = {
+ .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .trainerName = _("TESS"),
+ .speechBefore = {EC_WORD_WANT, EC_WORD_SOME, EC_POKEMON(GULPIN), EC_WORD_DESIGN, EC_WORD_SWEETS, EC_WORD_QUES},
+ .speechWin = {EC_WORD_THEY_RE, EC_WORD_A, EC_WORD_SECRET, EC_WORD_POKEMON, EC_WORD_GOURMET, EC_WORD_ITEM},
+ .speechLose = {EC_WORD_THEY_RE, EC_WORD_TASTY, EC_WORD_EXCL, EC_WORD_REFRESHING, EC_WORD_TOO, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Tess
+ },
+ [220] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("LEON"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_ANY, EC_WORD_OTHER, EC_WORD_TRAINER},
+ .speechWin = {EC_WORD_I, EC_WORD_DID, EC_WORD_IT, EC_MOVE2(JUMP_KICK), EC_WORD_FOR, EC_WORD_JOY},
+ .speechLose = {EC_WORD_BACK, EC_WORD_HOME, EC_WORD_I, EC_WORD_WILL, EC_WORD_GO, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Leon
+ },
+ [221] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("ALONZO"),
+ .speechBefore = {EC_WORD_I_VE, EC_WORD_NOT, EC_WORD_LOST, EC_WORD_ONCE, EC_WORD_YET, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_YOUR, EC_WORD_SAD, EC_WORD_LOOK, EC_WORD_BECOMES, EC_WORD_YOU, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_BELIEVE, EC_WORD_THIS, EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Alonzo
+ },
+ [222] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("VINCE"),
+ .speechBefore = {EC_WORD_THE, EC_WORD_TOP, EC_WORD_TRAINER, EC_WORD_THAT_S, EC_WORD_ME, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_THE, EC_WORD_TOP, EC_WORD_RANK, EC_WORD_BELONGS_TO, EC_WORD_ME, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_APPEAL, EC_WORD_THIS, EC_MOVE(OUTRAGE), EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Vince
+ },
+ [223] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("BRYON"),
+ .speechBefore = {EC_WORD_MY, EC_MOVE2(BARRAGE), EC_WORD_WILL, EC_MOVE2(SLAM), EC_WORD_YOU, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_YOU, EC_WORD_DIDN_T, EC_WORD_COUNT_ON, EC_WORD_ANY, EC_WORD_LESS, EC_WORD_QUES},
+ .speechLose = {EC_WORD_I, EC_WORD_JUST, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_IT, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Bryon
+ },
+ [224] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("AVA"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_TREASURE, EC_WORD_OF, EC_WORD_THIS, EC_WORD_WORLD},
+ .speechWin = {EC_WORD_MY, EC_WORD_WORLD, EC_WORD_IS, EC_WORD_FULL, EC_WORD_OF, EC_WORD_WONDER},
+ .speechLose = {EC_WORD_WHY, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_SO, EC_WORD_TERRIBLE, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Ava
+ },
+ [225] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("MIRIAM"),
+ .speechBefore = {EC_WORD_OH, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_WITH, EC_WORD_A, EC_MOVE(SCARY_FACE)},
+ .speechWin = {EC_WORD_AHAHA, EC_WORD_YOU, EC_WORD_ONLY, EC_WORD_LOOK, EC_WORD_SCARY, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_ARE, EC_WORD_SCARY},
+ .monSets = gBattleFrontierTrainerMons_Miriam
+ },
+ [226] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("CARRIE"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_SHOW, EC_WORD_YOU, EC_WORD_GUTSY, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_ABOUT, EC_WORD_GUTS, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_OH, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_MOVE(SELF_DESTRUCT), EC_WORD_MODE, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Carrie
+ },
+ [227] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("GILLIAN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_SEEK, EC_WORD_A, EC_WORD_TRULY, EC_WORD_GREAT, EC_WORD_BATTLE},
+ .speechWin = {EC_WORD_I, EC_WORD_NEED, EC_WORD_A_LOT, EC_WORD_BETTER, EC_WORD_BATTLE, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_A_LITTLE, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_TAKE},
+ .monSets = gBattleFrontierTrainerMons_Gillian2
+ },
+ [228] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_M,
+ .trainerName = _("TYLER"),
+ .speechBefore = {EC_WORD_YO, EC_WORD_EXCL, 0xFFFF, EC_WORD_LET_S, EC_WORD_GO, EC_WORD_EXCL_EXCL},
+ .speechWin = {EC_WORD_YO, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_WON, EC_WORD_YO},
+ .speechLose = {EC_WORD_YO, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_LOST, EC_WORD_YO},
+ .monSets = gBattleFrontierTrainerMons_Tyler
+ },
+ [229] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_M,
+ .trainerName = _("CHAZ"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_HAVE, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_POWER},
+ .speechWin = {EC_WORD_THEY, EC_WORD_HAVE, EC_WORD_MORE, EC_WORD_POWER, EC_WORD_NOW, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YEAH, EC_MOVE2(TAKE_DOWN), EC_WORD_THEIR, EC_WORD_POWER, EC_WORD_A_TINY_BIT, EC_WORD_PLEASE},
+ .monSets = gBattleFrontierTrainerMons_Chaz
+ },
+ [230] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_M,
+ .trainerName = _("NELSON"),
+ .speechBefore = {EC_WORD_WELL_THEN, EC_WORD_WILL, EC_WORD_THIS, EC_WORD_POKEMON, EC_WORD_WORK, EC_WORD_QUES},
+ .speechWin = {EC_WORD_I, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_IT, EC_WORD_WAS, EC_WORD_TOO_STRONG},
+ .speechLose = {EC_WORD_IT, EC_WORD_DIDN_T, EC_WORD_MATCH_UP, EC_WORD_WELL, EC_WORD_I, EC_WORD_THINK},
+ .monSets = gBattleFrontierTrainerMons_Nelson
+ },
+ [231] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
+ .trainerName = _("SHANIA"),
+ .speechBefore = {EC_WORD_ALL, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ABSOLUTELY, EC_WORD_ADORE, EC_WORD_ME},
+ .speechWin = {EC_WORD_HAPPINESS, EC_WORD_IS, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_WITH, EC_WORD_CUTE_CHARM},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_SO, EC_WORD_MEAN, EC_WORD_TO, EC_WORD_CUTE, EC_WORD_POKEMON},
+ .monSets = gBattleFrontierTrainerMons_Shania
+ },
+ [232] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
+ .trainerName = _("STELLA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_SEE, EC_WORD_YOUR, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_WELL, EC_WORD_AREN_T, EC_WORD_THEY, EC_WORD_BORING, EC_WORD_QUES, EC_WORD_AHAHA},
+ .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SOMETHING, EC_WORD_ELSE, EC_WORD_ALL_RIGHT},
+ .monSets = gBattleFrontierTrainerMons_Stella
+ },
+ [233] = {
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
+ .trainerName = _("DORINE"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_YOUNG, EC_WORD_AND, EC_WORD_STRONG, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_AREN_T, EC_WORD_I, EC_WORD_GOOD, EC_WORD_QUES},
+ .speechLose = {EC_WORD_THIS, EC_WORD_ISN_T, EC_WORD_WORKING, EC_WORD_OUT, EC_WORD_AT, EC_WORD_ALL},
+ .monSets = gBattleFrontierTrainerMons_Dorine
+ },
+ [234] = {
+ .facilityClass = FACILITY_CLASS_DRAGON_TAMER,
+ .trainerName = _("MADDOX"),
+ .speechBefore = {EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_MY, EC_WORD_NO_1, EC_WORD_CHOICE},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_NO, EC_WORD_SECRET, EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_WIN},
+ .speechLose = {EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_LOSE, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Maddox
+ },
+ [235] = {
+ .facilityClass = FACILITY_CLASS_DRAGON_TAMER,
+ .trainerName = _("DAVIN"),
+ .speechBefore = {EC_WORD_LET_S, EC_WORD_HEAR, EC_WORD_YOU, EC_MOVE2(ROAR), EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_WROOOAAR_EXCL, 0xFFFF, 0xFFFF, EC_WORD_VICTORY, EC_WORD_EXCL_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_WROOOAAR_EXCL, 0xFFFF, 0xFFFF, EC_WORD_WHY, EC_WORD_QUES_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Davin
+ },
+ [236] = {
+ .facilityClass = FACILITY_CLASS_DRAGON_TAMER,
+ .trainerName = _("TREVON"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_LIVING, EC_WORD_ONLY, EC_WORD_WITH, EC_WORD_DRAGON, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_THE, EC_WORD_WAY, EC_WORD_I_AM, EC_WORD_LIVING, EC_WORD_IS, EC_WORD_PERFECT},
+ .speechLose = {EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_THE, EC_WORD_WAY, EC_WORD_I_AM, EC_WORD_LIVING},
+ .monSets = gBattleFrontierTrainerMons_Trevon
+ },
+ [237] = {
+ .facilityClass = FACILITY_CLASS_BLACK_BELT,
+ .trainerName = _("MATEO"),
+ .speechBefore = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_OVER, EC_WORD_SOON, EC_WORD_ENOUGH},
+ .speechWin = {EC_WORD_WELL, EC_WORD_THAT, EC_WORD_DIDN_T, EC_WORD_TAKE, EC_WORD_VERY, EC_WORD_MUCH},
+ .speechLose = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_SO, EC_WORD_SOON, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Mateo
+ },
+ [238] = {
+ .facilityClass = FACILITY_CLASS_BLACK_BELT,
+ .trainerName = _("BRET"),
+ .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_ROCK_SOLID, EC_WORD_POKEMON, EC_WORD_THE, EC_WORD_BEST},
+ .speechWin = {EC_WORD_TOUGHNESS, EC_WORD_IS, EC_WORD_THE, EC_WORD_WAY, EC_WORD_TO, EC_WORD_GO},
+ .speechLose = {EC_WORD_I, EC_WORD_ALSO, EC_WORD_HAVE, EC_WORD_A, EC_WORD_PLUSH_DOLL, EC_WORD_COLLECTION},
+ .monSets = gBattleFrontierTrainerMons_Bret
+ },
+ [239] = {
+ .facilityClass = FACILITY_CLASS_BLACK_BELT,
+ .trainerName = _("RAUL"),
+ .speechBefore = {EC_WORD_I, EC_WORD_REJECT, EC_WORD_EVERY, EC_WORD_WEAK, EC_WORD_TRAINER, 0xFFFF},
+ .speechWin = {EC_WORD_HUMPH, EC_WORD_EXCL, EC_WORD_ANOTHER, EC_WORD_WEAK, EC_WORD_TRAINER, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NOTHING, EC_WORD_WEAK, EC_WORD_ABOUT, EC_WORD_YOU},
+ .monSets = gBattleFrontierTrainerMons_Raul
+ },
+ [240] = {
+ .facilityClass = FACILITY_CLASS_BATTLE_GIRL,
+ .trainerName = _("KAY"),
+ .speechBefore = {EC_WORD_AND, EC_WORD_YET, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_QUES, 0xFFFF},
+ .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_GOOD, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_AT, EC_WORD_LAST, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Kay
+ },
+ [241] = {
+ .facilityClass = FACILITY_CLASS_BATTLE_GIRL,
+ .trainerName = _("ELENA"),
+ .speechBefore = {EC_WORD_A, EC_WORD_BATTLE, EC_WORD_GIRL, EC_WORD_THAT_S, EC_WORD_ME, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_ISN_T, EC_WORD_A, EC_WORD_BATTLE, EC_WORD_GIRL, EC_WORD_AWESOME, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU, EC_WORD_DISLIKE, EC_WORD_A, EC_WORD_BATTLE, EC_WORD_GIRL, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Elena
+ },
+ [242] = {
+ .facilityClass = FACILITY_CLASS_BATTLE_GIRL,
+ .trainerName = _("ALANA"),
+ .speechBefore = {EC_WORD_EAT, EC_WORD_MY, EC_WORD_INVINCIBLE, EC_WORD_ATTACK, EC_WORD_YOU, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_LEARN, 0xFFFF},
+ .speechLose = {EC_WORD_SO, EC_WORD_MUCH, EC_WORD_FOR, EC_WORD_MY, EC_WORD_INVINCIBLE, EC_WORD_ATTACK},
+ .monSets = gBattleFrontierTrainerMons_Alana
+ },
+ [243] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .trainerName = _("ALEXAS"),
+ .speechBefore = {EC_WORD_GOOD, EC_WORD_TO, EC_WORD_MEET_YOU, EC_WORD_YOUNG, EC_WORD_TRAINER, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_WAHAHAHA, EC_WORD_EXCL, 0xFFFF, EC_WORD_GIVE, EC_WORD_IT, EC_WORD_UP},
+ .speechLose = {EC_WORD_YOU, EC_WORD_ARE, EC_WORD_A, EC_WORD_STRONG, EC_WORD_TRAINER, EC_WORD_KID},
+ .monSets = gBattleFrontierTrainerMons_Alexas
+ },
+ [244] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .trainerName = _("WESTON"),
+ .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_PLAY, EC_WORD_DOWN, EC_WORD_ALL_RIGHT, EC_WORD_QUES},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_FAR, EC_WORD_TOO, EC_WORD_EASY, EC_WORD_TO, EC_WORD_ATTACK},
+ .speechLose = {EC_WORD_WELL, EC_WORD_WELL, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SURRENDER, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Weston
+ },
+ [245] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .trainerName = _("JASPER"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_OLD, EC_WORD_I_AM, EC_WORD_SKILLED, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_SKILLED, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_SHOCKED, EC_WORD_EXCL, EC_WORD_DOWN, EC_WORD_I, EC_WORD_GO},
+ .monSets = gBattleFrontierTrainerMons_Jasper
+ },
+ [246] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .trainerName = _("NADIA"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_ME, EC_WORD_DOWN, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_HAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_BEAT, EC_WORD_YOU},
+ .speechLose = {EC_WORD_I_AM, EC_MOVE2(BEAT_UP), EC_WORD_AND, EC_WORD_DOWNCAST, EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Nadia
+ },
+ [247] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .trainerName = _("MIRANDA"),
+ .speechBefore = {EC_WORD_WELL, EC_WORD_WELL, 0xFFFF, EC_WORD_LET_S, EC_WORD_START, 0xFFFF},
+ .speechWin = {EC_WORD_WHAT, EC_WORD_QUES, EC_WORD_DONE, EC_WORD_SO, EC_WORD_SOON, EC_WORD_QUES},
+ .speechLose = {EC_WORD_WELL, EC_WORD_I, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_I_AM, EC_WORD_TOO_WEAK},
+ .monSets = gBattleFrontierTrainerMons_Miranda
+ },
+ [248] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .trainerName = _("EMMA"),
+ .speechBefore = {EC_WORD_I_VE, EC_WORD_BEEN, EC_WORD_HEARING, EC_WORD_ABOUT, EC_WORD_YOU, 0xFFFF},
+ .speechWin = {EC_WORD_I, EC_WORD_THINK, EC_WORD_I_VE, EC_WORD_MISHEARD, EC_WORD_THINGS, 0xFFFF},
+ .speechLose = {EC_WORD_WHAT, EC_WORD_I_VE, EC_WORD_BEEN, EC_WORD_HEARING, EC_WORD_IS, EC_WORD_RIGHT},
+ .monSets = gBattleFrontierTrainerMons_Emma
+ },
+ [249] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_M,
+ .trainerName = _("ROLANDO"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_SUPER, EC_WORD_POKEMON, EC_WORD_HERO, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_WAS, EC_WORD_THAT, EC_WORD_ENOUGH, EC_WORD_FOR, EC_WORD_YOU, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_BEAT, EC_WORD_A, EC_WORD_HERO},
+ .monSets = gBattleFrontierTrainerMons_Rolando
+ },
+ [250] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_M,
+ .trainerName = _("STANLY"),
+ .speechBefore = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_AN, EC_WORD_EASY, EC_WORD_MATCH},
+ .speechWin = {EC_WORD_IT, EC_WORD_REALLY, EC_WORD_WAS, EC_WORD_EASY, 0xFFFF, 0xFFFF},
+ .speechLose = {EC_WORD_ARE, EC_WORD_YOU, EC_WORD_HAPPY, EC_WORD_NOW, EC_WORD_QUES, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Stanly
+ },
+ [251] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_M,
+ .trainerName = _("DARIO"),
+ .speechBefore = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_SAYS, EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN},
+ .speechWin = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_HAS, EC_WORD_BEEN, EC_WORD_PERFECT, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_SEE, EC_WORD_THIS, EC_MOVE(REVERSAL), EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Dario
+ },
+ [252] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_F,
+ .trainerName = _("KARLEE"),
+ .speechBefore = {EC_WORD_SOMETHING, EC_WORD_GOOD, EC_WORD_WILL, EC_WORD_COME, EC_WORD_OF, EC_WORD_THIS},
+ .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_FANTASTIC, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_THAT, EC_WORD_SOMETHING, EC_WORD_GOOD, EC_WORD_WENT, EC_WORD_TO, EC_WORD_YOU},
+ .monSets = gBattleFrontierTrainerMons_Karlee
+ },
+ [253] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_F,
+ .trainerName = _("JAYLIN"),
+ .speechBefore = {EC_WORD_EVERY, EC_WORD_TRAINER, EC_WORD_HAS, EC_WORD_BEEN, EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_MAKING, EC_WORD_ME, EC_MOVE(YAWN), EC_WORD_THAT, EC_WORD_BATTLE},
+ .speechLose = {EC_WORD_I, EC_WORD_SLEPT, EC_WORD_AND, EC_WORD_SO, EC_WORD_I, EC_WORD_LOST},
+ .monSets = gBattleFrontierTrainerMons_Jaylin
+ },
+ [254] = {
+ .facilityClass = FACILITY_CLASS_PSYCHIC_F,
+ .trainerName = _("INGRID"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_A, EC_WORD_VERY, EC_WORD_MEAN, EC_WORD_TRAINER},
+ .speechWin = {EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_A, EC_WORD_GOOD, EC_WORD_MATCH, EC_WORD_QUES},
+ .speechLose = {EC_WORD_I, EC_WORD_LOST, EC_WORD_CAUSE, EC_WORD_YOU_RE, EC_WORD_MEAN, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Ingrid
+ },
+ [255] = {
+ .facilityClass = FACILITY_CLASS_HEX_MANIAC,
+ .trainerName = _("DELILAH"),
+ .speechBefore = {EC_WORD_DON_T, EC_MOVE(GRUDGE), EC_WORD_ME, EC_WORD_IF_I_WIN, EC_WORD_OK_QUES, 0xFFFF},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_TO, EC_WORD_SEE, EC_WORD_YOU, EC_WORD_ANGRY},
+ .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_MOVE(GRUDGE), EC_WORD_WITH, EC_WORD_YOU},
+ .monSets = gBattleFrontierTrainerMons_Delilah
+ },
+ [256] = {
+ .facilityClass = FACILITY_CLASS_HEX_MANIAC,
+ .trainerName = _("CARLY"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_SCATTER, EC_WORD_SOME, EC_MOVE2(POISON_POWDER), EC_WORD_ABOUT},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_SCARY, EC_WORD_HOW, EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_WORKS},
+ .speechLose = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_YOU, EC_WORD_AND, EC_WORD_YOUR, EC_WORD_POKEMON},
+ .monSets = gBattleFrontierTrainerMons_Carly
+ },
+ [257] = {
+ .facilityClass = FACILITY_CLASS_HEX_MANIAC,
+ .trainerName = _("LEXIE"),
+ .speechBefore = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_SEE, EC_WORD_SCARY, EC_WORD_POKEMON, EC_WORD_QUES},
+ .speechWin = {EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_SCARY, EC_WORD_EH_QUES, 0xFFFF, 0xFFFF},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_MORE, EC_WORD_SCARY, EC_WORD_THAN, EC_WORD_MY, EC_WORD_POKEMON},
+ .monSets = gBattleFrontierTrainerMons_Lexie
+ },
+ [258] = {
+ .facilityClass = FACILITY_CLASS_POKEMANIAC,
+ .trainerName = _("MILLER"),
+ .speechBefore = {EC_WORD_HELLO, EC_WORD_QUES, 0xFFFF, EC_WORD_HELLO, EC_WORD_QUES_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_HELLO, EC_WORD_MOTHER, EC_WORD_EXCL, EC_WORD_I, EC_WORD_WON, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_MY, EC_WORD_PHONE, EC_WORD_ISN_T, EC_WORD_WORKING, EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Miller
+ },
+ [259] = {
+ .facilityClass = FACILITY_CLASS_POKEMANIAC,
+ .trainerName = _("MARV"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_LOSE, EC_WORD_YOUR, EC_MOVE(SWAGGER), EC_WORD_NOW},
+ .speechWin = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NO, EC_MOVE(SWAGGER), EC_WORD_LEFT, EC_WORD_EH_QUES},
+ .speechLose = {EC_WORD_GO, EC_WORD_ON, EC_MOVE(SWAGGER), EC_WORD_ALL, EC_WORD_YOU, EC_WORD_WANT},
+ .monSets = gBattleFrontierTrainerMons_Marv
+ },
+ [260] = {
+ .facilityClass = FACILITY_CLASS_POKEMANIAC,
+ .trainerName = _("LAYTON"),
+ .speechBefore = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_I_AM, EC_WORD_TOTALLY, EC_WORD_COOL, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_LOOK, EC_WORD_UP, EC_WORD_TO, EC_WORD_ME},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_COOL, EC_WORD_EXCL, EC_WORD_NO, EC_WORD_REALLY, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Layton
+ },
+ [261] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("BROOKS"),
+ .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_HIGH, EC_WORD_LEVEL, EC_WORD_BATTLE},
+ .speechWin = {EC_WORD_THAT_WAS, EC_WORD_HIGH, EC_WORD_LEVEL, EC_WORD_AND, EC_WORD_EXCITING, EC_WORD_TOO},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_TOO, EC_WORD_HIGH, EC_WORD_IN, EC_WORD_LEVEL, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Brooks
+ },
+ [262] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("GREGORY"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_THAT, EC_WORD_OLD, EC_WORD_YET, 0xFFFF},
+ .speechWin = {EC_WORD_WHO, EC_WORD_SAYS, EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_OLD, EC_WORD_QUES},
+ .speechLose = {EC_WORD_PLEASE, EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_NOT, EC_WORD_THAT, EC_WORD_OLD},
+ .monSets = gBattleFrontierTrainerMons_Gregory
+ },
+ [263] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("REESE"),
+ .speechBefore = {EC_WORD_I_VE, EC_WORD_A, EC_WORD_COUPLE, EC_WORD_THINGS, 0xFFFF, 0xFFFF},
+ .speechWin = {EC_WORD_DON_T, EC_WORD_DIET, EC_WORD_PLAY, EC_WORD_SPORTS, EC_WORD_INSTEAD, 0xFFFF},
+ .speechLose = {EC_WORD_INSTEAD, EC_WORD_OF, EC_WORD_TELEVISION, EC_WORD_GET, EC_WORD_A, EC_WORD_BOOK},
+ .monSets = gBattleFrontierTrainerMons_Reese
+ },
+ [264] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ .trainerName = _("MASON"),
+ .speechBefore = {EC_WORD_PLEASE, EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_THIS, EC_WORD_SCARY, 0xFFFF},
+ .speechWin = {EC_WORD_THANK_YOU, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_NOW},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_DISAPPOINTED, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Mason
+ },
+ [265] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ .trainerName = _("TOBY"),
+ .speechBefore = {EC_WORD_LISTEN, EC_WORD_UP, 0xFFFF, EC_WORD_I, EC_WORD_ALWAYS, EC_WORD_WIN},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_OR, EC_WORD_WHAT, EC_WORD_QUES},
+ .speechLose = {EC_WORD_I, EC_WORD_CAN, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_AT, EC_WORD_SMARTNESS},
+ .monSets = gBattleFrontierTrainerMons_Toby
+ },
+ [266] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ .trainerName = _("DOROTHY"),
+ .speechBefore = {EC_WORD_THE, EC_WORD_SPORTS, EC_WORD_WORLD, EC_WORD_SHOULD, EC_WORD_ACCEPT, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_THANK_YOU, EC_WORD_EXCL, EC_WORD_THAT, EC_WORD_WIN, EC_WORD_WAS, EC_WORD_REFRESHING},
+ .speechLose = {EC_WORD_THANK_YOU, EC_WORD_EXCL, EC_WORD_THAT, EC_WORD_LOSS, EC_WORD_WAS, EC_WORD_REFRESHING},
+ .monSets = gBattleFrontierTrainerMons_Dorothy
+ },
+ [267] = {
+ .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ .trainerName = _("PIPER"),
+ .speechBefore = {EC_WORD_COME_ON, EC_WORD_YOU, EC_WORD_NEED, EC_WORD_A, EC_WORD_SPEED_BOOST, EC_WORD_QUES},
+ .speechWin = {EC_WORD_YOU, EC_WORD_NEED, EC_WORD_TO, EC_WORD_SHOW, EC_WORD_MORE, EC_WORD_GUTS},
+ .speechLose = {EC_WORD_OH, EC_WORD_YOU, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Piper
+ },
+ [268] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("FINN"),
+ .speechBefore = {EC_WORD_NOT, EC_WORD_ANOTHER, EC_WORD_TRAINER, EC_WORD_BATTLE, EC_WORD_ELLIPSIS, 0xFFFF},
+ .speechWin = {EC_WORD_WON_T, EC_WORD_THIS, EC_WORD_EVER, EC_WORD_END, EC_WORD_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_FINALLY, EC_WORD_GET, EC_WORD_TO, EC_MOVE2(REST), EC_WORD_A_LITTLE},
+ .monSets = gBattleFrontierTrainerMons_Finn
+ },
+ [269] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .trainerName = _("SAMIR"),
+ .speechBefore = {EC_WORD_I, EC_MOVE2(DIVE), EC_WORD_BELOW, EC_WORD_THE, EC_MOVE2(SURF), EC_WORD_EXCL},
+ .speechWin = {EC_WORD_YAHOO, EC_WORD_TAKE, EC_WORD_A, EC_MOVE2(DIVE), EC_WORD_YOU, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_SINK, EC_WORD_ELLIPSIS, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Samir
+ },
+ [270] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("FIONA"),
+ .speechBefore = {EC_WORD_DID, EC_WORD_YOU, EC_WORD_LIMBER, EC_WORD_UP, EC_WORD_BEFORE, EC_WORD_QUES},
+ .speechWin = {EC_WORD_YOU, EC_WORD_NEED, EC_WORD_TO, EC_WORD_BE, EC_WORD_MORE, EC_WORD_READY},
+ .speechLose = {EC_WORD_BEING, EC_WORD_LIMBER, EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_FOR, EC_WORD_ME},
+ .monSets = gBattleFrontierTrainerMons_Fiona
+ },
+ [271] = {
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .trainerName = _("GLORIA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_ATTACK, EC_WORD_WITH, EC_WORD_SUCTION_CUPS},
+ .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_FOR, EC_WORD_YOU},
+ .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_HOW, EC_WORD_SUCTION_CUPS, EC_WORD_WORK},
+ .monSets = gBattleFrontierTrainerMons_Gloria
+ },
+ [272] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .trainerName = _("NICO"),
+ .speechBefore = {EC_WORD_LIKE, EC_WORD_A, EC_MOVE(SONIC_BOOM), EC_WORD_I_VE_ARRIVED, 0xFFFF, 0xFFFF},
+ .speechWin = {EC_WORD_SORRY, EC_WORD_TO, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SO, EC_WORD_DOWNCAST},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_WITH, EC_WORD_A, EC_MOVE2(SUPERSONIC), EC_WORD_SPEED_BOOST},
+ .monSets = gBattleFrontierTrainerMons_Nico
+ },
+ [273] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .trainerName = _("JEREMY"),
+ .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_MASTER, EC_WORD_THAT_S, EC_WORD_MY, EC_WORD_DREAM},
+ .speechWin = {EC_WORD_MY, EC_WORD_DREAM, EC_WORD_ISN_T, EC_WORD_FAR, EC_WORD_OFF, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_WHAT, EC_WORD_I, EC_WORD_DREAM, EC_WORD_ISN_T, EC_WORD_HAPPENING, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Jeremy
+ },
+ [274] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ .trainerName = _("CAITLIN"),
+ .speechBefore = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_I_AM, EC_WORD_CUTE, EC_WORD_QUES},
+ .speechWin = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_MORE, EC_WORD_TO_ME, EC_WORD_THAN, EC_WORD_CUTENESS},
+ .speechLose = {EC_WORD_MY, EC_WORD_CUTE_CHARM, EC_WORD_DOESN_T, EC_MOVE2(ATTRACT), EC_WORD_YOU, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Caitlin
+ },
+ [275] = {
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ .trainerName = _("REENA"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_ALWAYS, EC_WORD_HAPPY, EC_WORD_HAPPY, EC_WORD_HAPPY, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_OH, EC_WORD_YAY, EC_WORD_EXCL, EC_WORD_YAHOO, EC_WORD_FOR, EC_WORD_ME},
+ .speechLose = {EC_WORD_YAHOO, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_FOR, EC_WORD_YOU},
+ .monSets = gBattleFrontierTrainerMons_Reena
+ },
+ [276] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("AVERY"),
+ .speechBefore = {EC_WORD_I_VE, EC_WORD_GOT, EC_WORD_A_LOT, EC_WORD_OF, EC_WORD_BUG, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_MY, EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_ALL, EC_WORD_UNBELIEVABLE},
+ .speechLose = {EC_WORD_MY, EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_ALL, EC_WORD_UPSIDE_DOWN},
+ .monSets = gBattleFrontierTrainerMons_Avery
+ },
+ [277] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("LIAM"),
+ .speechBefore = {EC_WORD_WE, EC_WORD_REALLY, EC_WORD_DISLIKE, EC_WORD_FIRE, EC_WORD_AND, EC_WORD_FLYING},
+ .speechWin = {EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_AREN_T, EC_WORD_BAD, EC_WORD_HEY_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_WHAT, EC_WORD_WE, EC_WORD_DISLIKE, EC_WORD_HEY_QUES},
+ .monSets = gBattleFrontierTrainerMons_Liam
+ },
+ [278] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("THEO"),
+ .speechBefore = {EC_WORD_FISHING, EC_WORD_IS, EC_WORD_MY, EC_WORD_CHOICE, EC_WORD_IN, EC_WORD_LIFE},
+ .speechWin = {EC_WORD_WATER, EC_WORD_POKEMON, EC_MOVE2(ATTRACT), EC_WORD_ME, EC_WORD_WITHOUT, EC_WORD_END},
+ .speechLose = {EC_WORD_DON_T, EC_WORD_COUNT_ON, EC_WORD_THAT, EC_WORD_HAPPENING, EC_WORD_ANOTHER, EC_WORD_TIME},
+ .monSets = gBattleFrontierTrainerMons_Theo
+ },
+ [279] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("BAILEY"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_I, EC_WORD_BATTLE, EC_WORD_EASY},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_I, EC_MOVE2(SWALLOW), EC_WORD_JOY},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_I, EC_MOVE2(SWALLOW), EC_MOVE2(FRUSTRATION)},
+ .monSets = gBattleFrontierTrainerMons_Bailey
+ },
+ [280] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("HUGO"),
+ .speechBefore = {EC_WORD_I, EC_WORD_TRY, EC_WORD_THE, EC_WORD_BEST, EC_WORD_I, EC_WORD_CAN},
+ .speechWin = {EC_WORD_I, EC_WORD_CAN_WIN, EC_WORD_IF, EC_WORD_I, EC_WORD_TRY, EC_WORD_ENOUGH},
+ .speechLose = {EC_WORD_I, EC_WORD_DID, EC_WORD_TRY, EC_WORD_DIDN_T, EC_WORD_I, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Hugo
+ },
+ [281] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("BRYCE"),
+ .speechBefore = {EC_WORD_I_WAS, EC_WORD_ON, EC_WORD_VACATION, EC_WORD_UNTIL, EC_WORD_ONLY, EC_WORD_YESTERDAY},
+ .speechWin = {EC_WORD_I, EC_WORD_HAVEN_T, EC_WORD_LOST, EC_WORD_MY, EC_WORD_SKILL, EC_WORD_YET},
+ .speechLose = {EC_WORD_THAT_S, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_NEED, EC_WORD_SLEEP},
+ .monSets = gBattleFrontierTrainerMons_Bryce
+ },
+ [282] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("GIDEON"),
+ .speechBefore = {EC_WORD_WHAT_S_UP_QUES, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_I_AM, EC_WORD_SCARY, EC_WORD_QUES},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_COOL, EC_WORD_BUT, EC_WORD_NOT, EC_WORD_SCARY, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_FABULOUS, EC_WORD_FASHION, EC_WORD_SENSE},
+ .monSets = gBattleFrontierTrainerMons_Gideon
+ },
+ [283] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("TRISTON"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_RATHER, EC_WORD_LOOK, EC_WORD_AT, EC_WORD_POKEMON},
+ .speechWin = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES_EXCL},
+ .speechLose = {EC_WORD_SEE, EC_WORD_QUES, 0xFFFF, EC_WORD_I, EC_WORD_ALWAYS, EC_WORD_LOSE},
+ .monSets = gBattleFrontierTrainerMons_Triston
+ },
+ [284] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("CHARLES"),
+ .speechBefore = {EC_WORD_IT_S, EC_WORD_HOPELESS, EC_WORD_TO, EC_MOVE2(STRUGGLE), EC_WORD_WITH, EC_WORD_ME},
+ .speechWin = {EC_MOVE(SUBMISSION), EC_WORD_WAS, EC_WORD_YOUR, EC_WORD_ONLY, EC_WORD_CHOICE, 0xFFFF},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_DOWN, EC_WORD_DOWN, EC_WORD_DOWN, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Charles
+ },
+ [285] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("RAYMOND"),
+ .speechBefore = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_HEAR, EC_WORD_MY, EC_WORD_SONG, EC_WORD_QUES},
+ .speechWin = {EC_WORD_SATISFIED, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_SATISFIED, EC_WORD_IS, EC_WORD_WHAT, EC_WORD_I, EC_WORD_CAN_T, EC_WORD_BE},
+ .monSets = gBattleFrontierTrainerMons_Raymond
+ },
+ [286] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("DIRK"),
+ .speechBefore = {EC_WORD_FLYING, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_ABOVE, EC_WORD_THE, EC_MOVE2(REST)},
+ .speechWin = {EC_WORD_YOU, EC_WORD_CAN_T_WIN, EC_WORD_EXCL, EC_WORD_FLYING, EC_WORD_POKEMON, EC_WORD_RULE},
+ .speechLose = {EC_WORD_AREN_T, EC_WORD_THERE, EC_WORD_MORE, EC_WORD_FLYING, EC_WORD_POKEMON, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Dirk
+ },
+ [287] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("HAROLD"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_APPEAL, EC_WORD_TO, EC_WORD_YOU, EC_WORD_QUES},
+ .speechWin = {EC_WORD_YOU, EC_WORD_DO, EC_WORD_LIKE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_QUES},
+ .speechLose = {EC_WORD_SO, EC_WORD_YOU, EC_WORD_DISLIKE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Harold
+ },
+ [288] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("OMAR"),
+ .speechBefore = {EC_WORD_LET_ME_WIN, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_FOR, EC_WORD_A, EC_MOVE2(PRESENT)},
+ .speechWin = {EC_WORD_HERE, EC_WORD_YOU, EC_WORD_ARE, EC_WORD_SOME, EC_MOVE2(TOXIC), EC_WORD_SWEETS},
+ .speechLose = {EC_WORD_YOUR, EC_MOVE2(PRESENT), EC_WORD_QUES, EC_WORD_WHAT, EC_WORD_FOR, EC_WORD_QUES_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Omar
+ },
+ [289] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("PETER"),
+ .speechBefore = {EC_WORD_I, EC_WORD_BRAG, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_OK_QUES},
+ .speechWin = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_LISTEN, EC_WORD_TO_ME, EC_WORD_BRAG},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_DISAPPOINTED, EC_WORD_YOU, EC_WORD_WON_T, EC_WORD_LISTEN, EC_WORD_TO_ME},
+ .monSets = gBattleFrontierTrainerMons_Peter
+ },
+ [290] = {
+ .facilityClass = FACILITY_CLASS_HIKER,
+ .trainerName = _("DEV"),
+ .speechBefore = {EC_WORD_COME_ON, EC_WORD_LET_S, EC_WORD_GET, EC_WORD_A, EC_WORD_MOVE, EC_WORD_ON},
+ .speechWin = {EC_WORD_I, EC_WORD_GET, EC_WORD_TO, EC_WORD_NAP, EC_WORD_AFTER, EC_WORD_THAT},
+ .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_NAP, EC_WORD_AFTER, EC_WORD_THAT},
+ .monSets = gBattleFrontierTrainerMons_Dev
+ },
+ [291] = {
+ .facilityClass = FACILITY_CLASS_HIKER,
+ .trainerName = _("COREY"),
+ .speechBefore = {EC_WORD_LET_S, EC_WORD_TEACH, EC_WORD_YOU, EC_WORD_HOW, EC_WORD_TOUGH, EC_WORD_I_AM},
+ .speechWin = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_ME, EC_WORD_MAKE, EC_WORD_A, EC_MOVE(BRICK_BREAK)},
+ .speechLose = {EC_WORD_MY, EC_MOVE2(FRUSTRATION), EC_WORD_IS, EC_WORD_CLOSE, EC_WORD_TO, EC_MOVE2(ERUPTION)},
+ .monSets = gBattleFrontierTrainerMons_Corey
+ },
+ [292] = {
+ .facilityClass = FACILITY_CLASS_KINDLER,
+ .trainerName = _("ANDRE"),
+ .speechBefore = {EC_WORD_NOW, EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_PERFECT, EC_WORD_FLAME_BODY},
+ .speechWin = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_FIERY, EC_WORD_DANCE, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOU, EC_WORD_WANT, EC_WORD_AN, EC_MOVE2(EXPLOSION), EC_WORD_HERE, EC_WORD_QUES},
+ .monSets = gBattleFrontierTrainerMons_Andre
+ },
+ [293] = {
+ .facilityClass = FACILITY_CLASS_KINDLER,
+ .trainerName = _("FERRIS"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_IN, EC_WORD_THE, EC_WORD_OLD, EC_WORD_CLASS},
+ .speechWin = {EC_WORD_NO_1, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_NO_1, EC_WORD_ANY, EC_WORD_MORE, EC_WORD_ELLIPSIS},
+ .monSets = gBattleFrontierTrainerMons_Ferris
+ },
+ [294] = {
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .trainerName = _("ALIVIA"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_GIDDY, EC_WORD_SO, EC_WORD_SHOULD, EC_WORD_YOU},
+ .speechWin = {EC_WORD_IT, EC_WORD_WAS, EC_WORD_ALL, EC_WORD_TOGETHER, EC_WORD_TOO, EC_WORD_EASY},
+ .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GIDDY, EC_WORD_UP, EC_WORD_AND, EC_WORD_AWAY},
+ .monSets = gBattleFrontierTrainerMons_Alivia
+ },
+ [295] = {
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .trainerName = _("PAIGE"),
+ .speechBefore = {EC_WORD_LET_S, EC_WORD_ENJOY, EC_WORD_OUR, EC_WORD_BATTLE, EC_WORD_TOGETHER, 0xFFFF},
+ .speechWin = {EC_WORD_THAT_S_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_THANK_YOU, EC_WORD_VERY, EC_WORD_MUCH},
+ .speechLose = {EC_WORD_THAT_S_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_DO, EC_WORD_GO, EC_WORD_ON},
+ .monSets = gBattleFrontierTrainerMons_Paige
+ },
+ [296] = {
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .trainerName = _("ANYA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_OH, EC_WORD_SO, EC_WORD_PRETTY, EC_WORD_FASHION},
+ .speechWin = {EC_WORD_FASHION, EC_WORD_SHOULD, EC_WORD_MATCH, EC_WORD_THE, EC_WORD_PERSON, 0xFFFF},
+ .speechLose = {EC_WORD_PRETTY, EC_WORD_COULD, EC_WORD_BE, EC_WORD_GOOD, 0xFFFF, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Anya
+ },
+ [297] = {
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .trainerName = _("DAWN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_GO, EC_WORD_ALL, EC_WORD_OUT, EC_WORD_EXCL, 0xFFFF},
+ .speechWin = {EC_WORD_DON_T, EC_WORD_BE, EC_WORD_A, EC_WORD_BABY, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_YOU, EC_WORD_WON, EC_WORD_EXCL, EC_WORD_MOVE, EC_WORD_ON, EC_WORD_EXCL},
+ .monSets = gBattleFrontierTrainerMons_Dawn
+ },
+ [298] = {
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .trainerName = _("ABBY"),
+ .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_THAT_S, EC_WORD_REFRESHING},
+ .speechWin = {EC_WORD_VICTORY, EC_WORD_HAS, EC_WORD_A, EC_MOVE(SWEET_SCENT), EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_WHAT, EC_WORD_AN, EC_WORD_AWFUL, EC_WORD_STENCH, EC_WORD_EXCL, 0xFFFF},
+ .monSets = gBattleFrontierTrainerMons_Abby
+ },
+ [299] = {
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .trainerName = _("GRETEL"),
+ .speechBefore = {EC_WORD_I, EC_WORD_CAUSE, EC_MOVE(OUTRAGE), EC_WORD_AS, EC_WORD_A, EC_WORD_TRAINER},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_ONLY, EC_WORD_NATURAL, EC_WORD_SEE_YA, EC_WORD_BYE_BYE, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_IT_S, EC_WORD_HARD, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_BUT, EC_WORD_CONGRATS},
+ .monSets = gBattleFrontierTrainerMons_Gretel
+ }
+};
diff --git a/src/data/battle_frontier/battle_tent.h b/src/data/battle_frontier/battle_tent.h
new file mode 100644
index 000000000..946ca0187
--- /dev/null
+++ b/src/data/battle_frontier/battle_tent.h
@@ -0,0 +1,3005 @@
+// Slateport Battle Tent.
+const u16 gSlateportBattleTentTrainerMons_Jolie[] =
+{
+ 9,
+ 10,
+ 13,
+ 27,
+ 35,
+ 37,
+ 42,
+ 44,
+ 45,
+ 46,
+ 63,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Malachi[] =
+{
+ 9,
+ 16,
+ 17,
+ 27,
+ 36,
+ 39,
+ 42,
+ 45,
+ 48,
+ 49,
+ 53,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Kelsie[] =
+{
+ 4,
+ 5,
+ 6,
+ 11,
+ 28,
+ 34,
+ 35,
+ 37,
+ 43,
+ 51,
+ 53,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Davon[] =
+{
+ 4,
+ 5,
+ 6,
+ 12,
+ 26,
+ 36,
+ 37,
+ 38,
+ 40,
+ 44,
+ 46,
+ 50,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Glenda[] =
+{
+ 0,
+ 1,
+ 17,
+ 18,
+ 19,
+ 22,
+ 23,
+ 33,
+ 42,
+ 61,
+ 64,
+ 65,
+ 66,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Helena[] =
+{
+ 18,
+ 19,
+ 21,
+ 38,
+ 39,
+ 41,
+ 42,
+ 52,
+ 54,
+ 58,
+ 63,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Rodolfo[] =
+{
+ 0,
+ 1,
+ 4,
+ 5,
+ 7,
+ 8,
+ 18,
+ 20,
+ 21,
+ 37,
+ 38,
+ 40,
+ 62,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Davion[] =
+{
+ 17,
+ 23,
+ 24,
+ 25,
+ 31,
+ 32,
+ 33,
+ 34,
+ 39,
+ 43,
+ 44,
+ 49,
+ 57,
+ 69,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Kendall[] =
+{
+ 4,
+ 7,
+ 8,
+ 9,
+ 11,
+ 12,
+ 13,
+ 27,
+ 38,
+ 40,
+ 45,
+ 46,
+ 47,
+ 63,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Colten[] =
+{
+ 0,
+ 2,
+ 12,
+ 22,
+ 28,
+ 30,
+ 35,
+ 38,
+ 43,
+ 44,
+ 56,
+ 57,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Irvin[] =
+{
+ 0,
+ 1,
+ 2,
+ 3,
+ 14,
+ 15,
+ 24,
+ 25,
+ 32,
+ 34,
+ 39,
+ 59,
+ 60,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Shaun[] =
+{
+ 17,
+ 18,
+ 19,
+ 22,
+ 29,
+ 36,
+ 42,
+ 48,
+ 61,
+ 62,
+ 66,
+ 68,
+ 69,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Kyler[] =
+{
+ 22,
+ 23,
+ 28,
+ 29,
+ 31,
+ 32,
+ 34,
+ 39,
+ 55,
+ 64,
+ 65,
+ 67,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Maggie[] =
+{
+ 10,
+ 13,
+ 17,
+ 27,
+ 45,
+ 46,
+ 53,
+ 56,
+ 61,
+ 62,
+ 63,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Stephon[] =
+{
+ 8,
+ 10,
+ 16,
+ 23,
+ 29,
+ 43,
+ 44,
+ 60,
+ 62,
+ 63,
+ 68,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Rebecca[] =
+{
+ 8,
+ 13,
+ 21,
+ 29,
+ 33,
+ 41,
+ 48,
+ 54,
+ 59,
+ 61,
+ 68,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Reggie[] =
+{
+ 6,
+ 7,
+ 17,
+ 23,
+ 24,
+ 26,
+ 32,
+ 36,
+ 52,
+ 53,
+ 57,
+ 65,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Janae[] =
+{
+ 0,
+ 1,
+ 27,
+ 28,
+ 32,
+ 34,
+ 36,
+ 37,
+ 52,
+ 53,
+ 57,
+ 65,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Caiden[] =
+{
+ 10,
+ 14,
+ 15,
+ 16,
+ 20,
+ 21,
+ 25,
+ 30,
+ 35,
+ 47,
+ 48,
+ 50,
+ 69,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Kirsten[] =
+{
+ 10,
+ 16,
+ 18,
+ 19,
+ 20,
+ 21,
+ 25,
+ 30,
+ 35,
+ 39,
+ 41,
+ 48,
+ 69,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Kurtis[] =
+{
+ 0,
+ 1,
+ 36,
+ 37,
+ 40,
+ 46,
+ 49,
+ 51,
+ 64,
+ 67,
+ 68,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Stefan[] =
+{
+ 4,
+ 5,
+ 21,
+ 33,
+ 37,
+ 38,
+ 40,
+ 51,
+ 52,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Avery[] =
+{
+ 2,
+ 3,
+ 7,
+ 8,
+ 22,
+ 23,
+ 28,
+ 29,
+ 30,
+ 51,
+ 67,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Dwane[] =
+{
+ 14,
+ 15,
+ 30,
+ 43,
+ 44,
+ 45,
+ 46,
+ 55,
+ 58,
+ 59,
+ 63,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Mckenna[] =
+{
+ 27,
+ 29,
+ 30,
+ 32,
+ 36,
+ 48,
+ 51,
+ 52,
+ 53,
+ 57,
+ 67,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Camryn[] =
+{
+ 5,
+ 6,
+ 7,
+ 8,
+ 10,
+ 16,
+ 17,
+ 20,
+ 21,
+ 37,
+ 43,
+ 44,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Natasha[] =
+{
+ 1,
+ 3,
+ 4,
+ 5,
+ 9,
+ 11,
+ 12,
+ 20,
+ 21,
+ 22,
+ 51,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Austyn[] =
+{
+ 25,
+ 31,
+ 35,
+ 37,
+ 38,
+ 39,
+ 50,
+ 51,
+ 52,
+ 58,
+ 68,
+ 69,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Donovan[] =
+{
+ 10,
+ 16,
+ 17,
+ 24,
+ 25,
+ 43,
+ 44,
+ 47,
+ 49,
+ 53,
+ 59,
+ 60,
+ 64,
+ 65,
+ -1
+};
+
+const u16 gSlateportBattleTentTrainerMons_Tamia[] =
+{
+ 2,
+ 6,
+ 9,
+ 13,
+ 17,
+ 19,
+ 20,
+ 24,
+ 27,
+ 29,
+ 30,
+ -1
+};
+
+const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] =
+{
+ [0] = {
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .trainerName = _("JOLIE"),
+ .speechBefore = {EC_WORD_WHAT, EC_WORD_WILL, EC_WORD_I, EC_WORD_BE, EC_WORD_TOMORROW, EC_WORD_QUES},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_LIKE, EC_WORD_IT_S, EC_WORD_FRIDAY, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_LIKE, EC_WORD_IT_S, EC_WORD_MONDAY, EC_WORD_ELLIPSIS},
+ .monSets = gSlateportBattleTentTrainerMons_Jolie
+ },
+ [1] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("MALACHI"),
+ .speechBefore = {EC_WORD_BAD, EC_WORD_NEWS, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_A, EC_MOVE(SAND_TOMB)},
+ .speechWin = {EC_WORD_YEEHAW_EXCL, -1, -1, EC_WORD_I_VE, EC_WORD_DONE, EC_WORD_IT},
+ .speechLose = {EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_IN, EC_WORD_THIS, EC_MOVE(SAND_TOMB), EC_WORD_ELLIPSIS},
+ .monSets = gSlateportBattleTentTrainerMons_Malachi
+ },
+ [2] = {
+ .facilityClass = FACILITY_CLASS_TUBER_F,
+ .trainerName = _("KELSIE"),
+ .speechBefore = {EC_WORD_GO, EC_WORD_EXCL_EXCL, EC_WORD_MY, EC_WORD_BATH, EC_WORD_POKEMON, EC_WORD_EXCL_EXCL},
+ .speechWin = {EC_WORD_YAHOO, EC_WORD_EXCL_EXCL, EC_WORD_MY, EC_WORD_BATH, EC_WORD_POKEMON, EC_WORD_EXCL_EXCL},
+ .speechLose = {EC_WORD_GWAH, EC_WORD_EXCL_EXCL, EC_WORD_MY, EC_WORD_BATH, EC_WORD_POKEMON, EC_WORD_EXCL_EXCL},
+ .monSets = gSlateportBattleTentTrainerMons_Kelsie
+ },
+ [3] = {
+ .facilityClass = FACILITY_CLASS_TUBER_M,
+ .trainerName = _("DAVON"),
+ .speechBefore = {EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, -1, EC_WORD_GREAT, EC_MOVE(WHIRLPOOL), EC_WORD_ISN_T_IT_QUES},
+ .speechWin = {EC_WORD_THAT_WAS, EC_WORD_LIKE, EC_WORD_A, EC_MOVE(WHIRLPOOL), EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL},
+ .speechLose = {EC_WORD_DON_T, EC_WORD_GET, EC_MOVE2(BEAT_UP), EC_WORD_IN, EC_WORD_THAT, EC_MOVE(WHIRLPOOL)},
+ .monSets = gSlateportBattleTentTrainerMons_Davon
+ },
+ [4] = {
+ .facilityClass = FACILITY_CLASS_LADY,
+ .trainerName = _("GLENDA"),
+ .speechBefore = {EC_WORD_CONVERSATION, EC_WORD_CAN, EC_WORD_WAIT, EC_WORD_UNTIL, EC_WORD_I, EC_WORD_WIN},
+ .speechWin = {EC_WORD_FABULOUS, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_ROCK},
+ .speechLose = {EC_WORD_NO, EC_WORD_EXCL, -1, EC_WORD_I, EC_WORD_WASN_T, EC_WORD_SERIOUS},
+ .monSets = gSlateportBattleTentTrainerMons_Glenda
+ },
+ [5] = {
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .trainerName = _("HELENA"),
+ .speechBefore = {EC_WORD_DOES, EC_WORD_MY, EC_WORD_BEAUTY, EC_WORD_INTIMIDATE, EC_WORD_YOU, EC_WORD_QUES},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_BORING},
+ .speechLose = {EC_WORD_I, EC_WORD_DO, EC_WORD_SO, EC_WORD_ENJOY, EC_WORD_THIS, EC_WORD_EXCL},
+ .monSets = gSlateportBattleTentTrainerMons_Helena
+ },
+ [6] = {
+ .facilityClass = FACILITY_CLASS_RICH_BOY,
+ .trainerName = _("RODOLFO"),
+ .speechBefore = {EC_WORD_GO, EC_WORD_GET, EC_WORD_A, EC_POKEMON(WHISCASH), EC_WORD_FOR, EC_WORD_ME},
+ .speechWin = {EC_WORD_AWW, EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_HAVE, EC_WORD_A, EC_POKEMON(WHISCASH)},
+ .speechLose = {EC_WORD_PLEASE, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_POKEMON(WHISCASH), EC_WORD_BADLY},
+ .monSets = gSlateportBattleTentTrainerMons_Rodolfo
+ },
+ [7] = {
+ .facilityClass = FACILITY_CLASS_POKEMANIAC,
+ .trainerName = _("DAVION"),
+ .speechBefore = {EC_WORD_GRAAAH, EC_WORD_GRAAAH, EC_WORD_EXCL_EXCL, EC_WORD_GRAAAH, EC_WORD_GRAAAH, EC_WORD_EXCL_EXCL},
+ .speechWin = {EC_MOVE2(ROAR), EC_WORD_EXCL, -1, EC_MOVE2(ROAR), EC_WORD_EXCL_EXCL, -1},
+ .speechLose = {EC_WORD_URGH, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, -1, -1, -1},
+ .monSets = gSlateportBattleTentTrainerMons_Davion
+ },
+ [8] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_M,
+ .trainerName = _("KENDALL"),
+ .speechBefore = {EC_WORD_A_LITTLE, EC_MOVE2(PETAL_DANCE), EC_WORD_TO, EC_WORD_PLEASE, EC_WORD_YOU, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_I, EC_WORD_DO, EC_WORD_THIS, EC_WORD_ONLY, EC_WORD_FOR, EC_WORD_WORK},
+ .speechLose = {EC_WORD_HOW, EC_WORD_COULD, EC_WORD_YOU, EC_MOVE2(POUND), EC_WORD_ME, EC_WORD_QUES},
+ .monSets = gSlateportBattleTentTrainerMons_Kendall
+ },
+ [9] = {
+ .facilityClass = FACILITY_CLASS_CAMPER,
+ .trainerName = _("COLTEN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_RUN, EC_WORD_AROUND},
+ .speechWin = {EC_WORD_YAY, EC_WORD_EXCL, EC_WORD_WANT, EC_WORD_TO, EC_WORD_RUN, EC_WORD_QUES},
+ .speechLose = {EC_WORD_A, EC_WORD_SWIFT_SWIM, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_GOOD, EC_WORD_TOO},
+ .monSets = gSlateportBattleTentTrainerMons_Colten
+ },
+ [10] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("IRVIN"),
+ .speechBefore = {EC_WORD_HAVE, EC_WORD_A, EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_MOVE(CONFUSE_RAY)},
+ .speechWin = {EC_WORD_YAHOO, EC_WORD_MY, EC_MOVE(CONFUSE_RAY), EC_WORD_IS, EC_WORD_THE, EC_WORD_BEST},
+ .speechLose = {EC_WORD_GWAH, EC_WORD_EXCL_EXCL, -1, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_EXCL},
+ .monSets = gSlateportBattleTentTrainerMons_Irvin
+ },
+ [11] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("SHAUN"),
+ .speechBefore = {EC_WORD_LISTEN, EC_WORD_ELLIPSIS, EC_WORD_YOU, EC_WORD_AREN_T, EC_WORD_VERY, EC_WORD_GOOD},
+ .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_WAS, EC_WORD_RIGHT},
+ .speechLose = {EC_WORD_YES, EC_WORD_YES, EC_WORD_ELLIPSIS, EC_WORD_YOU_RE, EC_WORD_QUITE, EC_WORD_SOMETHING},
+ .monSets = gSlateportBattleTentTrainerMons_Shaun
+ },
+ [12] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("KYLER"),
+ .speechBefore = {EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_QUES},
+ .speechWin = {EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_YAY},
+ .speechLose = {EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_WOW},
+ .monSets = gSlateportBattleTentTrainerMons_Kyler
+ },
+ [13] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .trainerName = _("MAGGIE"),
+ .speechBefore = {EC_POKEMON(VULPIX), EC_POKEMON(XATU), EC_POKEMON2(UMBREON), EC_WORD_ELLIPSIS, EC_WORD_UM, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_POKEMON(NOSEPASS), EC_WORD_ELLIPSIS, EC_WORD_UM, EC_POKEMON(SEVIPER), EC_WORD_EXCL, -1},
+ .speechLose = {EC_POKEMON(NOSEPASS), EC_WORD_ELLIPSIS, EC_WORD_UM, EC_POKEMON2(SNORLAX), EC_WORD_ELLIPSIS, EC_WORD_UH_OH},
+ .monSets = gSlateportBattleTentTrainerMons_Maggie
+ },
+ [14] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("STEPHON"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_ENJOY, EC_WORD_AN, EC_WORD_EGG},
+ .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_WORD_ENJOY, EC_WORD_THIS, EC_WORD_TASTY, EC_WORD_VICTORY},
+ .speechLose = {EC_WORD_AWFUL, EC_WORD_EXCL_EXCL, -1, EC_WORD_JUST, EC_WORD_AWFUL, EC_WORD_EXCL_EXCL},
+ .monSets = gSlateportBattleTentTrainerMons_Stephon
+ },
+ [15] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("REBECCA"),
+ .speechBefore = {EC_WORD_THAT, EC_WORD_EGG, EC_WORD_HAS, EC_WORD_A, EC_WORD_TASTY, EC_WORD_SHINE},
+ .speechWin = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_EXCL, EC_WORD_SMELL, EC_WORD_THAT, EC_WORD_STENCH},
+ .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_STOP, EC_WORD_ELLIPSIS},
+ .monSets = gSlateportBattleTentTrainerMons_Rebecca
+ },
+ [16] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .trainerName = _("REGGIE"),
+ .speechBefore = {EC_WORD_POKEMON, EC_WORD_COME, EC_WORD_BEFORE, EC_WORD_MONEY, EC_WORD_OR, EC_WORD_FAMILY},
+ .speechWin = {EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_ME, EC_WORD_STRONG},
+ .speechLose = {EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_THICK, EC_WORD_ELLIPSIS},
+ .monSets = gSlateportBattleTentTrainerMons_Reggie
+ },
+ [17] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .trainerName = _("JANAE"),
+ .speechBefore = {EC_WORD_I, EC_WORD_JUST, EC_WORD_ADORE, EC_WORD_YOUR, EC_WORD_TOUGH, EC_WORD_LOOK},
+ .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_HOW, EC_WORD_YOU, EC_MOVE2(STRUGGLE), -1},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_MEAN, EC_WORD_AND, EC_WORD_AWFUL, EC_WORD_TRAINER},
+ .monSets = gSlateportBattleTentTrainerMons_Janae
+ },
+ [18] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .trainerName = _("CAIDEN"),
+ .speechBefore = {EC_WORD_MY, EC_MOVE2(CURSE), EC_WORD_WILL, EC_WORD_BREAK, EC_WORD_YOUR, EC_WORD_SPIRIT},
+ .speechWin = {EC_MOVE2(CURSE), EC_WORD_QUES, EC_WORD_IT_S, EC_WORD_A, EC_WORD_LIE, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_MY, EC_MOVE2(CURSE), EC_WORD_WILL, EC_WORD_LAST, EC_WORD_FOREVER, -1},
+ .monSets = gSlateportBattleTentTrainerMons_Caiden
+ },
+ [19] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .trainerName = _("KIRSTEN"),
+ .speechBefore = {EC_WORD_HUH_QUES, EC_WORD_A, EC_WORD_BATTLE, EC_WORD_YOU, EC_WORD_SAID, EC_WORD_QUES},
+ .speechWin = {EC_WORD_HUH_QUES, EC_WORD_STRONG, EC_WORD_BUT, EC_WORD_NOT, EC_WORD_STRONG, EC_WORD_ENOUGH},
+ .speechLose = {EC_WORD_HUH_QUES, EC_WORD_I, EC_WORD_SURRENDER, EC_WORD_TO, EC_WORD_YOUR, EC_MOVE(STRENGTH)},
+ .monSets = gSlateportBattleTentTrainerMons_Kirsten
+ },
+ [20] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("KURTIS"),
+ .speechBefore = {EC_WORD_SORRY, EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GET, EC_MOVE2(BEAT_UP)},
+ .speechWin = {EC_WORD_I, EC_WORD_SAID, EC_WORD_WE, EC_WORD_WOULD, EC_MOVE2(POUND), EC_WORD_YOU},
+ .speechLose = {EC_WORD_HOW, EC_WORD_DID, EC_WORD_I, EC_WORD_GET, EC_MOVE2(BEAT_UP), EC_WORD_QUES},
+ .monSets = gSlateportBattleTentTrainerMons_Kurtis
+ },
+ [21] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("STEFAN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_WANT, EC_WORD_CUTE, EC_WORD_POKEMON, -1},
+ .speechWin = {EC_WORD_WHAT, EC_WORD_IS, EC_WORD_IT, EC_WORD_TO, EC_WORD_YOU, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_KIND, EC_WORD_OF, EC_WORD_AWESOME, EC_WORD_ELLIPSIS, -1},
+ .monSets = gSlateportBattleTentTrainerMons_Stefan
+ },
+ [22] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("AVERY"),
+ .speechBefore = {EC_WORD_TOYS, EC_WORD_EXCL, EC_WORD_I, EC_WORD_NEED, EC_WORD_MORE, EC_WORD_TOYS},
+ .speechWin = {EC_WORD_I, EC_WORD_NEED, EC_WORD_SOME, EC_WORD_EASY, EC_WORD_MONEY, EC_WORD_FAST},
+ .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_WORK, EC_WORD_FOR, EC_WORD_MONEY},
+ .monSets = gSlateportBattleTentTrainerMons_Avery
+ },
+ [23] = {
+ .facilityClass = FACILITY_CLASS_NINJA_BOY,
+ .trainerName = _("DWANE"),
+ .speechBefore = {EC_WORD_MMM, EC_WORD_TASTY, EC_WORD_ELLIPSIS, EC_WORD_WONDER, EC_WORD_WHAT, EC_WORD_QUES},
+ .speechWin = {EC_WORD_MMM, EC_WORD_MMM, EC_WORD_ELLIPSIS, EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_KNOW},
+ .speechLose = {EC_WORD_MMM, EC_WORD_MMM, EC_WORD_ELLIPSIS, EC_WORD_OH_YEAH, EC_WORD_THIS_IS_IT_EXCL, -1},
+ .monSets = gSlateportBattleTentTrainerMons_Dwane
+ },
+ [24] = {
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .trainerName = _("MCKENNA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_SMALL, EC_WORD_TALK, EC_WORD_LET_S, EC_WORD_GO},
+ .speechWin = {EC_WORD_YUP, EC_WORD_THAT_S, EC_WORD_THAT, -1, -1, -1},
+ .speechLose = {EC_WORD_KTHX_BYE, -1, -1, -1, -1, -1},
+ .monSets = gSlateportBattleTentTrainerMons_Mckenna
+ },
+ [25] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_F,
+ .trainerName = _("CAMRYN"),
+ .speechBefore = {EC_WORD_MR, EC_WORD_JUDGE, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_OUR, EC_WORD_TRUST},
+ .speechWin = {EC_WORD_YES_SIR_EXCL, EC_WORD_WE_RE, EC_WORD_NO_1, EC_WORD_IN, EC_WORD_THIS, EC_WORD_CONTEST},
+ .speechLose = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_GIVE_UP, EC_WORD_MY, EC_WORD_IDOL, EC_WORD_DREAM},
+ .monSets = gSlateportBattleTentTrainerMons_Camryn
+ },
+ [26] = {
+ .facilityClass = FACILITY_CLASS_PICNICKER,
+ .trainerName = _("NATASHA"),
+ .speechBefore = {EC_WORD_COME_OVER, EC_WORD_TO, EC_WORD_MY, EC_WORD_PLACE, EC_WORD_OK_QUES, -1},
+ .speechWin = {EC_WORD_COME_ON, EC_WORD_OVER, EC_WORD_IT, EC_WORD_WILL, EC_WORD_BE, EC_WORD_GREAT},
+ .speechLose = {EC_WORD_AWW, EC_WORD_WON_T, EC_WORD_YOU, EC_WORD_COME_OVER, EC_WORD_QUES, -1},
+ .monSets = gSlateportBattleTentTrainerMons_Natasha
+ },
+ [27] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("AUSTYN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_CARE, EC_WORD_HOW, EC_WORD_WE, EC_WORD_MATCH_UP},
+ .speechWin = {EC_WORD_HAH, EC_WORD_BACK, EC_WORD_TO, EC_WORD_SCHOOL, EC_WORD_FOR, EC_WORD_YOU},
+ .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MY, EC_WORD_LESSONS},
+ .monSets = gSlateportBattleTentTrainerMons_Austyn
+ },
+ [28] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("DONOVAN"),
+ .speechBefore = {EC_WORD_OH, EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_SLIMY, EC_WORD_ALL, EC_WORD_OVER},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_DOWN, EC_WORD_THE, EC_MOVE2(MEGA_DRAIN), EC_WORD_HAHAHA},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_NATURALLY, EC_WORD_SLIMY, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM},
+ .monSets = gSlateportBattleTentTrainerMons_Donovan
+ },
+ [29] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("TAMIA"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_ANGRY, EC_WORD_WITH, EC_WORD_MY, EC_WORD_FATHER, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_DISLIKE, EC_WORD_MY, EC_WORD_FATHER, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_JUST, EC_WORD_SO, EC_WORD_ADORE, EC_WORD_MY, EC_WORD_FATHER},
+ .monSets = gSlateportBattleTentTrainerMons_Tamia
+ }
+};
+
+const struct FacilityMon gSlateportBattleTentMons[] =
+{
+ [0] = {
+ .species = SPECIES_ZIGZAGOON,
+ .moves = {MOVE_TACKLE, MOVE_CHARM, MOVE_ODOR_SLEUTH, MOVE_PIN_MISSILE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [1] = {
+ .species = SPECIES_ZIGZAGOON,
+ .moves = {MOVE_DIG, MOVE_MUD_SPORT, MOVE_TAIL_WHIP, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [2] = {
+ .species = SPECIES_BEAUTIFLY,
+ .moves = {MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_GUST, MOVE_HARDEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [3] = {
+ .species = SPECIES_DUSTOX,
+ .moves = {MOVE_POISON_STING, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_GUST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [4] = {
+ .species = SPECIES_WAILMER,
+ .moves = {MOVE_ROLLOUT, MOVE_CURSE, MOVE_GROWL, MOVE_WHIRLPOOL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [5] = {
+ .species = SPECIES_WAILMER,
+ .moves = {MOVE_ROLLOUT, MOVE_GROWL, MOVE_WHIRLPOOL, MOVE_WATER_PULSE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [6] = {
+ .species = SPECIES_MARILL,
+ .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [7] = {
+ .species = SPECIES_WINGULL,
+ .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_WING_ATTACK, MOVE_STEEL_WING},
+ .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAIVE
+ },
+ [8] = {
+ .species = SPECIES_PELIPPER,
+ .moves = {MOVE_TWISTER, MOVE_WATER_SPORT, MOVE_GROWL, MOVE_WING_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [9] = {
+ .species = SPECIES_CACNEA,
+ .moves = {MOVE_SANDSTORM, MOVE_LEER, MOVE_LEECH_SEED, MOVE_PIN_MISSILE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SPEED,
+ .nature = NATURE_JOLLY
+ },
+ [10] = {
+ .species = SPECIES_LOMBRE,
+ .moves = {MOVE_ASTONISH, MOVE_WATER_GUN, MOVE_FAKE_OUT, MOVE_ABSORB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [11] = {
+ .species = SPECIES_LOTAD,
+ .moves = {MOVE_SYNTHESIS, MOVE_NATURE_POWER, MOVE_RAIN_DANCE, MOVE_MEGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_DOCILE
+ },
+ [12] = {
+ .species = SPECIES_SEEDOT,
+ .moves = {MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LEECH_SEED, MOVE_BIDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_TIMID
+ },
+ [13] = {
+ .species = SPECIES_NUZLEAF,
+ .moves = {MOVE_FAKE_OUT, MOVE_NATURE_POWER, MOVE_HARDEN, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [14] = {
+ .species = SPECIES_NINJASK,
+ .moves = {MOVE_FURY_CUTTER, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [15] = {
+ .species = SPECIES_NINJASK,
+ .moves = {MOVE_FURY_CUTTER, MOVE_DOUBLE_TEAM, MOVE_SCREECH, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAUGHTY
+ },
+ [16] = {
+ .species = SPECIES_GRAVELER,
+ .moves = {MOVE_MUD_SPORT, MOVE_BLOCK, MOVE_ROCK_TOMB, MOVE_MAGNITUDE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [17] = {
+ .species = SPECIES_BALTOY,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_ANCIENT_POWER, MOVE_PSYBEAM, MOVE_REFLECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAIVE
+ },
+ [18] = {
+ .species = SPECIES_MIGHTYENA,
+ .moves = {MOVE_BITE, MOVE_ROAR, MOVE_SWAGGER, MOVE_TACKLE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [19] = {
+ .species = SPECIES_MIGHTYENA,
+ .moves = {MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_SAND_ATTACK, MOVE_POISON_FANG},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [20] = {
+ .species = SPECIES_LINOONE,
+ .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_TAIL_WHIP, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_JOLLY
+ },
+ [21] = {
+ .species = SPECIES_GOLDEEN,
+ .moves = {MOVE_WATER_SPORT, MOVE_HORN_ATTACK, MOVE_WATERFALL, MOVE_SUPERSONIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_CALM
+ },
+ [22] = {
+ .species = SPECIES_ELECTRIKE,
+ .moves = {MOVE_BITE, MOVE_SPARK, MOVE_ROAR, MOVE_FLASH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_MODEST
+ },
+ [23] = {
+ .species = SPECIES_VOLTORB,
+ .moves = {MOVE_SPARK, MOVE_ROLLOUT, MOVE_CHARGE, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK,
+ .nature = NATURE_MILD
+ },
+ [24] = {
+ .species = SPECIES_ARON,
+ .moves = {MOVE_DIG, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ENDEAVOR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [25] = {
+ .species = SPECIES_ARON,
+ .moves = {MOVE_MUD_SLAP, MOVE_IRON_TAIL, MOVE_HARDEN, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [26] = {
+ .species = SPECIES_TRAPINCH,
+ .moves = {MOVE_BODY_SLAM, MOVE_FOCUS_ENERGY, MOVE_SAND_TOMB, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [27] = {
+ .species = SPECIES_CACNEA,
+ .moves = {MOVE_INGRAIN, MOVE_SANDSTORM, MOVE_POISON_STING, MOVE_DESTINY_BOND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_TIMID
+ },
+ [28] = {
+ .species = SPECIES_TAILLOW,
+ .moves = {MOVE_GROWL, MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_ENDEAVOR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [29] = {
+ .species = SPECIES_SWELLOW,
+ .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_FOCUS_ENERGY, MOVE_PECK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [30] = {
+ .species = SPECIES_GOLBAT,
+ .moves = {MOVE_ASTONISH, MOVE_GUST, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SPELL_TAG,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_TIMID
+ },
+ [31] = {
+ .species = SPECIES_LOUDRED,
+ .moves = {MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_SUPERSONIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [32] = {
+ .species = SPECIES_SPINDA,
+ .moves = {MOVE_DIZZY_PUNCH, MOVE_FAINT_ATTACK, MOVE_HYPNOSIS, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [33] = {
+ .species = SPECIES_MAGNEMITE,
+ .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SPARK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_SERIOUS
+ },
+ [34] = {
+ .species = SPECIES_WHISMUR,
+ .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HOWL, MOVE_BODY_SLAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [35] = {
+ .species = SPECIES_MAKUHITA,
+ .moves = {MOVE_SAND_ATTACK, MOVE_KNOCK_OFF, MOVE_ARM_THRUST, MOVE_BELLY_DRUM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [36] = {
+ .species = SPECIES_NUMEL,
+ .moves = {MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_GROWL, MOVE_FOCUS_ENERGY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_MODEST
+ },
+ [37] = {
+ .species = SPECIES_BARBOACH,
+ .moves = {MOVE_MAGNITUDE, MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_WATER_GUN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_JOLLY
+ },
+ [38] = {
+ .species = SPECIES_TENTACOOL,
+ .moves = {MOVE_SCREECH, MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [39] = {
+ .species = SPECIES_VIGOROTH,
+ .moves = {MOVE_FOCUS_ENERGY, MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_YAWN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_AGUAV_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [40] = {
+ .species = SPECIES_MAGIKARP,
+ .moves = {MOVE_TACKLE, MOVE_FLAIL, MOVE_SPLASH, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [41] = {
+ .species = SPECIES_SEVIPER,
+ .moves = {MOVE_LICK, MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [42] = {
+ .species = SPECIES_SOLROCK,
+ .moves = {MOVE_ROCK_THROW, MOVE_HARDEN, MOVE_PSYWAVE, MOVE_TACKLE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [43] = {
+ .species = SPECIES_KECLEON,
+ .moves = {MOVE_PSYBEAM, MOVE_SUBSTITUTE, MOVE_THIEF, MOVE_TAIL_WHIP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [44] = {
+ .species = SPECIES_KECLEON,
+ .moves = {MOVE_FAINT_ATTACK, MOVE_ASTONISH, MOVE_LICK, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [45] = {
+ .species = SPECIES_SHROOMISH,
+ .moves = {MOVE_STUN_SPORE, MOVE_TACKLE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [46] = {
+ .species = SPECIES_SHROOMISH,
+ .moves = {MOVE_ABSORB, MOVE_STUN_SPORE, MOVE_SPORE, MOVE_LEECH_SEED},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK,
+ .nature = NATURE_BRAVE
+ },
+ [47] = {
+ .species = SPECIES_LOMBRE,
+ .moves = {MOVE_NATURE_POWER, MOVE_ASTONISH, MOVE_GROWL, MOVE_ABSORB},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_LONELY
+ },
+ [48] = {
+ .species = SPECIES_NUMEL,
+ .moves = {MOVE_EMBER, MOVE_GROWL, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [49] = {
+ .species = SPECIES_TRAPINCH,
+ .moves = {MOVE_FAINT_ATTACK, MOVE_DIG, MOVE_BITE, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [50] = {
+ .species = SPECIES_PELIPPER,
+ .moves = {MOVE_WING_ATTACK, MOVE_SUPERSONIC, MOVE_MIST, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [51] = {
+ .species = SPECIES_WINGULL,
+ .moves = {MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_GROWL, MOVE_ICY_WIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [52] = {
+ .species = SPECIES_MARILL,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_RAIN_DANCE, MOVE_TAIL_WHIP, MOVE_WATER_GUN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [53] = {
+ .species = SPECIES_SKITTY,
+ .moves = {MOVE_ASSIST, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [54] = {
+ .species = SPECIES_SEVIPER,
+ .moves = {MOVE_SWAGGER, MOVE_WRAP, MOVE_POISON_TAIL, MOVE_HAZE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_BRAVE
+ },
+ [55] = {
+ .species = SPECIES_GOLBAT,
+ .moves = {MOVE_BITE, MOVE_TORMENT, MOVE_SCREECH, MOVE_POISON_FANG},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_HARDY
+ },
+ [56] = {
+ .species = SPECIES_RALTS,
+ .moves = {MOVE_HYPNOSIS, MOVE_IMPRISON, MOVE_PSYCHIC, MOVE_DREAM_EATER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_TIMID
+ },
+ [57] = {
+ .species = SPECIES_SANDSHREW,
+ .moves = {MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_SAND_TOMB, MOVE_DEFENSE_CURL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND,
+ .evSpread = 0,
+ .nature = NATURE_HARDY
+ },
+ [58] = {
+ .species = SPECIES_SWALOT,
+ .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ENCORE, MOVE_POUND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_IMPISH
+ },
+ [59] = {
+ .species = SPECIES_VOLBEAT,
+ .moves = {MOVE_TACKLE, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [60] = {
+ .species = SPECIES_ILLUMISE,
+ .moves = {MOVE_CHARM, MOVE_TACKLE, MOVE_ENCORE, MOVE_MOONLIGHT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [61] = {
+ .species = SPECIES_KADABRA,
+ .moves = {MOVE_DISABLE, MOVE_CONFUSION, MOVE_REFLECT, MOVE_RECOVER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [62] = {
+ .species = SPECIES_KIRLIA,
+ .moves = {MOVE_CALM_MIND, MOVE_CONFUSION, MOVE_DOUBLE_TEAM, MOVE_GROWL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [63] = {
+ .species = SPECIES_BRELOOM,
+ .moves = {MOVE_ABSORB, MOVE_TACKLE, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAIVE
+ },
+ [64] = {
+ .species = SPECIES_PLUSLE,
+ .moves = {MOVE_SPARK, MOVE_ENCORE, MOVE_THUNDER_WAVE, MOVE_GROWL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_LONELY
+ },
+ [65] = {
+ .species = SPECIES_PLUSLE,
+ .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_SUBSTITUTE, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MILD
+ },
+ [66] = {
+ .species = SPECIES_ELECTRIKE,
+ .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_ROAR, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_APICOT_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED,
+ .nature = NATURE_TIMID
+ },
+ [67] = {
+ .species = SPECIES_SWABLU,
+ .moves = {MOVE_SING, MOVE_PECK, MOVE_STEEL_WING, MOVE_SAFEGUARD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [68] = {
+ .species = SPECIES_MACHOP,
+ .moves = {MOVE_FOCUS_ENERGY, MOVE_VITAL_THROW, MOVE_SEISMIC_TOSS, MOVE_FORESIGHT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [69] = {
+ .species = SPECIES_MACHOKE,
+ .moves = {MOVE_FOCUS_ENERGY, MOVE_LEER, MOVE_KARATE_CHOP, MOVE_FORESIGHT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ }
+};
+
+// Verdanturf Battle Tent.
+const u16 gVerdanturfBattleTentTrainerMons_Brenna[] =
+{
+ 4,
+ 11,
+ 13,
+ 18,
+ 26,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Dilan[] =
+{
+ 30,
+ 37,
+ 13,
+ 29,
+ 42,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Eliana[] =
+{
+ 6,
+ 7,
+ 17,
+ 18,
+ 40,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Markus[] =
+{
+ 6,
+ 7,
+ 18,
+ 24,
+ 38,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Caitlyn[] =
+{
+ 0,
+ 12,
+ 25,
+ 28,
+ 22,
+ 44,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Desiree[] =
+{
+ 8,
+ 12,
+ 21,
+ 22,
+ 31,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Ronald[] =
+{
+ 1,
+ 20,
+ 23,
+ 25,
+ 32,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Ashten[] =
+{
+ 9,
+ 12,
+ 27,
+ 37,
+ 43,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Gerard[] =
+{
+ 36,
+ 7,
+ 34,
+ 6,
+ 40,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Bradly[] =
+{
+ 26,
+ 3,
+ 0,
+ 2,
+ 17,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Dennis[] =
+{
+ 14,
+ 37,
+ 2,
+ 38,
+ 27,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Prestin[] =
+{
+ 31,
+ 28,
+ 22,
+ 25,
+ 44,
+ 43,
+ 41,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Ernesto[] =
+{
+ 33,
+ 32,
+ 25,
+ 35,
+ 34,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Nala[] =
+{
+ 1,
+ 4,
+ 8,
+ 11,
+ 17,
+ 40,
+ 34,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Darnell[] =
+{
+ 0,
+ 29,
+ 35,
+ 37,
+ 39,
+ 43,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Ashlyn[] =
+{
+ 29,
+ 36,
+ 32,
+ 30,
+ 17,
+ 6,
+ 44,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Addison[] =
+{
+ 0,
+ 1,
+ 16,
+ 31,
+ 6,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Justine[] =
+{
+ 0,
+ 1,
+ 16,
+ 36,
+ 18,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Tyson[] =
+{
+ 5,
+ 15,
+ 22,
+ 30,
+ 16,
+ 39,
+ 43,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Laila[] =
+{
+ 5,
+ 15,
+ 19,
+ 24,
+ 41,
+ 43,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Waren[] =
+{
+ 0,
+ 9,
+ 10,
+ 11,
+ 23,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Tobias[] =
+{
+ 6,
+ 7,
+ 24,
+ 38,
+ 40,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Josiah[] =
+{
+ 8,
+ 16,
+ 23,
+ 34,
+ 3,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Dion[] =
+{
+ 14,
+ 2,
+ 11,
+ 39,
+ 21,
+ 38,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Kenzie[] =
+{
+ 18,
+ 10,
+ 16,
+ 26,
+ 25,
+ 27,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Lillian[] =
+{
+ 24,
+ 34,
+ 36,
+ 38,
+ 5,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Lesley[] =
+{
+ 26,
+ 0,
+ 18,
+ 13,
+ 25,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Marquis[] =
+{
+ 24,
+ 34,
+ 5,
+ 15,
+ 7,
+ 42,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Freddy[] =
+{
+ 18,
+ 21,
+ 26,
+ 29,
+ 41,
+ -1
+};
+
+const u16 gVerdanturfBattleTentTrainerMons_Cecilia[] =
+{
+ 23,
+ 26,
+ 27,
+ 28,
+ 31,
+ -1
+};
+
+const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] =
+{
+ [0] = {
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .trainerName = _("BRENNA"),
+ .speechBefore = {EC_WORD_NO, EC_WORD_DAYS, EC_WORD_GO, EC_WORD_WITHOUT, EC_WORD_MY, EC_MOVE(FAKE_TEARS)},
+ .speechWin = {EC_WORD_OH, EC_WORD_THAT_WAS, EC_WORD_SO, EC_WORD_REFRESHING, EC_WORD_EXCL, -1},
+ .speechLose = {EC_WORD_ALL, EC_WORD_I, EC_WORD_EVER, EC_WORD_GET, EC_WORD_IS, EC_MOVE(TORMENT)},
+ .monSets = gVerdanturfBattleTentTrainerMons_Brenna
+ },
+ [1] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("DILAN"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_BORED, EC_WORD_I_AM},
+ .speechWin = {EC_WORD_LOSING, EC_WORD_ISN_T, EC_WORD_EXCITING, EC_WORD_AT, EC_WORD_ALL, EC_WORD_ELLIPSIS},
+ .speechLose = {EC_WORD_EXCITING, EC_WORD_EXCL_EXCL, EC_WORD_BYE_BYE, EC_WORD_TO, EC_WORD_BEING, EC_WORD_BORED},
+ .monSets = gVerdanturfBattleTentTrainerMons_Dilan
+ },
+ [2] = {
+ .facilityClass = FACILITY_CLASS_TUBER_F,
+ .trainerName = _("ELIANA"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_ON, EC_WORD_A, EC_WORD_VACATION, EC_WORD_SOON},
+ .speechWin = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_GET, EC_WORD_SOME, EC_WORD_MONEY},
+ .speechLose = {EC_WORD_NO, EC_WORD_SLEEP, EC_WORD_UNTIL, EC_WORD_I, EC_WORD_GET, EC_WORD_HOME},
+ .monSets = gVerdanturfBattleTentTrainerMons_Eliana
+ },
+ [3] = {
+ .facilityClass = FACILITY_CLASS_TUBER_M,
+ .trainerName = _("MARKUS"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_SMART, EC_WORD_EXCL, EC_WORD_IF_I_LOSE, EC_WORD_I, EC_MOVE(SELF_DESTRUCT)},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_NON_STOP, EC_MOVE2(EXPLOSION), EC_WORD_OF, EC_WORD_JOY},
+ .speechLose = {EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_ELLIPSIS, EC_WORD_TIME, EC_WORD_TO, EC_MOVE(SELF_DESTRUCT)},
+ .monSets = gVerdanturfBattleTentTrainerMons_Markus
+ },
+ [4] = {
+ .facilityClass = FACILITY_CLASS_LADY,
+ .trainerName = _("CAITLYN"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_BORED, EC_WORD_OF, EC_WORD_BEING, EC_WORD_AN, EC_WORD_IDOL},
+ .speechWin = {EC_WORD_A, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_BEST, EC_WORD_FOR, EC_WORD_HAPPINESS},
+ .speechLose = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_WORD_BUG, EC_WORD_ME, EC_WORD_AT, EC_WORD_ALL},
+ .monSets = gVerdanturfBattleTentTrainerMons_Caitlyn
+ },
+ [5] = {
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .trainerName = _("DESIREE"),
+ .speechBefore = {EC_WORD_DOESN_T, EC_WORD_MY, EC_WORD_BEAUTY, EC_MOVE(ASTONISH), EC_WORD_YOU, EC_WORD_QUES},
+ .speechWin = {EC_WORD_DID, EC_WORD_I, EC_WORD_INTIMIDATE, EC_WORD_YOU, EC_WORD_QUES, -1},
+ .speechLose = {EC_WORD_MY, EC_WORD_BEAUTY, EC_WORD_DID, EC_WORD_NOTHING, EC_WORD_FOR, EC_WORD_YOU},
+ .monSets = gVerdanturfBattleTentTrainerMons_Desiree
+ },
+ [6] = {
+ .facilityClass = FACILITY_CLASS_RICH_BOY,
+ .trainerName = _("RONALD"),
+ .speechBefore = {EC_WORD_COME_ON, EC_WORD_I, EC_WORD_WILL, EC_WORD_BATTLE, EC_WORD_SERIOUSLY, -1},
+ .speechWin = {EC_WORD_GIVE_UP, EC_WORD_QUES, -1, EC_WORD_THAT_S, EC_WORD_REALLY, EC_WORD_WEAK},
+ .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_DO, EC_WORD_A, EC_MOVE2(BATON_PASS)},
+ .monSets = gVerdanturfBattleTentTrainerMons_Ronald
+ },
+ [7] = {
+ .facilityClass = FACILITY_CLASS_POKEMANIAC,
+ .trainerName = _("ASHTEN"),
+ .speechBefore = {EC_WORD_OH_YEAH, EC_WORD_ANOTHER, EC_WORD_EXCITING, EC_WORD_BATTLE, EC_WORD_EXCL, -1},
+ .speechWin = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_WIMPY, EC_WORD_AND, EC_WORD_BORING},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_LOSS, EC_WORD_WOW, EC_WORD_EXCL},
+ .monSets = gVerdanturfBattleTentTrainerMons_Ashten
+ },
+ [8] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_M,
+ .trainerName = _("GERARD"),
+ .speechBefore = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_SUPER, EC_MOVE2(TEETER_DANCE), EC_WORD_EXCL},
+ .speechWin = {EC_WORD_THAT_WAS, EC_WORD_HARD, EC_WORD_ELLIPSIS, EC_WORD_AM, EC_WORD_I, EC_WORD_OK_QUES},
+ .speechLose = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_FORGIVE, EC_WORD_YOU, EC_WORD_FOR, EC_WORD_THAT},
+ .monSets = gVerdanturfBattleTentTrainerMons_Gerard
+ },
+ [9] = {
+ .facilityClass = FACILITY_CLASS_CAMPER,
+ .trainerName = _("BRADLY"),
+ .speechBefore = {EC_WORD_IT_S, EC_WORD_LONESOME, EC_WORD_BUT, EC_WORD_I, EC_WORD_VACATION, EC_WORD_ALONE},
+ .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_MOVE(WITHDRAW), EC_WORD_INSIDE, EC_WORD_MY, EC_WORD_SHELL_ARMOR},
+ .speechLose = {EC_WORD_OH, EC_WORD_ELLIPSIS, -1, EC_WORD_ALONE, EC_WORD_AS, EC_WORD_ALWAYS},
+ .monSets = gVerdanturfBattleTentTrainerMons_Bradly
+ },
+ [10] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("DENNIS"),
+ .speechBefore = {EC_WORD_ARE, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_STRONG, EC_WORD_QUES, -1},
+ .speechWin = {EC_WORD_WAHAHAHA, EC_WORD_EXCL, -1, EC_WORD_WAHAHAHA, EC_WORD_EXCL_EXCL, -1},
+ .speechLose = {EC_WORD_NICE, EC_WORD_GOING, EC_WORD_EXCL, EC_WORD_I, EC_WORD_WAS, EC_WORD_CHILD_S_PLAY},
+ .monSets = gVerdanturfBattleTentTrainerMons_Dennis
+ },
+ [11] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("PRESTIN"),
+ .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_FOR, EC_WORD_YOU},
+ .speechWin = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_A, EC_WORD_DREAM},
+ .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_WAKE_UP, EC_WORD_FROM, EC_WORD_THIS},
+ .monSets = gVerdanturfBattleTentTrainerMons_Prestin
+ },
+ [12] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("ERNESTO"),
+ .speechBefore = {EC_WORD_THIS, EC_WORD_PARTY, EC_WORD_GOES, EC_WORD_ON, EC_WORD_FOREVER, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_THE, EC_WORD_MUSIC, EC_WORD_PLAYS, EC_WORD_ON, EC_WORD_WITHOUT, EC_WORD_END},
+ .speechLose = {EC_WORD_NO, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_MUSIC, EC_WORD_CAN_T, EC_WORD_STOP},
+ .monSets = gVerdanturfBattleTentTrainerMons_Ernesto
+ },
+ [13] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .trainerName = _("NALA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_THE, EC_WORD_WORLD, EC_WORD_MOVIE, EC_WORD_COLLECTION},
+ .speechWin = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_LIKE, EC_WORD_RADIO, EC_WORD_VERY, EC_WORD_MUCH},
+ .speechLose = {EC_WORD_I, EC_WORD_REFUSE, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_THIS, EC_WORD_EXCL},
+ .monSets = gVerdanturfBattleTentTrainerMons_Nala
+ },
+ [14] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("DARNELL"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GO_EASY, EC_WORD_ON, EC_WORD_YOU, -1},
+ .speechWin = {EC_WORD_YOUR, EC_MOVE2(FRUSTRATION), EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_HIDDEN, EC_WORD_AWAY},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_TAKE, EC_WORD_ELLIPSIS},
+ .monSets = gVerdanturfBattleTentTrainerMons_Darnell
+ },
+ [15] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("ASHLYN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_LOOK, EC_WORD_TOUGH, EC_WORD_DO, EC_WORD_I, EC_WORD_QUES},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_OVER, EC_WORD_YOUR, EC_MOVE2(TAUNT), EC_WORD_YET},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_MEAN, EC_WORD_EXCL_EXCL, -1, -1, -1},
+ .monSets = gVerdanturfBattleTentTrainerMons_Ashlyn
+ },
+ [16] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .trainerName = _("ADDISON"),
+ .speechBefore = {EC_WORD_YES, EC_WORD_EXCL, -1, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_WELL, EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_EASY, EC_WORD_QUES, -1},
+ .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, -1, EC_WORD_BUT, EC_WORD_WHY, EC_WORD_QUES},
+ .monSets = gVerdanturfBattleTentTrainerMons_Addison
+ },
+ [17] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .trainerName = _("JUSTINE"),
+ .speechBefore = {EC_WORD_YES, EC_WORD_EXCL, -1, EC_WORD_COME_ON, EC_WORD_I_AM, EC_WORD_READY},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_JUST, EC_WORD_NOT, EC_WORD_GOOD, EC_WORD_ENOUGH, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_WOWEE, EC_WORD_EXCL_EXCL, -1, -1, -1, -1},
+ .monSets = gVerdanturfBattleTentTrainerMons_Justine
+ },
+ [18] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .trainerName = _("TYSON"),
+ .speechBefore = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_PRESSURE, EC_WORD_ME, EC_WORD_QUES},
+ .speechWin = {EC_WORD_WHAT, EC_WORD_QUES, EC_WORD_YOU_RE, EC_WORD_MUCH, EC_WORD_TOO_WEAK, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_THIS, EC_WORD_DOESN_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_HAPPY, EC_WORD_EXCL},
+ .monSets = gVerdanturfBattleTentTrainerMons_Tyson
+ },
+ [19] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .trainerName = _("LAILA"),
+ .speechBefore = {EC_WORD_A, EC_MOVE2(STRUGGLE), EC_WORD_ISN_T, EC_WORD_VERY, EC_WORD_COOL, -1},
+ .speechWin = {EC_WORD_NOPE, EC_WORD_NOT_VERY, EC_WORD_COOL, EC_WORD_AT, EC_WORD_ALL, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_COOL, EC_WORD_BUT, EC_WORD_YOU, EC_WORD_WON},
+ .monSets = gVerdanturfBattleTentTrainerMons_Laila
+ },
+ [20] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("WAREN"),
+ .speechBefore = {EC_WORD_DANGER, EC_WORD_EXCL, -1, EC_WORD_I, EC_WORD_SENSE, EC_WORD_DANGER},
+ .speechWin = {EC_WORD_DID, EC_WORD_YOU, EC_WORD_BELIEVE, EC_WORD_MY, EC_WORD_LIE, EC_WORD_QUES_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_DID, EC_WORD_SENSE, EC_WORD_DANGER, EC_WORD_ELLIPSIS},
+ .monSets = gVerdanturfBattleTentTrainerMons_Waren
+ },
+ [21] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("TOBIAS"),
+ .speechBefore = {EC_MOVE2(BARRIER), EC_WORD_EXCL_EXCL, -1, EC_WORD_NOW, EC_WORD_COME_ON, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES},
+ .speechLose = {EC_WORD_I, EC_WORD_SHOULD, EC_WORD_KNOW, EC_WORD_THAT, EC_WORD_IT_S, EC_WORD_HOPELESS},
+ .monSets = gVerdanturfBattleTentTrainerMons_Tobias
+ },
+ [22] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("JOSIAH"),
+ .speechBefore = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_TO, EC_MOVE(FLY), EC_WORD_IF_I_LOSE, -1},
+ .speechWin = {EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS, -1, EC_WORD_YOU, EC_MOVE(FLY), EC_WORD_INSTEAD},
+ .speechLose = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_TO, EC_MOVE(FLY), EC_WORD_SOMETIME, EC_WORD_SOON},
+ .monSets = gVerdanturfBattleTentTrainerMons_Josiah
+ },
+ [23] = {
+ .facilityClass = FACILITY_CLASS_NINJA_BOY,
+ .trainerName = _("DION"),
+ .speechBefore = {EC_WORD_IT_S, EC_WORD_TRENDY, EC_WORD_UM, EC_WORD_BATTLE, EC_WORD_SOMETHING, -1},
+ .speechWin = {EC_WORD_WAS, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_BATTLE, EC_WORD_DATE, EC_WORD_QUES},
+ .speechLose = {EC_WORD_WAS, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_BATTLE, EC_WORD_GOURMET, EC_WORD_QUES},
+ .monSets = gVerdanturfBattleTentTrainerMons_Dion
+ },
+ [24] = {
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .trainerName = _("KENZIE"),
+ .speechBefore = {EC_WORD_THE, EC_MOVE(MORNING_SUN), EC_WORD_GIVES, EC_WORD_ME, EC_MOVE(STRENGTH), -1},
+ .speechWin = {EC_WORD_BUT, EC_WORD_I, EC_WORD_LIKE, EC_MOVE2(MOONLIGHT), EC_WORD_TOO, -1},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_LIKE, EC_WORD_A, EC_WORD_TERRIBLE, EC_MOVE(SANDSTORM), EC_WORD_ELLIPSIS},
+ .monSets = gVerdanturfBattleTentTrainerMons_Kenzie
+ },
+ [25] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_F,
+ .trainerName = _("LILLIAN"),
+ .speechBefore = {EC_WORD_I, EC_WORD_DO, EC_WORD_THINGS, EC_WORD_AT, EC_WORD_MY, EC_WORD_OWN_TEMPO},
+ .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_QUES, EC_WORD_WHAT, EC_WORD_A, EC_WORD_SURPRISE},
+ .speechLose = {EC_WORD_AWW, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_NAP},
+ .monSets = gVerdanturfBattleTentTrainerMons_Lillian
+ },
+ [26] = {
+ .facilityClass = FACILITY_CLASS_PICNICKER,
+ .trainerName = _("LESLEY"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_BE, EC_WORD_LOLLING, EC_WORD_ABOUT},
+ .speechWin = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_GET, EC_WORD_UP, EC_WORD_EARLIER, -1},
+ .speechLose = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_BE, EC_WORD_HAPPENING, EC_WORD_EXCL},
+ .monSets = gVerdanturfBattleTentTrainerMons_Lesley
+ },
+ [27] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("MARQUIS"),
+ .speechBefore = {EC_WORD_NONE, EC_WORD_OF, EC_WORD_THIS, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_SENSE},
+ .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_THIS, EC_WORD_JUST, EC_WORD_ISN_T, EC_WORD_NORMAL},
+ .speechLose = {EC_WORD_SHOULD, EC_WORD_I, EC_WORD_CAUSE, EC_WORD_AN, EC_MOVE(UPROAR), EC_WORD_QUES},
+ .monSets = gVerdanturfBattleTentTrainerMons_Marquis
+ },
+ [28] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("FREDDY"),
+ .speechBefore = {EC_WORD_I, EC_WORD_ADORE, EC_WORD_THIS, EC_WORD_CUTE, EC_WORD_TELEVISION, EC_WORD_IDOL},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_SO, EC_WORD_FUNNY, EC_WORD_WHEN, EC_WORD_YOU_RE, EC_WORD_ANGRY},
+ .speechLose = {EC_WORD_LATE, EC_WORD_NIGHT, EC_WORD_TELEVISION, EC_WORD_IS, EC_WORD_MY, EC_WORD_LIFE},
+ .monSets = gVerdanturfBattleTentTrainerMons_Freddy
+ },
+ [29] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("CECILIA"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_FABULOUS, EC_WORD_CUTENESS, EC_WORD_IS, EC_WORD_IN, EC_WORD_FASHION},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_NO, EC_WORD_MATCH, EC_WORD_FOR, EC_WORD_MY, EC_WORD_CUTE_CHARM},
+ .speechLose = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_QUES},
+ .monSets = gVerdanturfBattleTentTrainerMons_Cecilia
+ }
+};
+
+const struct FacilityMon gVerdanturfBattleTentMons[] =
+{
+ [0] = {
+ .species = SPECIES_POOCHYENA,
+ .moves = {MOVE_ROAR, MOVE_THIEF, MOVE_BITE, MOVE_HOWL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [1] = {
+ .species = SPECIES_ZIGZAGOON,
+ .moves = {MOVE_COVET, MOVE_GROWL, MOVE_PIN_MISSILE, MOVE_MUD_SPORT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [2] = {
+ .species = SPECIES_DUSTOX,
+ .moves = {MOVE_CONFUSION, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_FLASH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_MODEST
+ },
+ [3] = {
+ .species = SPECIES_TAILLOW,
+ .moves = {MOVE_AGILITY, MOVE_DOUBLE_TEAM, MOVE_WING_ATTACK, MOVE_GROWL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [4] = {
+ .species = SPECIES_SHROOMISH,
+ .moves = {MOVE_HEADBUTT, MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_FLASH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_RASH
+ },
+ [5] = {
+ .species = SPECIES_MACHOP,
+ .moves = {MOVE_LOW_KICK, MOVE_LEER, MOVE_FOCUS_ENERGY, MOVE_ENCORE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_LONELY
+ },
+ [6] = {
+ .species = SPECIES_MAGIKARP,
+ .moves = {MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF,
+ .evSpread = F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [7] = {
+ .species = SPECIES_BARBOACH,
+ .moves = {MOVE_MUD_SLAP, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_SPARK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED,
+ .nature = NATURE_HASTY
+ },
+ [8] = {
+ .species = SPECIES_WINGULL,
+ .moves = {MOVE_ATTRACT, MOVE_TWISTER, MOVE_WING_ATTACK, MOVE_SUPERSONIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_IMPISH
+ },
+ [9] = {
+ .species = SPECIES_ARON,
+ .moves = {MOVE_ENDEAVOR, MOVE_METAL_CLAW, MOVE_TACKLE, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HARDY
+ },
+ [10] = {
+ .species = SPECIES_NUMEL,
+ .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_GROWL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_SASSY
+ },
+ [11] = {
+ .species = SPECIES_SWALOT,
+ .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ACID_ARMOR, MOVE_AMNESIA},
+ .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [12] = {
+ .species = SPECIES_KECLEON,
+ .moves = {MOVE_SUBSTITUTE, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BIND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIET
+ },
+ [13] = {
+ .species = SPECIES_BALTOY,
+ .moves = {MOVE_SANDSTORM, MOVE_FLASH, MOVE_SELF_DESTRUCT, MOVE_HARDEN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAUGHTY
+ },
+ [14] = {
+ .species = SPECIES_NINJASK,
+ .moves = {MOVE_DIG, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_LEECH_LIFE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [15] = {
+ .species = SPECIES_MAKUHITA,
+ .moves = {MOVE_BULK_UP, MOVE_ARM_THRUST, MOVE_SMELLING_SALT, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAUGHTY
+ },
+ [16] = {
+ .species = SPECIES_SWABLU,
+ .moves = {MOVE_REFRESH, MOVE_SAFEGUARD, MOVE_ATTRACT, MOVE_MIRROR_MOVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MILD
+ },
+ [17] = {
+ .species = SPECIES_GOLDEEN,
+ .moves = {MOVE_WATERFALL, MOVE_MUD_SPORT, MOVE_SUPERSONIC, MOVE_DOUBLE_TEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_GENTLE
+ },
+ [18] = {
+ .species = SPECIES_LOTAD,
+ .moves = {MOVE_GROWL, MOVE_WATER_GUN, MOVE_MEGA_DRAIN, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [19] = {
+ .species = SPECIES_NUMEL,
+ .moves = {MOVE_MAGNITUDE, MOVE_EMBER, MOVE_GROWL, MOVE_DEFENSE_CURL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_RELAXED
+ },
+ [20] = {
+ .species = SPECIES_LINOONE,
+ .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_PROTECT, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [21] = {
+ .species = SPECIES_SEVIPER,
+ .moves = {MOVE_WRAP, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SWAGGER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [22] = {
+ .species = SPECIES_SKARMORY,
+ .moves = {MOVE_AIR_CUTTER, MOVE_SANDSTORM, MOVE_LEER, MOVE_AGILITY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MACHO_BRACE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_BASHFUL
+ },
+ [23] = {
+ .species = SPECIES_SWELLOW,
+ .moves = {MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAUGHTY
+ },
+ [24] = {
+ .species = SPECIES_GOLDEEN,
+ .moves = {MOVE_PECK, MOVE_SUPERSONIC, MOVE_PSYBEAM, MOVE_RAIN_DANCE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_GENTLE
+ },
+ [25] = {
+ .species = SPECIES_ELECTRIKE,
+ .moves = {MOVE_SHOCK_WAVE, MOVE_TACKLE, MOVE_CHARGE, MOVE_THUNDER_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_MILD
+ },
+ [26] = {
+ .species = SPECIES_NUZLEAF,
+ .moves = {MOVE_SUNNY_DAY, MOVE_TORMENT, MOVE_FAKE_OUT, MOVE_THIEF},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [27] = {
+ .species = SPECIES_ARON,
+ .moves = {MOVE_TAKE_DOWN, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [28] = {
+ .species = SPECIES_MIGHTYENA,
+ .moves = {MOVE_HOWL, MOVE_TAKE_DOWN, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [29] = {
+ .species = SPECIES_SOLROCK,
+ .moves = {MOVE_HARDEN, MOVE_FIRE_SPIN, MOVE_MIMIC, MOVE_PSYWAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [30] = {
+ .species = SPECIES_GRAVELER,
+ .moves = {MOVE_ROLLOUT, MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_BLOCK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_IMPISH
+ },
+ [31] = {
+ .species = SPECIES_KADABRA,
+ .moves = {MOVE_ENCORE, MOVE_PSYBEAM, MOVE_DISABLE, MOVE_KINESIS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [32] = {
+ .species = SPECIES_VOLTORB,
+ .moves = {MOVE_PROTECT, MOVE_SELF_DESTRUCT, MOVE_SPARK, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_BASHFUL
+ },
+ [33] = {
+ .species = SPECIES_MAGNEMITE,
+ .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_SERIOUS
+ },
+ [34] = {
+ .species = SPECIES_PELIPPER,
+ .moves = {MOVE_WING_ATTACK, MOVE_MIST, MOVE_AGILITY, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY,
+ .evSpread = 0,
+ .nature = NATURE_BRAVE
+ },
+ [35] = {
+ .species = SPECIES_LOUDRED,
+ .moves = {MOVE_HOWL, MOVE_UPROAR, MOVE_REST, MOVE_SCREECH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CALM
+ },
+ [36] = {
+ .species = SPECIES_MARILL,
+ .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_JOLLY
+ },
+ [37] = {
+ .species = SPECIES_TRAPINCH,
+ .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_FAINT_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_NONE,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_NAUGHTY
+ },
+ [38] = {
+ .species = SPECIES_TENTACOOL,
+ .moves = {MOVE_SCREECH, MOVE_CONFUSE_RAY, MOVE_WRAP, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [39] = {
+ .species = SPECIES_VIGOROTH,
+ .moves = {MOVE_ENCORE, MOVE_SLACK_OFF, MOVE_YAWN, MOVE_SECRET_POWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [40] = {
+ .species = SPECIES_WAILMER,
+ .moves = {MOVE_WATER_PULSE, MOVE_ROLLOUT, MOVE_CURSE, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB,
+ .evSpread = F_EV_SPREAD_HP,
+ .nature = NATURE_RELAXED
+ },
+ [41] = {
+ .species = SPECIES_ILLUMISE,
+ .moves = {MOVE_TACKLE, MOVE_SWEET_SCENT, MOVE_WISH, MOVE_ENCORE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [42] = {
+ .species = SPECIES_MACHOKE,
+ .moves = {MOVE_LEER, MOVE_KARATE_CHOP, MOVE_BULK_UP, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_CALM
+ },
+ [43] = {
+ .species = SPECIES_WHISMUR,
+ .moves = {MOVE_SECRET_POWER, MOVE_SUPERSONIC, MOVE_STOMP, MOVE_ROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_QUIRKY
+ },
+ [44] = {
+ .species = SPECIES_CACNEA,
+ .moves = {MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_NEEDLE_ARM, MOVE_GROWTH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SERIOUS
+ }
+};
+
+// Fallarbor Battle Tent.
+const u16 gFallarborBattleTentTrainerMons_Amber[] =
+{
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Javier[] =
+{
+ 6,
+ 35,
+ 36,
+ 37,
+ 38,
+ 44,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Natalie[] =
+{
+ 5,
+ 29,
+ 30,
+ 32,
+ 34,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Treve[] =
+{
+ 28,
+ 29,
+ 30,
+ 32,
+ 33,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Arianna[] =
+{
+ 18,
+ 23,
+ 24,
+ 27,
+ 44,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Jadyn[] =
+{
+ 0,
+ 22,
+ 24,
+ 27,
+ 32,
+ 39,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Gerardo[] =
+{
+ 6,
+ 18,
+ 23,
+ 24,
+ 29,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Jonn[] =
+{
+ 16,
+ 17,
+ 21,
+ 22,
+ 37,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Esteban[] =
+{
+ 5,
+ 28,
+ 30,
+ 33,
+ 42,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Jameson[] =
+{
+ 1,
+ 2,
+ 3,
+ 5,
+ 9,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Alanzo[] =
+{
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Howard[] =
+{
+ 18,
+ 23,
+ 31,
+ 38,
+ 43,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Conrad[] =
+{
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Makenna[] =
+{
+ 4,
+ 21,
+ 25,
+ 36,
+ 40,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Brayan[] =
+{
+ 0,
+ 4,
+ 6,
+ 12,
+ 19,
+ 23,
+ 28,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Mariana[] =
+{
+ 0,
+ 4,
+ 13,
+ 19,
+ 28,
+ 30,
+ 37,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Sheldon[] =
+{
+ 2,
+ 3,
+ 21,
+ 31,
+ 39,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Gianna[] =
+{
+ 1,
+ 2,
+ 30,
+ 32,
+ 41,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Yahir[] =
+{
+ 4,
+ 8,
+ 15,
+ 17,
+ 22,
+ 24,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Britney[] =
+{
+ 4,
+ 7,
+ 14,
+ 20,
+ 23,
+ 43,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Hecter[] =
+{
+ 0,
+ 1,
+ 2,
+ 5,
+ 9,
+ 35,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Tannor[] =
+{
+ 5,
+ 30,
+ 31,
+ 33,
+ 34,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Benji[] =
+{
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Rory[] =
+{
+ 9,
+ 11,
+ 14,
+ 15,
+ 27,
+ 39,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Eleanor[] =
+{
+ 23,
+ 28,
+ 31,
+ 36,
+ 38,
+ 42,
+ 44,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Evelyn[] =
+{
+ 29,
+ 31,
+ 32,
+ 33,
+ 34,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Arielle[] =
+{
+ 1,
+ 3,
+ 38,
+ 39,
+ 41,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Connar[] =
+{
+ 7,
+ 8,
+ 28,
+ 29,
+ 31,
+ 32,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Maurice[] =
+{
+ 4,
+ 5,
+ 6,
+ 12,
+ 13,
+ -1
+};
+
+const u16 gFallarborBattleTentTrainerMons_Kianna[] =
+{
+ 22,
+ 24,
+ 26,
+ 27,
+ 34,
+ 37,
+ -1
+};
+
+const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] =
+{
+ [0] = {
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .trainerName = _("AMBER"),
+ .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_DIET, EC_WORD_EVERY, EC_WORD_DAY},
+ .speechWin = {EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_OF, EC_WORD_SWEETS, EC_WORD_SHOCKED, EC_WORD_ME},
+ .speechLose = {EC_WORD_IF, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_YOU, EC_WORD_WILL, EC_WORD_LOSE},
+ .monSets = gFallarborBattleTentTrainerMons_Amber
+ },
+ [1] = {
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .trainerName = _("JAVIER"),
+ .speechBefore = {EC_WORD_I, EC_WORD_NEVER, EC_WORD_EVER, EC_WORD_HAVE, EC_WORD_ENOUGH, EC_WORD_MONEY},
+ .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I, EC_WORD_NEED, EC_WORD_MONEY},
+ .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_MONEY, EC_WORD_FOR, EC_WORD_A, EC_WORD_BIKE},
+ .monSets = gFallarborBattleTentTrainerMons_Javier
+ },
+ [2] = {
+ .facilityClass = FACILITY_CLASS_TUBER_F,
+ .trainerName = _("NATALIE"),
+ .speechBefore = {EC_WORD_THE, EC_WORD_WAY, EC_WORD_I, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_WEIRD},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_MUCH, EC_WORD_TOO_WEAK, EC_WORD_FOR, EC_WORD_THIS, EC_WORD_PLACE},
+ .speechLose = {EC_WORD_GIVE_ME, EC_WORD_AN, EC_WORD_EASY, EC_WORD_MATCH, EC_WORD_NEXT, EC_WORD_TIME},
+ .monSets = gFallarborBattleTentTrainerMons_Natalie
+ },
+ [3] = {
+ .facilityClass = FACILITY_CLASS_TUBER_M,
+ .trainerName = _("TREVE"),
+ .speechBefore = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_MOVE2(METRONOME), EC_WORD_AND, EC_WORD_SLEEP},
+ .speechWin = {EC_WORD_YEAH, EC_WORD_EXCL, EC_MOVE(HYPNOSIS), EC_WORD_IS, EC_WORD_TOTALLY, EC_WORD_GREAT},
+ .speechLose = {EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_ELLIPSIS, -1},
+ .monSets = gFallarborBattleTentTrainerMons_Treve
+ },
+ [4] = {
+ .facilityClass = FACILITY_CLASS_LADY,
+ .trainerName = _("ARIANNA"),
+ .speechBefore = {EC_WORD_IF_I_WIN, EC_WORD_GIVE_ME, EC_WORD_POKEMON, EC_WORD_FOR, EC_WORD_MY, EC_WORD_COLLECTION},
+ .speechWin = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_COLLECT},
+ .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SOMETHING, EC_WORD_ELSE, EC_WORD_ELLIPSIS},
+ .monSets = gFallarborBattleTentTrainerMons_Arianna
+ },
+ [5] = {
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .trainerName = _("JADYN"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_NAME, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_A, EC_WORD_MYSTERY},
+ .speechWin = {EC_WORD_MY, EC_WORD_NAME, EC_WORD_GOES, EC_WORD_ON, EC_WORD_A, EC_WORD_MYSTERY},
+ .speechLose = {EC_WORD_MY, EC_WORD_NAME, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_YOUR, EC_WORD_MOTHER},
+ .monSets = gFallarborBattleTentTrainerMons_Jadyn
+ },
+ [6] = {
+ .facilityClass = FACILITY_CLASS_RICH_BOY,
+ .trainerName = _("GERARDO"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_BEST, EC_WORD_HERO, EC_WORD_EVER, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_SEE, EC_WORD_WHAT, EC_WORD_I, EC_WORD_MEAN, EC_WORD_QUES, -1},
+ .speechLose = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_WERE, EC_WORD_RIGHT, EC_WORD_QUES, -1},
+ .monSets = gFallarborBattleTentTrainerMons_Gerardo
+ },
+ [7] = {
+ .facilityClass = FACILITY_CLASS_POKEMANIAC,
+ .trainerName = _("JONN"),
+ .speechBefore = {EC_WORD_THE, EC_WORD_WORLD, EC_MOVE2(SUPERPOWER), EC_MOVE2(STOMP), EC_WORD_CONTEST, EC_WORD_EXCL_EXCL},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_EXCL_EXCL, EC_WORD_HEAR, EC_WORD_ME, EC_MOVE2(ROAR)},
+ .speechLose = {EC_WORD_I, EC_WORD_GIVE_UP, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_NO_1, EC_WORD_EXCL},
+ .monSets = gFallarborBattleTentTrainerMons_Jonn
+ },
+ [8] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_M,
+ .trainerName = _("ESTEBAN"),
+ .speechBefore = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_GOOD, EC_WORD_TRAINER, EC_WORD_QUES, EC_WORD_UNBELIEVABLE},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_SOME, EC_WORD_PUSHOVER, EC_WORD_OF, EC_WORD_A, EC_WORD_TRAINER},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_MUCH, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_FOR, EC_WORD_ME},
+ .monSets = gFallarborBattleTentTrainerMons_Esteban
+ },
+ [9] = {
+ .facilityClass = FACILITY_CLASS_CAMPER,
+ .trainerName = _("JAMESON"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SILKY, EC_WORD_SMOOTH, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_MY, EC_WORD_SILKY, EC_WORD_SMOOTH, EC_WORD_POKEMON, EC_WORD_RULE, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_MY, EC_WORD_POKEMON, EC_MOVE2(STRUGGLE), EC_WORD_IN, EC_WORD_YOUR, EC_WORD_STICKY_HOLD},
+ .monSets = gFallarborBattleTentTrainerMons_Jameson
+ },
+ [10] = {
+ .facilityClass = FACILITY_CLASS_BUG_MANIAC,
+ .trainerName = _("ALANZO"),
+ .speechBefore = {EC_MOVE2(FORESIGHT), EC_WORD_IS, EC_WORD_A, EC_WORD_POWER, EC_WORD_I, EC_WORD_HAVE},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_OBLIVIOUS, EC_WORD_ABOUT, EC_MOVE2(FORESIGHT), EC_WORD_EXCL, -1},
+ .speechLose = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_IS, EC_WORD_ALWAYS, EC_WORD_RIGHT, EC_WORD_EXCL},
+ .monSets = gFallarborBattleTentTrainerMons_Alanzo
+ },
+ [11] = {
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .trainerName = _("HOWARD"),
+ .speechBefore = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_ME, -1},
+ .speechWin = {EC_WORD_YOU, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_COULD, EC_WORD_YOU, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU, EC_WORD_WOULD, EC_WORD_GO, EC_WORD_ALL, EC_WORD_OUT, EC_WORD_ELLIPSIS},
+ .monSets = gFallarborBattleTentTrainerMons_Howard
+ },
+ [12] = {
+ .facilityClass = FACILITY_CLASS_GUITARIST,
+ .trainerName = _("CONRAD"),
+ .speechBefore = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_PRETTY, EC_WORD_WILD, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_WHOAH, EC_WORD_EXCL_EXCL, -1, EC_WORD_LET_S, EC_WORD_DANCE, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_MY, EC_WORD_MUSIC, EC_WORD_WILL, EC_WORD_PLAY, EC_WORD_ON, EC_WORD_ELLIPSIS},
+ .monSets = gFallarborBattleTentTrainerMons_Conrad
+ },
+ [13] = {
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .trainerName = _("MAKENNA"),
+ .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THAT, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_IT},
+ .speechWin = {EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY},
+ .speechLose = {EC_WORD_AWW, EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_TOO},
+ .monSets = gFallarborBattleTentTrainerMons_Makenna
+ },
+ [14] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .trainerName = _("BRAYAN"),
+ .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_POWER, EC_WORD_QUES},
+ .speechWin = {EC_WORD_HOW, EC_WORD_BORING, EC_WORD_ELLIPSIS, EC_WORD_THIS, EC_WORD_IS, EC_WORD_GOOD_BYE},
+ .speechLose = {EC_WORD_AM, EC_WORD_I, EC_WORD_THE, EC_WORD_WEAK, EC_WORD_TRAINER, EC_WORD_QUES},
+ .monSets = gFallarborBattleTentTrainerMons_Brayan
+ },
+ [15] = {
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .trainerName = _("MARIANA"),
+ .speechBefore = {EC_WORD_A, EC_WORD_LIE, EC_WORD_CAN, EC_WORD_BE, EC_WORD_KIND, EC_WORD_ELLIPSIS},
+ .speechWin = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_LIKE, EC_WORD_THE, EC_WORD_SUNDAY, EC_WORD_COMICS},
+ .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_LIKE, EC_WORD_FROM, EC_WORD_A, EC_WORD_MOVIE},
+ .monSets = gFallarborBattleTentTrainerMons_Mariana
+ },
+ [16] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .trainerName = _("SHELDON"),
+ .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_TEACHER, EC_WORD_GETS, EC_WORD_NO, EC_MOVE2(REST)},
+ .speechWin = {EC_WORD_MY, EC_WORD_SMARTNESS, EC_WORD_GETS, EC_WORD_ME, EC_WORD_EASY, EC_WORD_WINS},
+ .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_GO, EC_WORD_WORK, EC_WORD_BYE_BYE},
+ .monSets = gFallarborBattleTentTrainerMons_Sheldon
+ },
+ [17] = {
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .trainerName = _("GIANNA"),
+ .speechBefore = {EC_WORD_AHAHA, EC_WORD_YES, EC_WORD_EXCL, EC_WORD_LOVEY_DOVEY, EC_WORD_POKEMON, EC_WORD_WORLD},
+ .speechWin = {EC_WORD_MY, EC_WORD_SHINE, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_THINGS, EC_WORD_BETTER},
+ .speechLose = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_DISLIKE, EC_WORD_POKEMON, EC_WORD_QUES, -1},
+ .monSets = gFallarborBattleTentTrainerMons_Gianna
+ },
+ [18] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .trainerName = _("YAHIR"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_COME_ON, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_YOU, EC_WORD_NEED, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_A_LOT, EC_WORD_MORE},
+ .speechLose = {EC_WORD_NOT, EC_WORD_ENOUGH, EC_WORD_ELLIPSIS, EC_WORD_JUST, EC_WORD_NOT, EC_WORD_ENOUGH},
+ .monSets = gFallarborBattleTentTrainerMons_Yahir
+ },
+ [19] = {
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .trainerName = _("BRITNEY"),
+ .speechBefore = {EC_WORD_IT, EC_WORD_SEEMS, EC_WORD_THAT, EC_WORD_YOU_RE, EC_WORD_QUITE, EC_WORD_GOOD},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_LUKEWARM, EC_WORD_TALENT, EC_WORD_AT, EC_WORD_BEST},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_COOL, EC_WORD_HERO, EC_WORD_AT, EC_WORD_THIS},
+ .monSets = gFallarborBattleTentTrainerMons_Britney
+ },
+ [20] = {
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .trainerName = _("HECTER"),
+ .speechBefore = {EC_WORD_MY, EC_MOVE2(HIDDEN_POWER), EC_WORD_IS, EC_WORD_EXCITING, EC_WORD_ME, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_YEEHAW_EXCL, EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_A, EC_MOVE2(HIDDEN_POWER), EC_WORD_PARTY},
+ .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_DON_T, EC_WORD_YOU, EC_MOVE2(MIMIC), EC_WORD_ME},
+ .monSets = gFallarborBattleTentTrainerMons_Hecter
+ },
+ [21] = {
+ .facilityClass = FACILITY_CLASS_FISHERMAN,
+ .trainerName = _("TANNOR"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_GOT, EC_WORD_TO, EC_WORD_BE, EC_WORD_JOKING},
+ .speechWin = {EC_WORD_YOU_RE, EC_WORD_THE, EC_WORD_BEST, EC_WORD_AT, EC_WORD_BEING, EC_WORD_FUNNY},
+ .speechLose = {EC_WORD_YOU, EC_WORD_WEREN_T, EC_WORD_BEING, EC_WORD_FUNNY, EC_WORD_AT, EC_WORD_ALL},
+ .monSets = gFallarborBattleTentTrainerMons_Tannor
+ },
+ [22] = {
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .trainerName = _("BENJI"),
+ .speechBefore = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_THINK, EC_WORD_VERY, EC_WORD_FAST, EC_WORD_HUH_QUES},
+ .speechWin = {EC_WORD_SORRY, EC_WORD_EXCL, EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_MEAN, EC_WORD_YOU},
+ .speechLose = {EC_WORD_YOU, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SAD, EC_WORD_ELLIPSIS},
+ .monSets = gFallarborBattleTentTrainerMons_Benji
+ },
+ [23] = {
+ .facilityClass = FACILITY_CLASS_NINJA_BOY,
+ .trainerName = _("RORY"),
+ .speechBefore = {EC_WORD_DON_T, EC_WORD_CAUSE, EC_WORD_AN, EC_MOVE(UPROAR), EC_WORD_YOU, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_NEED, EC_WORD_AN, EC_MOVE(UPROAR), EC_WORD_EXCL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_CAUSE, EC_WORD_AN, EC_MOVE(UPROAR)},
+ .monSets = gFallarborBattleTentTrainerMons_Rory
+ },
+ [24] = {
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .trainerName = _("ELEANOR"),
+ .speechBefore = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_WANT, EC_WORD_TO, EC_WORD_PARTY, -1},
+ .speechWin = {EC_WORD_A, EC_WORD_TRENDY, EC_WORD_PARTY, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_REFRESHING},
+ .speechLose = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_PARTY, EC_WORD_QUES},
+ .monSets = gFallarborBattleTentTrainerMons_Eleanor
+ },
+ [25] = {
+ .facilityClass = FACILITY_CLASS_SWIMMER_F,
+ .trainerName = _("EVELYN"),
+ .speechBefore = {EC_WORD_MY, EC_WORD_PC, EC_WORD_IS, EC_WORD_MY, EC_WORD_SECRET_BASE, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_SECRET, EC_WORD_ON, EC_WORD_MY, EC_WORD_PC},
+ .speechLose = {EC_WORD_NO, EC_WORD_EXCL, -1, EC_WORD_I, EC_WORD_REJECT, EC_WORD_THIS},
+ .monSets = gFallarborBattleTentTrainerMons_Evelyn
+ },
+ [26] = {
+ .facilityClass = FACILITY_CLASS_PICNICKER,
+ .trainerName = _("ARIELLE"),
+ .speechBefore = {EC_WORD_IT_S, EC_WORD_NOT_VERY, EC_WORD_PRETTY, EC_WORD_BUT, EC_WORD_I, EC_WORD_TRY},
+ .speechWin = {EC_WORD_WE_RE, EC_WORD_NOT_VERY, EC_WORD_PRETTY, EC_WORD_BUT, EC_WORD_WE_RE, EC_WORD_GREAT},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_PRETTY, EC_WORD_MEAN, EC_WORD_OF, EC_WORD_YOU, EC_WORD_EXCL},
+ .monSets = gFallarborBattleTentTrainerMons_Arielle
+ },
+ [27] = {
+ .facilityClass = FACILITY_CLASS_SAILOR,
+ .trainerName = _("CONNAR"),
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_STRONG, EC_WORD_ENOUGH, EC_WORD_FOR, EC_WORD_THIS},
+ .speechWin = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_YOU_RE, EC_WORD_OK_QUES, -1},
+ .speechLose = {EC_WORD_GOOD_BYE, EC_WORD_AND, EC_WORD_THANK_YOU, -1, -1, -1},
+ .monSets = gFallarborBattleTentTrainerMons_Connar
+ },
+ [28] = {
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .trainerName = _("MAURICE"),
+ .speechBefore = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NO, EC_WORD_RADIO, EC_WORD_OR, EC_WORD_TELEVISION},
+ .speechWin = {EC_WORD_BUT, EC_WORD_THERE, EC_WORD_IS, EC_WORD_A_LOT, EC_WORD_OF, EC_WORD_POKEMON},
+ .speechLose = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_ENJOY, EC_WORD_MYSELF, EC_WORD_WITHOUT, EC_WORD_MONEY},
+ .monSets = gFallarborBattleTentTrainerMons_Maurice
+ },
+ [29] = {
+ .facilityClass = FACILITY_CLASS_LASS,
+ .trainerName = _("KIANNA"),
+ .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_DEPT_STORE, EC_WORD_SHOPPING},
+ .speechWin = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_SHOPPING, EC_WORD_ALONE, -1, -1},
+ .speechLose = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_SHOPPING, EC_WORD_TOGETHER, EC_WORD_QUES},
+ .monSets = gFallarborBattleTentTrainerMons_Kianna
+ }
+};
+
+const struct FacilityMon gFallarborBattleTentMons[] =
+{
+ [0] = {
+ .species = SPECIES_NUMEL,
+ .moves = {MOVE_GROWL, MOVE_FLAMETHROWER, MOVE_TACKLE, MOVE_SUNNY_DAY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [1] = {
+ .species = SPECIES_LINOONE,
+ .moves = {MOVE_ODOR_SLEUTH, MOVE_COVET, MOVE_ROCK_SMASH, MOVE_CHARM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_SASSY
+ },
+ [2] = {
+ .species = SPECIES_PLUSLE,
+ .moves = {MOVE_SPARK, MOVE_GROWL, MOVE_QUICK_ATTACK, MOVE_FAKE_TEARS},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [3] = {
+ .species = SPECIES_POOCHYENA,
+ .moves = {MOVE_YAWN, MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_FRUSTRATION},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAUGHTY
+ },
+ [4] = {
+ .species = SPECIES_KECLEON,
+ .moves = {MOVE_LICK, MOVE_SLASH, MOVE_FAINT_ATTACK, MOVE_PSYBEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_MODEST
+ },
+ [5] = {
+ .species = SPECIES_MAGIKARP,
+ .moves = {MOVE_SPLASH, MOVE_TACKLE, MOVE_FLAIL, MOVE_NONE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [6] = {
+ .species = SPECIES_SOLROCK,
+ .moves = {MOVE_ROCK_THROW, MOVE_FLASH, MOVE_SANDSTORM, MOVE_PSYWAVE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_SASSY
+ },
+ [7] = {
+ .species = SPECIES_MAKUHITA,
+ .moves = {MOVE_DETECT, MOVE_ARM_THRUST, MOVE_FAKE_OUT, MOVE_SMELLING_SALT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [8] = {
+ .species = SPECIES_MACHOKE,
+ .moves = {MOVE_COUNTER, MOVE_REVENGE, MOVE_BULK_UP, MOVE_FOCUS_ENERGY},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_NAIVE
+ },
+ [9] = {
+ .species = SPECIES_NINCADA,
+ .moves = {MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_MUD_SLAP, MOVE_DIG},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_SERIOUS
+ },
+ [10] = {
+ .species = SPECIES_BEAUTIFLY,
+ .moves = {MOVE_FLASH, MOVE_MORNING_SUN, MOVE_HARDEN, MOVE_MEGA_DRAIN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIRKY
+ },
+ [11] = {
+ .species = SPECIES_DUSTOX,
+ .moves = {MOVE_MOONLIGHT, MOVE_HARDEN, MOVE_POISON_STING, MOVE_PSYBEAM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,
+ .nature = NATURE_DOCILE
+ },
+ [12] = {
+ .species = SPECIES_ILLUMISE,
+ .moves = {MOVE_METRONOME, MOVE_FLATTER, MOVE_WISH, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY,
+ .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [13] = {
+ .species = SPECIES_VOLBEAT,
+ .moves = {MOVE_TACKLE, MOVE_MOONLIGHT, MOVE_SIGNAL_BEAM, MOVE_TAIL_GLOW},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [14] = {
+ .species = SPECIES_NINJASK,
+ .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_DIG, MOVE_SAND_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_TIMID
+ },
+ [15] = {
+ .species = SPECIES_NINJASK,
+ .moves = {MOVE_SWORDS_DANCE, MOVE_CUT, MOVE_FURY_CUTTER, MOVE_LEECH_LIFE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [16] = {
+ .species = SPECIES_ARON,
+ .moves = {MOVE_METAL_CLAW, MOVE_PROTECT, MOVE_SHOCK_WAVE, MOVE_METAL_SOUND},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_LONELY
+ },
+ [17] = {
+ .species = SPECIES_ARON,
+ .moves = {MOVE_SECRET_POWER, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_MUD_SLAP},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_GENTLE
+ },
+ [18] = {
+ .species = SPECIES_ELECTRIKE,
+ .moves = {MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_HOWL, MOVE_QUICK_ATTACK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HASTY
+ },
+ [19] = {
+ .species = SPECIES_MAGNEMITE,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_ENDURE, MOVE_SPARK},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIET
+ },
+ [20] = {
+ .species = SPECIES_VOLTORB,
+ .moves = {MOVE_CHARGE, MOVE_SPARK, MOVE_SCREECH, MOVE_SONIC_BOOM},
+ .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [21] = {
+ .species = SPECIES_WHISMUR,
+ .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HYPER_VOICE, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [22] = {
+ .species = SPECIES_LOUDRED,
+ .moves = {MOVE_STOMP, MOVE_REST, MOVE_SCREECH, MOVE_UPROAR},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [23] = {
+ .species = SPECIES_LINOONE,
+ .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_SHOCK_WAVE, MOVE_GROWL},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [24] = {
+ .species = SPECIES_MIGHTYENA,
+ .moves = {MOVE_SAND_ATTACK, MOVE_HOWL, MOVE_SWAGGER, MOVE_SECRET_POWER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_JOLLY
+ },
+ [25] = {
+ .species = SPECIES_SWABLU,
+ .moves = {MOVE_TAKE_DOWN, MOVE_SING, MOVE_GROWL, MOVE_SAFEGUARD},
+ .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_QUIRKY
+ },
+ [26] = {
+ .species = SPECIES_SKARMORY,
+ .moves = {MOVE_AGILITY, MOVE_STEEL_WING, MOVE_SAND_ATTACK, MOVE_TORMENT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [27] = {
+ .species = SPECIES_GOLBAT,
+ .moves = {MOVE_CONFUSE_RAY, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_SUBSTITUTE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BOLD
+ },
+ [28] = {
+ .species = SPECIES_WINGULL,
+ .moves = {MOVE_WING_ATTACK, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,
+ .nature = NATURE_MODEST
+ },
+ [29] = {
+ .species = SPECIES_PELIPPER,
+ .moves = {MOVE_TWISTER, MOVE_ICY_WIND, MOVE_DOUBLE_TEAM, MOVE_WATER_GUN},
+ .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [30] = {
+ .species = SPECIES_BARBOACH,
+ .moves = {MOVE_SPARK, MOVE_WATER_GUN, MOVE_EARTHQUAKE, MOVE_WATER_SPORT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_MODEST
+ },
+ [31] = {
+ .species = SPECIES_WAILMER,
+ .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_SPLASH, MOVE_CURSE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_QUIET
+ },
+ [32] = {
+ .species = SPECIES_MARILL,
+ .moves = {MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_ATTRACT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [33] = {
+ .species = SPECIES_GOLDEEN,
+ .moves = {MOVE_WATERFALL, MOVE_RAIN_DANCE, MOVE_FLAIL, MOVE_PROTECT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY,
+ .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_HASTY
+ },
+ [34] = {
+ .species = SPECIES_GOLDEEN,
+ .moves = {MOVE_SLEEP_TALK, MOVE_HORN_DRILL, MOVE_REST, MOVE_SUPERSONIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_CAREFUL
+ },
+ [35] = {
+ .species = SPECIES_TRAPINCH,
+ .moves = {MOVE_RETURN, MOVE_SAND_ATTACK, MOVE_ATTRACT, MOVE_STRENGTH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [36] = {
+ .species = SPECIES_BALTOY,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_RAPID_SPIN, MOVE_MIMIC},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [37] = {
+ .species = SPECIES_GRAVELER,
+ .moves = {MOVE_ROCK_BLAST, MOVE_DEFENSE_CURL, MOVE_MAGNITUDE, MOVE_MUD_SPORT},
+ .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ },
+ [38] = {
+ .species = SPECIES_SANDSHREW,
+ .moves = {MOVE_SAND_TOMB, MOVE_SANDSTORM, MOVE_DOUBLE_TEAM, MOVE_FOCUS_PUNCH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_JOLLY
+ },
+ [39] = {
+ .species = SPECIES_SWALOT,
+ .moves = {MOVE_YAWN, MOVE_ENCORE, MOVE_BULLET_SEED, MOVE_SLUDGE},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS,
+ .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,
+ .nature = NATURE_BRAVE
+ },
+ [40] = {
+ .species = SPECIES_SHROOMISH,
+ .moves = {MOVE_HEADBUTT, MOVE_SPORE, MOVE_SWAGGER, MOVE_LEECH_SEED},
+ .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_IMPISH
+ },
+ [41] = {
+ .species = SPECIES_KIRLIA,
+ .moves = {MOVE_HYPNOSIS, MOVE_GROWL, MOVE_ATTRACT, MOVE_DREAM_EATER},
+ .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [42] = {
+ .species = SPECIES_LOMBRE,
+ .moves = {MOVE_NATURE_POWER, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_FLASH},
+ .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_BASHFUL
+ },
+ [43] = {
+ .species = SPECIES_NUZLEAF,
+ .moves = {MOVE_NATURE_POWER, MOVE_TORMENT, MOVE_SWAGGER, MOVE_REST},
+ .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY,
+ .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,
+ .nature = NATURE_ADAMANT
+ },
+ [44] = {
+ .species = SPECIES_CACNEA,
+ .moves = {MOVE_SANDSTORM, MOVE_NEEDLE_ARM, MOVE_TEETER_DANCE, MOVE_LEECH_SEED},
+ .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER,
+ .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,
+ .nature = NATURE_ADAMANT
+ }
+};
diff --git a/src/data/graphics/berry_fix.h b/src/data/graphics/berry_fix.h
index aede748a4..07e2cbf51 100644
--- a/src/data/graphics/berry_fix.h
+++ b/src/data/graphics/berry_fix.h
@@ -20,4 +20,4 @@ const u32 gBerryFixGbaTransferError_Tilemap[] = INCBIN_U32("graphics/berry_fix/g
const u16 gBerryFixWindow_Pal[] = INCBIN_U16("graphics/berry_fix/window.gbapal");
const u32 gBerryFixWindow_Gfx[] = INCBIN_U32("graphics/berry_fix/window.4bpp.lz");
-const u32 gBerryFixWindow_Tilemap[] = INCBIN_U32("graphics/berry_fix/window.bin.lz"); \ No newline at end of file
+const u32 gBerryFixWindow_Tilemap[] = INCBIN_U32("graphics/berry_fix/window.bin.lz");
diff --git a/src/data/pokemon_graphics/front_anims.h b/src/data/pokemon_graphics/front_anims.h
index 0e7b75bde..8a42eb5c9 100644
--- a/src/data/pokemon_graphics/front_anims.h
+++ b/src/data/pokemon_graphics/front_anims.h
@@ -1,4 +1,4 @@
-
+
const union AnimCmd gAnimCmd_NONE_1[] =
{
ANIMCMD_FRAME(0, 30),
@@ -6946,446 +6946,449 @@ const union AnimCmd *const gAnims_UNOWN_QMARK[] ={
gAnimCmd_UNOWN_QMARK_1,
};
+#define ANIM_CMD(name) [SPECIES_##name] = gAnims_##name
+#define ANIM_CMD_FULL(name, anims) [SPECIES_##name] = anims
+
const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[] =
{
- gAnims_NONE,
- gAnims_BULBASAUR,
- gAnims_IVYSAUR,
- gAnims_VENUSAUR,
- gAnims_CHARMANDER,
- gAnims_CHARMELEON,
- gAnims_CHARIZARD,
- gAnims_SQUIRTLE,
- gAnims_WARTORTLE,
- gAnims_BLASTOISE,
- gAnims_CATERPIE,
- gAnims_METAPOD,
- gAnims_BUTTERFREE,
- gAnims_WEEDLE,
- gAnims_KAKUNA,
- gAnims_BEEDRILL,
- gAnims_PIDGEY,
- gAnims_PIDGEOTTO,
- gAnims_PIDGEOT,
- gAnims_RATTATA,
- gAnims_RATICATE,
- gAnims_SPEAROW,
- gAnims_FEAROW,
- gAnims_EKANS,
- gAnims_ARBOK,
- gAnims_PIKACHU,
- gAnims_RAICHU,
- gAnims_SANDSHREW,
- gAnims_SANDSLASH,
- gAnims_NIDORAN_F,
- gAnims_NIDORINA,
- gAnims_NIDOQUEEN,
- gAnims_NIDORAN_M,
- gAnims_NIDORINO,
- gAnims_NIDOKING,
- gAnims_CLEFAIRY,
- gAnims_CLEFABLE,
- gAnims_VULPIX,
- gAnims_NINETALES,
- gAnims_JIGGLYPUFF,
- gAnims_WIGGLYTUFF,
- gAnims_ZUBAT,
- gAnims_GOLBAT,
- gAnims_ODDISH,
- gAnims_GLOOM,
- gAnims_VILEPLUME,
- gAnims_PARAS,
- gAnims_PARASECT,
- gAnims_VENONAT,
- gAnims_VENOMOTH,
- gAnims_DIGLETT,
- gAnims_DUGTRIO,
- gAnims_MEOWTH,
- gAnims_PERSIAN,
- gAnims_PSYDUCK,
- gAnims_GOLDUCK,
- gAnims_MANKEY,
- gAnims_PRIMEAPE,
- gAnims_GROWLITHE,
- gAnims_ARCANINE,
- gAnims_POLIWAG,
- gAnims_POLIWHIRL,
- gAnims_POLIWRATH,
- gAnims_ABRA,
- gAnims_KADABRA,
- gAnims_ALAKAZAM,
- gAnims_MACHOP,
- gAnims_MACHOKE,
- gAnims_MACHAMP,
- gAnims_BELLSPROUT,
- gAnims_WEEPINBELL,
- gAnims_VICTREEBEL,
- gAnims_TENTACOOL,
- gAnims_TENTACRUEL,
- gAnims_GEODUDE,
- gAnims_GRAVELER,
- gAnims_GOLEM,
- gAnims_PONYTA,
- gAnims_RAPIDASH,
- gAnims_SLOWPOKE,
- gAnims_SLOWBRO,
- gAnims_MAGNEMITE,
- gAnims_MAGNETON,
- gAnims_FARFETCHD,
- gAnims_DODUO,
- gAnims_DODRIO,
- gAnims_SEEL,
- gAnims_DEWGONG,
- gAnims_GRIMER,
- gAnims_MUK,
- gAnims_SHELLDER,
- gAnims_CLOYSTER,
- gAnims_GASTLY,
- gAnims_HAUNTER,
- gAnims_GENGAR,
- gAnims_ONIX,
- gAnims_DROWZEE,
- gAnims_HYPNO,
- gAnims_KRABBY,
- gAnims_KINGLER,
- gAnims_VOLTORB,
- gAnims_ELECTRODE,
- gAnims_EXEGGCUTE,
- gAnims_EXEGGUTOR,
- gAnims_CUBONE,
- gAnims_MAROWAK,
- gAnims_HITMONLEE,
- gAnims_HITMONCHAN,
- gAnims_LICKITUNG,
- gAnims_KOFFING,
- gAnims_WEEZING,
- gAnims_RHYHORN,
- gAnims_RHYDON,
- gAnims_CHANSEY,
- gAnims_TANGELA,
- gAnims_KANGASKHAN,
- gAnims_HORSEA,
- gAnims_SEADRA,
- gAnims_GOLDEEN,
- gAnims_SEAKING,
- gAnims_STARYU,
- gAnims_STARMIE,
- gAnims_MR_MIME,
- gAnims_SCYTHER,
- gAnims_JYNX,
- gAnims_ELECTABUZZ,
- gAnims_MAGMAR,
- gAnims_PINSIR,
- gAnims_TAUROS,
- gAnims_MAGIKARP,
- gAnims_GYARADOS,
- gAnims_LAPRAS,
- gAnims_DITTO,
- gAnims_EEVEE,
- gAnims_VAPOREON,
- gAnims_JOLTEON,
- gAnims_FLAREON,
- gAnims_PORYGON,
- gAnims_OMANYTE,
- gAnims_OMASTAR,
- gAnims_KABUTO,
- gAnims_KABUTOPS,
- gAnims_AERODACTYL,
- gAnims_SNORLAX,
- gAnims_ARTICUNO,
- gAnims_ZAPDOS,
- gAnims_MOLTRES,
- gAnims_DRATINI,
- gAnims_DRAGONAIR,
- gAnims_DRAGONITE,
- gAnims_MEWTWO,
- gAnims_MEW,
- gAnims_CHIKORITA,
- gAnims_BAYLEEF,
- gAnims_MEGANIUM,
- gAnims_CYNDAQUIL,
- gAnims_QUILAVA,
- gAnims_TYPHLOSION,
- gAnims_TOTODILE,
- gAnims_CROCONAW,
- gAnims_FERALIGATR,
- gAnims_SENTRET,
- gAnims_FURRET,
- gAnims_HOOTHOOT,
- gAnims_NOCTOWL,
- gAnims_LEDYBA,
- gAnims_LEDIAN,
- gAnims_SPINARAK,
- gAnims_ARIADOS,
- gAnims_CROBAT,
- gAnims_CHINCHOU,
- gAnims_LANTURN,
- gAnims_PICHU,
- gAnims_CLEFFA,
- gAnims_IGGLYBUFF,
- gAnims_TOGEPI,
- gAnims_TOGETIC,
- gAnims_NATU,
- gAnims_XATU,
- gAnims_MAREEP,
- gAnims_FLAAFFY,
- gAnims_AMPHAROS,
- gAnims_BELLOSSOM,
- gAnims_MARILL,
- gAnims_AZUMARILL,
- gAnims_SUDOWOODO,
- gAnims_POLITOED,
- gAnims_HOPPIP,
- gAnims_SKIPLOOM,
- gAnims_JUMPLUFF,
- gAnims_AIPOM,
- gAnims_SUNKERN,
- gAnims_SUNFLORA,
- gAnims_YANMA,
- gAnims_WOOPER,
- gAnims_QUAGSIRE,
- gAnims_ESPEON,
- gAnims_UMBREON,
- gAnims_MURKROW,
- gAnims_SLOWKING,
- gAnims_MISDREAVUS,
- gAnims_UNOWN,
- gAnims_WOBBUFFET,
- gAnims_GIRAFARIG,
- gAnims_PINECO,
- gAnims_FORRETRESS,
- gAnims_DUNSPARCE,
- gAnims_GLIGAR,
- gAnims_STEELIX,
- gAnims_SNUBBULL,
- gAnims_GRANBULL,
- gAnims_QWILFISH,
- gAnims_SCIZOR,
- gAnims_SHUCKLE,
- gAnims_HERACROSS,
- gAnims_SNEASEL,
- gAnims_TEDDIURSA,
- gAnims_URSARING,
- gAnims_SLUGMA,
- gAnims_MAGCARGO,
- gAnims_SWINUB,
- gAnims_PILOSWINE,
- gAnims_CORSOLA,
- gAnims_REMORAID,
- gAnims_OCTILLERY,
- gAnims_DELIBIRD,
- gAnims_MANTINE,
- gAnims_SKARMORY,
- gAnims_HOUNDOUR,
- gAnims_HOUNDOOM,
- gAnims_KINGDRA,
- gAnims_PHANPY,
- gAnims_DONPHAN,
- gAnims_PORYGON2,
- gAnims_STANTLER,
- gAnims_SMEARGLE,
- gAnims_TYROGUE,
- gAnims_HITMONTOP,
- gAnims_SMOOCHUM,
- gAnims_ELEKID,
- gAnims_MAGBY,
- gAnims_MILTANK,
- gAnims_BLISSEY,
- gAnims_RAIKOU,
- gAnims_ENTEI,
- gAnims_SUICUNE,
- gAnims_LARVITAR,
- gAnims_PUPITAR,
- gAnims_TYRANITAR,
- gAnims_LUGIA,
- gAnims_HO_OH,
- gAnims_CELEBI,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_OLD_UNOWN_B,
- gAnims_TREECKO,
- gAnims_GROVYLE,
- gAnims_SCEPTILE,
- gAnims_TORCHIC,
- gAnims_COMBUSKEN,
- gAnims_BLAZIKEN,
- gAnims_MUDKIP,
- gAnims_MARSHTOMP,
- gAnims_SWAMPERT,
- gAnims_POOCHYENA,
- gAnims_MIGHTYENA,
- gAnims_ZIGZAGOON,
- gAnims_LINOONE,
- gAnims_WURMPLE,
- gAnims_SILCOON,
- gAnims_BEAUTIFLY,
- gAnims_CASCOON,
- gAnims_DUSTOX,
- gAnims_LOTAD,
- gAnims_LOMBRE,
- gAnims_LUDICOLO,
- gAnims_SEEDOT,
- gAnims_NUZLEAF,
- gAnims_SHIFTRY,
- gAnims_NINCADA,
- gAnims_NINJASK,
- gAnims_SHEDINJA,
- gAnims_TAILLOW,
- gAnims_SWELLOW,
- gAnims_SHROOMISH,
- gAnims_BRELOOM,
- gAnims_SPINDA,
- gAnims_WINGULL,
- gAnims_PELIPPER,
- gAnims_SURSKIT,
- gAnims_MASQUERAIN,
- gAnims_WAILMER,
- gAnims_WAILORD,
- gAnims_SKITTY,
- gAnims_DELCATTY,
- gAnims_KECLEON,
- gAnims_BALTOY,
- gAnims_CLAYDOL,
- gAnims_NOSEPASS,
- gAnims_TORKOAL,
- gAnims_SABLEYE,
- gAnims_BARBOACH,
- gAnims_WHISCASH,
- gAnims_LUVDISC,
- gAnims_CORPHISH,
- gAnims_CRAWDAUNT,
- gAnims_FEEBAS,
- gAnims_MILOTIC,
- gAnims_CARVANHA,
- gAnims_SHARPEDO,
- gAnims_TRAPINCH,
- gAnims_VIBRAVA,
- gAnims_FLYGON,
- gAnims_MAKUHITA,
- gAnims_HARIYAMA,
- gAnims_ELECTRIKE,
- gAnims_MANECTRIC,
- gAnims_NUMEL,
- gAnims_CAMERUPT,
- gAnims_SPHEAL,
- gAnims_SEALEO,
- gAnims_WALREIN,
- gAnims_CACNEA,
- gAnims_CACTURNE,
- gAnims_SNORUNT,
- gAnims_GLALIE,
- gAnims_LUNATONE,
- gAnims_SOLROCK,
- gAnims_AZURILL,
- gAnims_SPOINK,
- gAnims_GRUMPIG,
- gAnims_PLUSLE,
- gAnims_MINUN,
- gAnims_MAWILE,
- gAnims_MEDITITE,
- gAnims_MEDICHAM,
- gAnims_SWABLU,
- gAnims_ALTARIA,
- gAnims_WYNAUT,
- gAnims_DUSKULL,
- gAnims_DUSCLOPS,
- gAnims_ROSELIA,
- gAnims_SLAKOTH,
- gAnims_VIGOROTH,
- gAnims_SLAKING,
- gAnims_GULPIN,
- gAnims_SWALOT,
- gAnims_TROPIUS,
- gAnims_WHISMUR,
- gAnims_LOUDRED,
- gAnims_EXPLOUD,
- gAnims_CLAMPERL,
- gAnims_HUNTAIL,
- gAnims_GOREBYSS,
- gAnims_ABSOL,
- gAnims_SHUPPET,
- gAnims_BANETTE,
- gAnims_SEVIPER,
- gAnims_ZANGOOSE,
- gAnims_RELICANTH,
- gAnims_ARON,
- gAnims_LAIRON,
- gAnims_AGGRON,
- gAnims_CASTFORM,
- gAnims_VOLBEAT,
- gAnims_ILLUMISE,
- gAnims_LILEEP,
- gAnims_CRADILY,
- gAnims_ANORITH,
- gAnims_ARMALDO,
- gAnims_RALTS,
- gAnims_KIRLIA,
- gAnims_GARDEVOIR,
- gAnims_BAGON,
- gAnims_SHELGON,
- gAnims_SALAMENCE,
- gAnims_BELDUM,
- gAnims_METANG,
- gAnims_METAGROSS,
- gAnims_REGIROCK,
- gAnims_REGICE,
- gAnims_REGISTEEL,
- gAnims_KYOGRE,
- gAnims_GROUDON,
- gAnims_RAYQUAZA,
- gAnims_LATIAS,
- gAnims_LATIOS,
- gAnims_JIRACHI,
- gAnims_DEOXYS,
- gAnims_CHIMECHO,
- gAnims_EGG,
- gAnims_UNOWN_B,
- gAnims_UNOWN_C,
- gAnims_UNOWN_D,
- gAnims_UNOWN_E,
- gAnims_UNOWN_F,
- gAnims_UNOWN_G,
- gAnims_UNOWN_H,
- gAnims_UNOWN_I,
- gAnims_UNOWN_J,
- gAnims_UNOWN_K,
- gAnims_UNOWN_L,
- gAnims_UNOWN_M,
- gAnims_UNOWN_N,
- gAnims_UNOWN_O,
- gAnims_UNOWN_P,
- gAnims_UNOWN_Q,
- gAnims_UNOWN_R,
- gAnims_UNOWN_S,
- gAnims_UNOWN_T,
- gAnims_UNOWN_U,
- gAnims_UNOWN_V,
- gAnims_UNOWN_W,
- gAnims_UNOWN_X,
- gAnims_UNOWN_Y,
- gAnims_UNOWN_Z,
- gAnims_UNOWN_EMARK,
- gAnims_UNOWN_QMARK,
+ ANIM_CMD(NONE),
+ ANIM_CMD(BULBASAUR),
+ ANIM_CMD(IVYSAUR),
+ ANIM_CMD(VENUSAUR),
+ ANIM_CMD(CHARMANDER),
+ ANIM_CMD(CHARMELEON),
+ ANIM_CMD(CHARIZARD),
+ ANIM_CMD(SQUIRTLE),
+ ANIM_CMD(WARTORTLE),
+ ANIM_CMD(BLASTOISE),
+ ANIM_CMD(CATERPIE),
+ ANIM_CMD(METAPOD),
+ ANIM_CMD(BUTTERFREE),
+ ANIM_CMD(WEEDLE),
+ ANIM_CMD(KAKUNA),
+ ANIM_CMD(BEEDRILL),
+ ANIM_CMD(PIDGEY),
+ ANIM_CMD(PIDGEOTTO),
+ ANIM_CMD(PIDGEOT),
+ ANIM_CMD(RATTATA),
+ ANIM_CMD(RATICATE),
+ ANIM_CMD(SPEAROW),
+ ANIM_CMD(FEAROW),
+ ANIM_CMD(EKANS),
+ ANIM_CMD(ARBOK),
+ ANIM_CMD(PIKACHU),
+ ANIM_CMD(RAICHU),
+ ANIM_CMD(SANDSHREW),
+ ANIM_CMD(SANDSLASH),
+ ANIM_CMD(NIDORAN_F),
+ ANIM_CMD(NIDORINA),
+ ANIM_CMD(NIDOQUEEN),
+ ANIM_CMD(NIDORAN_M),
+ ANIM_CMD(NIDORINO),
+ ANIM_CMD(NIDOKING),
+ ANIM_CMD(CLEFAIRY),
+ ANIM_CMD(CLEFABLE),
+ ANIM_CMD(VULPIX),
+ ANIM_CMD(NINETALES),
+ ANIM_CMD(JIGGLYPUFF),
+ ANIM_CMD(WIGGLYTUFF),
+ ANIM_CMD(ZUBAT),
+ ANIM_CMD(GOLBAT),
+ ANIM_CMD(ODDISH),
+ ANIM_CMD(GLOOM),
+ ANIM_CMD(VILEPLUME),
+ ANIM_CMD(PARAS),
+ ANIM_CMD(PARASECT),
+ ANIM_CMD(VENONAT),
+ ANIM_CMD(VENOMOTH),
+ ANIM_CMD(DIGLETT),
+ ANIM_CMD(DUGTRIO),
+ ANIM_CMD(MEOWTH),
+ ANIM_CMD(PERSIAN),
+ ANIM_CMD(PSYDUCK),
+ ANIM_CMD(GOLDUCK),
+ ANIM_CMD(MANKEY),
+ ANIM_CMD(PRIMEAPE),
+ ANIM_CMD(GROWLITHE),
+ ANIM_CMD(ARCANINE),
+ ANIM_CMD(POLIWAG),
+ ANIM_CMD(POLIWHIRL),
+ ANIM_CMD(POLIWRATH),
+ ANIM_CMD(ABRA),
+ ANIM_CMD(KADABRA),
+ ANIM_CMD(ALAKAZAM),
+ ANIM_CMD(MACHOP),
+ ANIM_CMD(MACHOKE),
+ ANIM_CMD(MACHAMP),
+ ANIM_CMD(BELLSPROUT),
+ ANIM_CMD(WEEPINBELL),
+ ANIM_CMD(VICTREEBEL),
+ ANIM_CMD(TENTACOOL),
+ ANIM_CMD(TENTACRUEL),
+ ANIM_CMD(GEODUDE),
+ ANIM_CMD(GRAVELER),
+ ANIM_CMD(GOLEM),
+ ANIM_CMD(PONYTA),
+ ANIM_CMD(RAPIDASH),
+ ANIM_CMD(SLOWPOKE),
+ ANIM_CMD(SLOWBRO),
+ ANIM_CMD(MAGNEMITE),
+ ANIM_CMD(MAGNETON),
+ ANIM_CMD(FARFETCHD),
+ ANIM_CMD(DODUO),
+ ANIM_CMD(DODRIO),
+ ANIM_CMD(SEEL),
+ ANIM_CMD(DEWGONG),
+ ANIM_CMD(GRIMER),
+ ANIM_CMD(MUK),
+ ANIM_CMD(SHELLDER),
+ ANIM_CMD(CLOYSTER),
+ ANIM_CMD(GASTLY),
+ ANIM_CMD(HAUNTER),
+ ANIM_CMD(GENGAR),
+ ANIM_CMD(ONIX),
+ ANIM_CMD(DROWZEE),
+ ANIM_CMD(HYPNO),
+ ANIM_CMD(KRABBY),
+ ANIM_CMD(KINGLER),
+ ANIM_CMD(VOLTORB),
+ ANIM_CMD(ELECTRODE),
+ ANIM_CMD(EXEGGCUTE),
+ ANIM_CMD(EXEGGUTOR),
+ ANIM_CMD(CUBONE),
+ ANIM_CMD(MAROWAK),
+ ANIM_CMD(HITMONLEE),
+ ANIM_CMD(HITMONCHAN),
+ ANIM_CMD(LICKITUNG),
+ ANIM_CMD(KOFFING),
+ ANIM_CMD(WEEZING),
+ ANIM_CMD(RHYHORN),
+ ANIM_CMD(RHYDON),
+ ANIM_CMD(CHANSEY),
+ ANIM_CMD(TANGELA),
+ ANIM_CMD(KANGASKHAN),
+ ANIM_CMD(HORSEA),
+ ANIM_CMD(SEADRA),
+ ANIM_CMD(GOLDEEN),
+ ANIM_CMD(SEAKING),
+ ANIM_CMD(STARYU),
+ ANIM_CMD(STARMIE),
+ ANIM_CMD(MR_MIME),
+ ANIM_CMD(SCYTHER),
+ ANIM_CMD(JYNX),
+ ANIM_CMD(ELECTABUZZ),
+ ANIM_CMD(MAGMAR),
+ ANIM_CMD(PINSIR),
+ ANIM_CMD(TAUROS),
+ ANIM_CMD(MAGIKARP),
+ ANIM_CMD(GYARADOS),
+ ANIM_CMD(LAPRAS),
+ ANIM_CMD(DITTO),
+ ANIM_CMD(EEVEE),
+ ANIM_CMD(VAPOREON),
+ ANIM_CMD(JOLTEON),
+ ANIM_CMD(FLAREON),
+ ANIM_CMD(PORYGON),
+ ANIM_CMD(OMANYTE),
+ ANIM_CMD(OMASTAR),
+ ANIM_CMD(KABUTO),
+ ANIM_CMD(KABUTOPS),
+ ANIM_CMD(AERODACTYL),
+ ANIM_CMD(SNORLAX),
+ ANIM_CMD(ARTICUNO),
+ ANIM_CMD(ZAPDOS),
+ ANIM_CMD(MOLTRES),
+ ANIM_CMD(DRATINI),
+ ANIM_CMD(DRAGONAIR),
+ ANIM_CMD(DRAGONITE),
+ ANIM_CMD(MEWTWO),
+ ANIM_CMD(MEW),
+ ANIM_CMD(CHIKORITA),
+ ANIM_CMD(BAYLEEF),
+ ANIM_CMD(MEGANIUM),
+ ANIM_CMD(CYNDAQUIL),
+ ANIM_CMD(QUILAVA),
+ ANIM_CMD(TYPHLOSION),
+ ANIM_CMD(TOTODILE),
+ ANIM_CMD(CROCONAW),
+ ANIM_CMD(FERALIGATR),
+ ANIM_CMD(SENTRET),
+ ANIM_CMD(FURRET),
+ ANIM_CMD(HOOTHOOT),
+ ANIM_CMD(NOCTOWL),
+ ANIM_CMD(LEDYBA),
+ ANIM_CMD(LEDIAN),
+ ANIM_CMD(SPINARAK),
+ ANIM_CMD(ARIADOS),
+ ANIM_CMD(CROBAT),
+ ANIM_CMD(CHINCHOU),
+ ANIM_CMD(LANTURN),
+ ANIM_CMD(PICHU),
+ ANIM_CMD(CLEFFA),
+ ANIM_CMD(IGGLYBUFF),
+ ANIM_CMD(TOGEPI),
+ ANIM_CMD(TOGETIC),
+ ANIM_CMD(NATU),
+ ANIM_CMD(XATU),
+ ANIM_CMD(MAREEP),
+ ANIM_CMD(FLAAFFY),
+ ANIM_CMD(AMPHAROS),
+ ANIM_CMD(BELLOSSOM),
+ ANIM_CMD(MARILL),
+ ANIM_CMD(AZUMARILL),
+ ANIM_CMD(SUDOWOODO),
+ ANIM_CMD(POLITOED),
+ ANIM_CMD(HOPPIP),
+ ANIM_CMD(SKIPLOOM),
+ ANIM_CMD(JUMPLUFF),
+ ANIM_CMD(AIPOM),
+ ANIM_CMD(SUNKERN),
+ ANIM_CMD(SUNFLORA),
+ ANIM_CMD(YANMA),
+ ANIM_CMD(WOOPER),
+ ANIM_CMD(QUAGSIRE),
+ ANIM_CMD(ESPEON),
+ ANIM_CMD(UMBREON),
+ ANIM_CMD(MURKROW),
+ ANIM_CMD(SLOWKING),
+ ANIM_CMD(MISDREAVUS),
+ ANIM_CMD(UNOWN),
+ ANIM_CMD(WOBBUFFET),
+ ANIM_CMD(GIRAFARIG),
+ ANIM_CMD(PINECO),
+ ANIM_CMD(FORRETRESS),
+ ANIM_CMD(DUNSPARCE),
+ ANIM_CMD(GLIGAR),
+ ANIM_CMD(STEELIX),
+ ANIM_CMD(SNUBBULL),
+ ANIM_CMD(GRANBULL),
+ ANIM_CMD(QWILFISH),
+ ANIM_CMD(SCIZOR),
+ ANIM_CMD(SHUCKLE),
+ ANIM_CMD(HERACROSS),
+ ANIM_CMD(SNEASEL),
+ ANIM_CMD(TEDDIURSA),
+ ANIM_CMD(URSARING),
+ ANIM_CMD(SLUGMA),
+ ANIM_CMD(MAGCARGO),
+ ANIM_CMD(SWINUB),
+ ANIM_CMD(PILOSWINE),
+ ANIM_CMD(CORSOLA),
+ ANIM_CMD(REMORAID),
+ ANIM_CMD(OCTILLERY),
+ ANIM_CMD(DELIBIRD),
+ ANIM_CMD(MANTINE),
+ ANIM_CMD(SKARMORY),
+ ANIM_CMD(HOUNDOUR),
+ ANIM_CMD(HOUNDOOM),
+ ANIM_CMD(KINGDRA),
+ ANIM_CMD(PHANPY),
+ ANIM_CMD(DONPHAN),
+ ANIM_CMD(PORYGON2),
+ ANIM_CMD(STANTLER),
+ ANIM_CMD(SMEARGLE),
+ ANIM_CMD(TYROGUE),
+ ANIM_CMD(HITMONTOP),
+ ANIM_CMD(SMOOCHUM),
+ ANIM_CMD(ELEKID),
+ ANIM_CMD(MAGBY),
+ ANIM_CMD(MILTANK),
+ ANIM_CMD(BLISSEY),
+ ANIM_CMD(RAIKOU),
+ ANIM_CMD(ENTEI),
+ ANIM_CMD(SUICUNE),
+ ANIM_CMD(LARVITAR),
+ ANIM_CMD(PUPITAR),
+ ANIM_CMD(TYRANITAR),
+ ANIM_CMD(LUGIA),
+ ANIM_CMD(HO_OH),
+ ANIM_CMD(CELEBI),
+ ANIM_CMD(OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_C, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_D, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_E, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_F, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_G, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_H, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_I, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_J, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_K, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_L, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_M, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_N, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_O, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_P, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_Q, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_R, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_S, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_T, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_U, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_V, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_W, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_X, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_Y, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_Z, gAnims_OLD_UNOWN_B),
+ ANIM_CMD(TREECKO),
+ ANIM_CMD(GROVYLE),
+ ANIM_CMD(SCEPTILE),
+ ANIM_CMD(TORCHIC),
+ ANIM_CMD(COMBUSKEN),
+ ANIM_CMD(BLAZIKEN),
+ ANIM_CMD(MUDKIP),
+ ANIM_CMD(MARSHTOMP),
+ ANIM_CMD(SWAMPERT),
+ ANIM_CMD(POOCHYENA),
+ ANIM_CMD(MIGHTYENA),
+ ANIM_CMD(ZIGZAGOON),
+ ANIM_CMD(LINOONE),
+ ANIM_CMD(WURMPLE),
+ ANIM_CMD(SILCOON),
+ ANIM_CMD(BEAUTIFLY),
+ ANIM_CMD(CASCOON),
+ ANIM_CMD(DUSTOX),
+ ANIM_CMD(LOTAD),
+ ANIM_CMD(LOMBRE),
+ ANIM_CMD(LUDICOLO),
+ ANIM_CMD(SEEDOT),
+ ANIM_CMD(NUZLEAF),
+ ANIM_CMD(SHIFTRY),
+ ANIM_CMD(NINCADA),
+ ANIM_CMD(NINJASK),
+ ANIM_CMD(SHEDINJA),
+ ANIM_CMD(TAILLOW),
+ ANIM_CMD(SWELLOW),
+ ANIM_CMD(SHROOMISH),
+ ANIM_CMD(BRELOOM),
+ ANIM_CMD(SPINDA),
+ ANIM_CMD(WINGULL),
+ ANIM_CMD(PELIPPER),
+ ANIM_CMD(SURSKIT),
+ ANIM_CMD(MASQUERAIN),
+ ANIM_CMD(WAILMER),
+ ANIM_CMD(WAILORD),
+ ANIM_CMD(SKITTY),
+ ANIM_CMD(DELCATTY),
+ ANIM_CMD(KECLEON),
+ ANIM_CMD(BALTOY),
+ ANIM_CMD(CLAYDOL),
+ ANIM_CMD(NOSEPASS),
+ ANIM_CMD(TORKOAL),
+ ANIM_CMD(SABLEYE),
+ ANIM_CMD(BARBOACH),
+ ANIM_CMD(WHISCASH),
+ ANIM_CMD(LUVDISC),
+ ANIM_CMD(CORPHISH),
+ ANIM_CMD(CRAWDAUNT),
+ ANIM_CMD(FEEBAS),
+ ANIM_CMD(MILOTIC),
+ ANIM_CMD(CARVANHA),
+ ANIM_CMD(SHARPEDO),
+ ANIM_CMD(TRAPINCH),
+ ANIM_CMD(VIBRAVA),
+ ANIM_CMD(FLYGON),
+ ANIM_CMD(MAKUHITA),
+ ANIM_CMD(HARIYAMA),
+ ANIM_CMD(ELECTRIKE),
+ ANIM_CMD(MANECTRIC),
+ ANIM_CMD(NUMEL),
+ ANIM_CMD(CAMERUPT),
+ ANIM_CMD(SPHEAL),
+ ANIM_CMD(SEALEO),
+ ANIM_CMD(WALREIN),
+ ANIM_CMD(CACNEA),
+ ANIM_CMD(CACTURNE),
+ ANIM_CMD(SNORUNT),
+ ANIM_CMD(GLALIE),
+ ANIM_CMD(LUNATONE),
+ ANIM_CMD(SOLROCK),
+ ANIM_CMD(AZURILL),
+ ANIM_CMD(SPOINK),
+ ANIM_CMD(GRUMPIG),
+ ANIM_CMD(PLUSLE),
+ ANIM_CMD(MINUN),
+ ANIM_CMD(MAWILE),
+ ANIM_CMD(MEDITITE),
+ ANIM_CMD(MEDICHAM),
+ ANIM_CMD(SWABLU),
+ ANIM_CMD(ALTARIA),
+ ANIM_CMD(WYNAUT),
+ ANIM_CMD(DUSKULL),
+ ANIM_CMD(DUSCLOPS),
+ ANIM_CMD(ROSELIA),
+ ANIM_CMD(SLAKOTH),
+ ANIM_CMD(VIGOROTH),
+ ANIM_CMD(SLAKING),
+ ANIM_CMD(GULPIN),
+ ANIM_CMD(SWALOT),
+ ANIM_CMD(TROPIUS),
+ ANIM_CMD(WHISMUR),
+ ANIM_CMD(LOUDRED),
+ ANIM_CMD(EXPLOUD),
+ ANIM_CMD(CLAMPERL),
+ ANIM_CMD(HUNTAIL),
+ ANIM_CMD(GOREBYSS),
+ ANIM_CMD(ABSOL),
+ ANIM_CMD(SHUPPET),
+ ANIM_CMD(BANETTE),
+ ANIM_CMD(SEVIPER),
+ ANIM_CMD(ZANGOOSE),
+ ANIM_CMD(RELICANTH),
+ ANIM_CMD(ARON),
+ ANIM_CMD(LAIRON),
+ ANIM_CMD(AGGRON),
+ ANIM_CMD(CASTFORM),
+ ANIM_CMD(VOLBEAT),
+ ANIM_CMD(ILLUMISE),
+ ANIM_CMD(LILEEP),
+ ANIM_CMD(CRADILY),
+ ANIM_CMD(ANORITH),
+ ANIM_CMD(ARMALDO),
+ ANIM_CMD(RALTS),
+ ANIM_CMD(KIRLIA),
+ ANIM_CMD(GARDEVOIR),
+ ANIM_CMD(BAGON),
+ ANIM_CMD(SHELGON),
+ ANIM_CMD(SALAMENCE),
+ ANIM_CMD(BELDUM),
+ ANIM_CMD(METANG),
+ ANIM_CMD(METAGROSS),
+ ANIM_CMD(REGIROCK),
+ ANIM_CMD(REGICE),
+ ANIM_CMD(REGISTEEL),
+ ANIM_CMD(KYOGRE),
+ ANIM_CMD(GROUDON),
+ ANIM_CMD(RAYQUAZA),
+ ANIM_CMD(LATIAS),
+ ANIM_CMD(LATIOS),
+ ANIM_CMD(JIRACHI),
+ ANIM_CMD(DEOXYS),
+ ANIM_CMD(CHIMECHO),
+ ANIM_CMD(EGG),
+ ANIM_CMD(UNOWN_B),
+ ANIM_CMD(UNOWN_C),
+ ANIM_CMD(UNOWN_D),
+ ANIM_CMD(UNOWN_E),
+ ANIM_CMD(UNOWN_F),
+ ANIM_CMD(UNOWN_G),
+ ANIM_CMD(UNOWN_H),
+ ANIM_CMD(UNOWN_I),
+ ANIM_CMD(UNOWN_J),
+ ANIM_CMD(UNOWN_K),
+ ANIM_CMD(UNOWN_L),
+ ANIM_CMD(UNOWN_M),
+ ANIM_CMD(UNOWN_N),
+ ANIM_CMD(UNOWN_O),
+ ANIM_CMD(UNOWN_P),
+ ANIM_CMD(UNOWN_Q),
+ ANIM_CMD(UNOWN_R),
+ ANIM_CMD(UNOWN_S),
+ ANIM_CMD(UNOWN_T),
+ ANIM_CMD(UNOWN_U),
+ ANIM_CMD(UNOWN_V),
+ ANIM_CMD(UNOWN_W),
+ ANIM_CMD(UNOWN_X),
+ ANIM_CMD(UNOWN_Y),
+ ANIM_CMD(UNOWN_Z),
+ ANIM_CMD(UNOWN_EMARK),
+ ANIM_CMD(UNOWN_QMARK),
};
diff --git a/src/data/pokemon_graphics/still_front_pic_table.h b/src/data/pokemon_graphics/still_front_pic_table.h
index a345a3d43..308a872b4 100644
--- a/src/data/pokemon_graphics/still_front_pic_table.h
+++ b/src/data/pokemon_graphics/still_front_pic_table.h
@@ -1,446 +1,448 @@
+#define STILL_FRONT_PIC(species, frontpic) [SPECIES_##species] = {frontpic, 0x800, SPECIES_##species}
+
const struct CompressedSpriteSheet gMonStillFrontPicTable[] =
-{ //.data .size .tag
- gMonStillFrontPic_CircledQuestionMark, 0x800, 0,
- gMonStillFrontPic_Bulbasaur, 0x800, 1,
- gMonStillFrontPic_Ivysaur, 0x800, 2,
- gMonStillFrontPic_Venusaur, 0x800, 3,
- gMonStillFrontPic_Charmander, 0x800, 4,
- gMonStillFrontPic_Charmeleon, 0x800, 5,
- gMonStillFrontPic_Charizard, 0x800, 6,
- gMonStillFrontPic_Squirtle, 0x800, 7,
- gMonStillFrontPic_Wartortle, 0x800, 8,
- gMonStillFrontPic_Blastoise, 0x800, 9,
- gMonStillFrontPic_Caterpie, 0x800, 10,
- gMonStillFrontPic_Metapod, 0x800, 11,
- gMonStillFrontPic_Butterfree, 0x800, 12,
- gMonStillFrontPic_Weedle, 0x800, 13,
- gMonStillFrontPic_Kakuna, 0x800, 14,
- gMonStillFrontPic_Beedrill, 0x800, 15,
- gMonStillFrontPic_Pidgey, 0x800, 16,
- gMonStillFrontPic_Pidgeotto, 0x800, 17,
- gMonStillFrontPic_Pidgeot, 0x800, 18,
- gMonStillFrontPic_Rattata, 0x800, 19,
- gMonStillFrontPic_Raticate, 0x800, 20,
- gMonStillFrontPic_Spearow, 0x800, 21,
- gMonStillFrontPic_Fearow, 0x800, 22,
- gMonStillFrontPic_Ekans, 0x800, 23,
- gMonStillFrontPic_Arbok, 0x800, 24,
- gMonStillFrontPic_Pikachu, 0x800, 25,
- gMonStillFrontPic_Raichu, 0x800, 26,
- gMonStillFrontPic_Sandshrew, 0x800, 27,
- gMonStillFrontPic_Sandslash, 0x800, 28,
- gMonStillFrontPic_NidoranF, 0x800, 29,
- gMonStillFrontPic_Nidorina, 0x800, 30,
- gMonStillFrontPic_Nidoqueen, 0x800, 31,
- gMonStillFrontPic_NidoranM, 0x800, 32,
- gMonStillFrontPic_Nidorino, 0x800, 33,
- gMonStillFrontPic_Nidoking, 0x800, 34,
- gMonStillFrontPic_Clefairy, 0x800, 35,
- gMonStillFrontPic_Clefable, 0x800, 36,
- gMonStillFrontPic_Vulpix, 0x800, 37,
- gMonStillFrontPic_Ninetales, 0x800, 38,
- gMonStillFrontPic_Jigglypuff, 0x800, 39,
- gMonStillFrontPic_Wigglytuff, 0x800, 40,
- gMonStillFrontPic_Zubat, 0x800, 41,
- gMonStillFrontPic_Golbat, 0x800, 42,
- gMonStillFrontPic_Oddish, 0x800, 43,
- gMonStillFrontPic_Gloom, 0x800, 44,
- gMonStillFrontPic_Vileplume, 0x800, 45,
- gMonStillFrontPic_Paras, 0x800, 46,
- gMonStillFrontPic_Parasect, 0x800, 47,
- gMonStillFrontPic_Venonat, 0x800, 48,
- gMonStillFrontPic_Venomoth, 0x800, 49,
- gMonStillFrontPic_Diglett, 0x800, 50,
- gMonStillFrontPic_Dugtrio, 0x800, 51,
- gMonStillFrontPic_Meowth, 0x800, 52,
- gMonStillFrontPic_Persian, 0x800, 53,
- gMonStillFrontPic_Psyduck, 0x800, 54,
- gMonStillFrontPic_Golduck, 0x800, 55,
- gMonStillFrontPic_Mankey, 0x800, 56,
- gMonStillFrontPic_Primeape, 0x800, 57,
- gMonStillFrontPic_Growlithe, 0x800, 58,
- gMonStillFrontPic_Arcanine, 0x800, 59,
- gMonStillFrontPic_Poliwag, 0x800, 60,
- gMonStillFrontPic_Poliwhirl, 0x800, 61,
- gMonStillFrontPic_Poliwrath, 0x800, 62,
- gMonStillFrontPic_Abra, 0x800, 63,
- gMonStillFrontPic_Kadabra, 0x800, 64,
- gMonStillFrontPic_Alakazam, 0x800, 65,
- gMonStillFrontPic_Machop, 0x800, 66,
- gMonStillFrontPic_Machoke, 0x800, 67,
- gMonStillFrontPic_Machamp, 0x800, 68,
- gMonStillFrontPic_Bellsprout, 0x800, 69,
- gMonStillFrontPic_Weepinbell, 0x800, 70,
- gMonStillFrontPic_Victreebel, 0x800, 71,
- gMonStillFrontPic_Tentacool, 0x800, 72,
- gMonStillFrontPic_Tentacruel, 0x800, 73,
- gMonStillFrontPic_Geodude, 0x800, 74,
- gMonStillFrontPic_Graveler, 0x800, 75,
- gMonStillFrontPic_Golem, 0x800, 76,
- gMonStillFrontPic_Ponyta, 0x800, 77,
- gMonStillFrontPic_Rapidash, 0x800, 78,
- gMonStillFrontPic_Slowpoke, 0x800, 79,
- gMonStillFrontPic_Slowbro, 0x800, 80,
- gMonStillFrontPic_Magnemite, 0x800, 81,
- gMonStillFrontPic_Magneton, 0x800, 82,
- gMonStillFrontPic_Farfetchd, 0x800, 83,
- gMonStillFrontPic_Doduo, 0x800, 84,
- gMonStillFrontPic_Dodrio, 0x800, 85,
- gMonStillFrontPic_Seel, 0x800, 86,
- gMonStillFrontPic_Dewgong, 0x800, 87,
- gMonStillFrontPic_Grimer, 0x800, 88,
- gMonStillFrontPic_Muk, 0x800, 89,
- gMonStillFrontPic_Shellder, 0x800, 90,
- gMonStillFrontPic_Cloyster, 0x800, 91,
- gMonStillFrontPic_Gastly, 0x800, 92,
- gMonStillFrontPic_Haunter, 0x800, 93,
- gMonStillFrontPic_Gengar, 0x800, 94,
- gMonStillFrontPic_Onix, 0x800, 95,
- gMonStillFrontPic_Drowzee, 0x800, 96,
- gMonStillFrontPic_Hypno, 0x800, 97,
- gMonStillFrontPic_Krabby, 0x800, 98,
- gMonStillFrontPic_Kingler, 0x800, 99,
- gMonStillFrontPic_Voltorb, 0x800, 100,
- gMonStillFrontPic_Electrode, 0x800, 101,
- gMonStillFrontPic_Exeggcute, 0x800, 102,
- gMonStillFrontPic_Exeggutor, 0x800, 103,
- gMonStillFrontPic_Cubone, 0x800, 104,
- gMonStillFrontPic_Marowak, 0x800, 105,
- gMonStillFrontPic_Hitmonlee, 0x800, 106,
- gMonStillFrontPic_Hitmonchan, 0x800, 107,
- gMonStillFrontPic_Lickitung, 0x800, 108,
- gMonStillFrontPic_Koffing, 0x800, 109,
- gMonStillFrontPic_Weezing, 0x800, 110,
- gMonStillFrontPic_Rhyhorn, 0x800, 111,
- gMonStillFrontPic_Rhydon, 0x800, 112,
- gMonStillFrontPic_Chansey, 0x800, 113,
- gMonStillFrontPic_Tangela, 0x800, 114,
- gMonStillFrontPic_Kangaskhan, 0x800, 115,
- gMonStillFrontPic_Horsea, 0x800, 116,
- gMonStillFrontPic_Seadra, 0x800, 117,
- gMonStillFrontPic_Goldeen, 0x800, 118,
- gMonStillFrontPic_Seaking, 0x800, 119,
- gMonStillFrontPic_Staryu, 0x800, 120,
- gMonStillFrontPic_Starmie, 0x800, 121,
- gMonStillFrontPic_Mrmime, 0x800, 122,
- gMonStillFrontPic_Scyther, 0x800, 123,
- gMonStillFrontPic_Jynx, 0x800, 124,
- gMonStillFrontPic_Electabuzz, 0x800, 125,
- gMonStillFrontPic_Magmar, 0x800, 126,
- gMonStillFrontPic_Pinsir, 0x800, 127,
- gMonStillFrontPic_Tauros, 0x800, 128,
- gMonStillFrontPic_Magikarp, 0x800, 129,
- gMonStillFrontPic_Gyarados, 0x800, 130,
- gMonStillFrontPic_Lapras, 0x800, 131,
- gMonStillFrontPic_Ditto, 0x800, 132,
- gMonStillFrontPic_Eevee, 0x800, 133,
- gMonStillFrontPic_Vaporeon, 0x800, 134,
- gMonStillFrontPic_Jolteon, 0x800, 135,
- gMonStillFrontPic_Flareon, 0x800, 136,
- gMonStillFrontPic_Porygon, 0x800, 137,
- gMonStillFrontPic_Omanyte, 0x800, 138,
- gMonStillFrontPic_Omastar, 0x800, 139,
- gMonStillFrontPic_Kabuto, 0x800, 140,
- gMonStillFrontPic_Kabutops, 0x800, 141,
- gMonStillFrontPic_Aerodactyl, 0x800, 142,
- gMonStillFrontPic_Snorlax, 0x800, 143,
- gMonStillFrontPic_Articuno, 0x800, 144,
- gMonStillFrontPic_Zapdos, 0x800, 145,
- gMonStillFrontPic_Moltres, 0x800, 146,
- gMonStillFrontPic_Dratini, 0x800, 147,
- gMonStillFrontPic_Dragonair, 0x800, 148,
- gMonStillFrontPic_Dragonite, 0x800, 149,
- gMonStillFrontPic_Mewtwo, 0x800, 150,
- gMonStillFrontPic_Mew, 0x800, 151,
+{
+ STILL_FRONT_PIC(NONE, gMonStillFrontPic_CircledQuestionMark),
+ STILL_FRONT_PIC(BULBASAUR, gMonStillFrontPic_Bulbasaur),
+ STILL_FRONT_PIC(IVYSAUR, gMonStillFrontPic_Ivysaur),
+ STILL_FRONT_PIC(VENUSAUR, gMonStillFrontPic_Venusaur),
+ STILL_FRONT_PIC(CHARMANDER, gMonStillFrontPic_Charmander),
+ STILL_FRONT_PIC(CHARMELEON, gMonStillFrontPic_Charmeleon),
+ STILL_FRONT_PIC(CHARIZARD, gMonStillFrontPic_Charizard),
+ STILL_FRONT_PIC(SQUIRTLE, gMonStillFrontPic_Squirtle),
+ STILL_FRONT_PIC(WARTORTLE, gMonStillFrontPic_Wartortle),
+ STILL_FRONT_PIC(BLASTOISE, gMonStillFrontPic_Blastoise),
+ STILL_FRONT_PIC(CATERPIE, gMonStillFrontPic_Caterpie),
+ STILL_FRONT_PIC(METAPOD, gMonStillFrontPic_Metapod),
+ STILL_FRONT_PIC(BUTTERFREE, gMonStillFrontPic_Butterfree),
+ STILL_FRONT_PIC(WEEDLE, gMonStillFrontPic_Weedle),
+ STILL_FRONT_PIC(KAKUNA, gMonStillFrontPic_Kakuna),
+ STILL_FRONT_PIC(BEEDRILL, gMonStillFrontPic_Beedrill),
+ STILL_FRONT_PIC(PIDGEY, gMonStillFrontPic_Pidgey),
+ STILL_FRONT_PIC(PIDGEOTTO, gMonStillFrontPic_Pidgeotto),
+ STILL_FRONT_PIC(PIDGEOT, gMonStillFrontPic_Pidgeot),
+ STILL_FRONT_PIC(RATTATA, gMonStillFrontPic_Rattata),
+ STILL_FRONT_PIC(RATICATE, gMonStillFrontPic_Raticate),
+ STILL_FRONT_PIC(SPEAROW, gMonStillFrontPic_Spearow),
+ STILL_FRONT_PIC(FEAROW, gMonStillFrontPic_Fearow),
+ STILL_FRONT_PIC(EKANS, gMonStillFrontPic_Ekans),
+ STILL_FRONT_PIC(ARBOK, gMonStillFrontPic_Arbok),
+ STILL_FRONT_PIC(PIKACHU, gMonStillFrontPic_Pikachu),
+ STILL_FRONT_PIC(RAICHU, gMonStillFrontPic_Raichu),
+ STILL_FRONT_PIC(SANDSHREW, gMonStillFrontPic_Sandshrew),
+ STILL_FRONT_PIC(SANDSLASH, gMonStillFrontPic_Sandslash),
+ STILL_FRONT_PIC(NIDORAN_F, gMonStillFrontPic_NidoranF),
+ STILL_FRONT_PIC(NIDORINA, gMonStillFrontPic_Nidorina),
+ STILL_FRONT_PIC(NIDOQUEEN, gMonStillFrontPic_Nidoqueen),
+ STILL_FRONT_PIC(NIDORAN_M, gMonStillFrontPic_NidoranM),
+ STILL_FRONT_PIC(NIDORINO, gMonStillFrontPic_Nidorino),
+ STILL_FRONT_PIC(NIDOKING, gMonStillFrontPic_Nidoking),
+ STILL_FRONT_PIC(CLEFAIRY, gMonStillFrontPic_Clefairy),
+ STILL_FRONT_PIC(CLEFABLE, gMonStillFrontPic_Clefable),
+ STILL_FRONT_PIC(VULPIX, gMonStillFrontPic_Vulpix),
+ STILL_FRONT_PIC(NINETALES, gMonStillFrontPic_Ninetales),
+ STILL_FRONT_PIC(JIGGLYPUFF, gMonStillFrontPic_Jigglypuff),
+ STILL_FRONT_PIC(WIGGLYTUFF, gMonStillFrontPic_Wigglytuff),
+ STILL_FRONT_PIC(ZUBAT, gMonStillFrontPic_Zubat),
+ STILL_FRONT_PIC(GOLBAT, gMonStillFrontPic_Golbat),
+ STILL_FRONT_PIC(ODDISH, gMonStillFrontPic_Oddish),
+ STILL_FRONT_PIC(GLOOM, gMonStillFrontPic_Gloom),
+ STILL_FRONT_PIC(VILEPLUME, gMonStillFrontPic_Vileplume),
+ STILL_FRONT_PIC(PARAS, gMonStillFrontPic_Paras),
+ STILL_FRONT_PIC(PARASECT, gMonStillFrontPic_Parasect),
+ STILL_FRONT_PIC(VENONAT, gMonStillFrontPic_Venonat),
+ STILL_FRONT_PIC(VENOMOTH, gMonStillFrontPic_Venomoth),
+ STILL_FRONT_PIC(DIGLETT, gMonStillFrontPic_Diglett),
+ STILL_FRONT_PIC(DUGTRIO, gMonStillFrontPic_Dugtrio),
+ STILL_FRONT_PIC(MEOWTH, gMonStillFrontPic_Meowth),
+ STILL_FRONT_PIC(PERSIAN, gMonStillFrontPic_Persian),
+ STILL_FRONT_PIC(PSYDUCK, gMonStillFrontPic_Psyduck),
+ STILL_FRONT_PIC(GOLDUCK, gMonStillFrontPic_Golduck),
+ STILL_FRONT_PIC(MANKEY, gMonStillFrontPic_Mankey),
+ STILL_FRONT_PIC(PRIMEAPE, gMonStillFrontPic_Primeape),
+ STILL_FRONT_PIC(GROWLITHE, gMonStillFrontPic_Growlithe),
+ STILL_FRONT_PIC(ARCANINE, gMonStillFrontPic_Arcanine),
+ STILL_FRONT_PIC(POLIWAG, gMonStillFrontPic_Poliwag),
+ STILL_FRONT_PIC(POLIWHIRL, gMonStillFrontPic_Poliwhirl),
+ STILL_FRONT_PIC(POLIWRATH, gMonStillFrontPic_Poliwrath),
+ STILL_FRONT_PIC(ABRA, gMonStillFrontPic_Abra),
+ STILL_FRONT_PIC(KADABRA, gMonStillFrontPic_Kadabra),
+ STILL_FRONT_PIC(ALAKAZAM, gMonStillFrontPic_Alakazam),
+ STILL_FRONT_PIC(MACHOP, gMonStillFrontPic_Machop),
+ STILL_FRONT_PIC(MACHOKE, gMonStillFrontPic_Machoke),
+ STILL_FRONT_PIC(MACHAMP, gMonStillFrontPic_Machamp),
+ STILL_FRONT_PIC(BELLSPROUT, gMonStillFrontPic_Bellsprout),
+ STILL_FRONT_PIC(WEEPINBELL, gMonStillFrontPic_Weepinbell),
+ STILL_FRONT_PIC(VICTREEBEL, gMonStillFrontPic_Victreebel),
+ STILL_FRONT_PIC(TENTACOOL, gMonStillFrontPic_Tentacool),
+ STILL_FRONT_PIC(TENTACRUEL, gMonStillFrontPic_Tentacruel),
+ STILL_FRONT_PIC(GEODUDE, gMonStillFrontPic_Geodude),
+ STILL_FRONT_PIC(GRAVELER, gMonStillFrontPic_Graveler),
+ STILL_FRONT_PIC(GOLEM, gMonStillFrontPic_Golem),
+ STILL_FRONT_PIC(PONYTA, gMonStillFrontPic_Ponyta),
+ STILL_FRONT_PIC(RAPIDASH, gMonStillFrontPic_Rapidash),
+ STILL_FRONT_PIC(SLOWPOKE, gMonStillFrontPic_Slowpoke),
+ STILL_FRONT_PIC(SLOWBRO, gMonStillFrontPic_Slowbro),
+ STILL_FRONT_PIC(MAGNEMITE, gMonStillFrontPic_Magnemite),
+ STILL_FRONT_PIC(MAGNETON, gMonStillFrontPic_Magneton),
+ STILL_FRONT_PIC(FARFETCHD, gMonStillFrontPic_Farfetchd),
+ STILL_FRONT_PIC(DODUO, gMonStillFrontPic_Doduo),
+ STILL_FRONT_PIC(DODRIO, gMonStillFrontPic_Dodrio),
+ STILL_FRONT_PIC(SEEL, gMonStillFrontPic_Seel),
+ STILL_FRONT_PIC(DEWGONG, gMonStillFrontPic_Dewgong),
+ STILL_FRONT_PIC(GRIMER, gMonStillFrontPic_Grimer),
+ STILL_FRONT_PIC(MUK, gMonStillFrontPic_Muk),
+ STILL_FRONT_PIC(SHELLDER, gMonStillFrontPic_Shellder),
+ STILL_FRONT_PIC(CLOYSTER, gMonStillFrontPic_Cloyster),
+ STILL_FRONT_PIC(GASTLY, gMonStillFrontPic_Gastly),
+ STILL_FRONT_PIC(HAUNTER, gMonStillFrontPic_Haunter),
+ STILL_FRONT_PIC(GENGAR, gMonStillFrontPic_Gengar),
+ STILL_FRONT_PIC(ONIX, gMonStillFrontPic_Onix),
+ STILL_FRONT_PIC(DROWZEE, gMonStillFrontPic_Drowzee),
+ STILL_FRONT_PIC(HYPNO, gMonStillFrontPic_Hypno),
+ STILL_FRONT_PIC(KRABBY, gMonStillFrontPic_Krabby),
+ STILL_FRONT_PIC(KINGLER, gMonStillFrontPic_Kingler),
+ STILL_FRONT_PIC(VOLTORB, gMonStillFrontPic_Voltorb),
+ STILL_FRONT_PIC(ELECTRODE, gMonStillFrontPic_Electrode),
+ STILL_FRONT_PIC(EXEGGCUTE, gMonStillFrontPic_Exeggcute),
+ STILL_FRONT_PIC(EXEGGUTOR, gMonStillFrontPic_Exeggutor),
+ STILL_FRONT_PIC(CUBONE, gMonStillFrontPic_Cubone),
+ STILL_FRONT_PIC(MAROWAK, gMonStillFrontPic_Marowak),
+ STILL_FRONT_PIC(HITMONLEE, gMonStillFrontPic_Hitmonlee),
+ STILL_FRONT_PIC(HITMONCHAN, gMonStillFrontPic_Hitmonchan),
+ STILL_FRONT_PIC(LICKITUNG, gMonStillFrontPic_Lickitung),
+ STILL_FRONT_PIC(KOFFING, gMonStillFrontPic_Koffing),
+ STILL_FRONT_PIC(WEEZING, gMonStillFrontPic_Weezing),
+ STILL_FRONT_PIC(RHYHORN, gMonStillFrontPic_Rhyhorn),
+ STILL_FRONT_PIC(RHYDON, gMonStillFrontPic_Rhydon),
+ STILL_FRONT_PIC(CHANSEY, gMonStillFrontPic_Chansey),
+ STILL_FRONT_PIC(TANGELA, gMonStillFrontPic_Tangela),
+ STILL_FRONT_PIC(KANGASKHAN, gMonStillFrontPic_Kangaskhan),
+ STILL_FRONT_PIC(HORSEA, gMonStillFrontPic_Horsea),
+ STILL_FRONT_PIC(SEADRA, gMonStillFrontPic_Seadra),
+ STILL_FRONT_PIC(GOLDEEN, gMonStillFrontPic_Goldeen),
+ STILL_FRONT_PIC(SEAKING, gMonStillFrontPic_Seaking),
+ STILL_FRONT_PIC(STARYU, gMonStillFrontPic_Staryu),
+ STILL_FRONT_PIC(STARMIE, gMonStillFrontPic_Starmie),
+ STILL_FRONT_PIC(MR_MIME, gMonStillFrontPic_Mrmime),
+ STILL_FRONT_PIC(SCYTHER, gMonStillFrontPic_Scyther),
+ STILL_FRONT_PIC(JYNX, gMonStillFrontPic_Jynx),
+ STILL_FRONT_PIC(ELECTABUZZ, gMonStillFrontPic_Electabuzz),
+ STILL_FRONT_PIC(MAGMAR, gMonStillFrontPic_Magmar),
+ STILL_FRONT_PIC(PINSIR, gMonStillFrontPic_Pinsir),
+ STILL_FRONT_PIC(TAUROS, gMonStillFrontPic_Tauros),
+ STILL_FRONT_PIC(MAGIKARP, gMonStillFrontPic_Magikarp),
+ STILL_FRONT_PIC(GYARADOS, gMonStillFrontPic_Gyarados),
+ STILL_FRONT_PIC(LAPRAS, gMonStillFrontPic_Lapras),
+ STILL_FRONT_PIC(DITTO, gMonStillFrontPic_Ditto),
+ STILL_FRONT_PIC(EEVEE, gMonStillFrontPic_Eevee),
+ STILL_FRONT_PIC(VAPOREON, gMonStillFrontPic_Vaporeon),
+ STILL_FRONT_PIC(JOLTEON, gMonStillFrontPic_Jolteon),
+ STILL_FRONT_PIC(FLAREON, gMonStillFrontPic_Flareon),
+ STILL_FRONT_PIC(PORYGON, gMonStillFrontPic_Porygon),
+ STILL_FRONT_PIC(OMANYTE, gMonStillFrontPic_Omanyte),
+ STILL_FRONT_PIC(OMASTAR, gMonStillFrontPic_Omastar),
+ STILL_FRONT_PIC(KABUTO, gMonStillFrontPic_Kabuto),
+ STILL_FRONT_PIC(KABUTOPS, gMonStillFrontPic_Kabutops),
+ STILL_FRONT_PIC(AERODACTYL, gMonStillFrontPic_Aerodactyl),
+ STILL_FRONT_PIC(SNORLAX, gMonStillFrontPic_Snorlax),
+ STILL_FRONT_PIC(ARTICUNO, gMonStillFrontPic_Articuno),
+ STILL_FRONT_PIC(ZAPDOS, gMonStillFrontPic_Zapdos),
+ STILL_FRONT_PIC(MOLTRES, gMonStillFrontPic_Moltres),
+ STILL_FRONT_PIC(DRATINI, gMonStillFrontPic_Dratini),
+ STILL_FRONT_PIC(DRAGONAIR, gMonStillFrontPic_Dragonair),
+ STILL_FRONT_PIC(DRAGONITE, gMonStillFrontPic_Dragonite),
+ STILL_FRONT_PIC(MEWTWO, gMonStillFrontPic_Mewtwo),
+ STILL_FRONT_PIC(MEW, gMonStillFrontPic_Mew),
// Gen II
- gMonStillFrontPic_Chikorita, 0x800, 152,
- gMonStillFrontPic_Bayleef, 0x800, 153,
- gMonStillFrontPic_Meganium, 0x800, 154,
- gMonStillFrontPic_Cyndaquil, 0x800, 155,
- gMonStillFrontPic_Quilava, 0x800, 156,
- gMonStillFrontPic_Typhlosion, 0x800, 157,
- gMonStillFrontPic_Totodile, 0x800, 158,
- gMonStillFrontPic_Croconaw, 0x800, 159,
- gMonStillFrontPic_Feraligatr, 0x800, 160,
- gMonStillFrontPic_Sentret, 0x800, 161,
- gMonStillFrontPic_Furret, 0x800, 162,
- gMonStillFrontPic_Hoothoot, 0x800, 163,
- gMonStillFrontPic_Noctowl, 0x800, 164,
- gMonStillFrontPic_Ledyba, 0x800, 165,
- gMonStillFrontPic_Ledian, 0x800, 166,
- gMonStillFrontPic_Spinarak, 0x800, 167,
- gMonStillFrontPic_Ariados, 0x800, 168,
- gMonStillFrontPic_Crobat, 0x800, 169,
- gMonStillFrontPic_Chinchou, 0x800, 170,
- gMonStillFrontPic_Lanturn, 0x800, 171,
- gMonStillFrontPic_Pichu, 0x800, 172,
- gMonStillFrontPic_Cleffa, 0x800, 173,
- gMonStillFrontPic_Igglybuff, 0x800, 174,
- gMonStillFrontPic_Togepi, 0x800, 175,
- gMonStillFrontPic_Togetic, 0x800, 176,
- gMonStillFrontPic_Natu, 0x800, 177,
- gMonStillFrontPic_Xatu, 0x800, 178,
- gMonStillFrontPic_Mareep, 0x800, 179,
- gMonStillFrontPic_Flaaffy, 0x800, 180,
- gMonStillFrontPic_Ampharos, 0x800, 181,
- gMonStillFrontPic_Bellossom, 0x800, 182,
- gMonStillFrontPic_Marill, 0x800, 183,
- gMonStillFrontPic_Azumarill, 0x800, 184,
- gMonStillFrontPic_Sudowoodo, 0x800, 185,
- gMonStillFrontPic_Politoed, 0x800, 186,
- gMonStillFrontPic_Hoppip, 0x800, 187,
- gMonStillFrontPic_Skiploom, 0x800, 188,
- gMonStillFrontPic_Jumpluff, 0x800, 189,
- gMonStillFrontPic_Aipom, 0x800, 190,
- gMonStillFrontPic_Sunkern, 0x800, 191,
- gMonStillFrontPic_Sunflora, 0x800, 192,
- gMonStillFrontPic_Yanma, 0x800, 193,
- gMonStillFrontPic_Wooper, 0x800, 194,
- gMonStillFrontPic_Quagsire, 0x800, 195,
- gMonStillFrontPic_Espeon, 0x800, 196,
- gMonStillFrontPic_Umbreon, 0x800, 197,
- gMonStillFrontPic_Murkrow, 0x800, 198,
- gMonStillFrontPic_Slowking, 0x800, 199,
- gMonStillFrontPic_Misdreavus, 0x800, 200,
- gMonStillFrontPic_UnownA, 0x800, 201,
- gMonStillFrontPic_Wobbuffet, 0x800, 202,
- gMonStillFrontPic_Girafarig, 0x800, 203,
- gMonStillFrontPic_Pineco, 0x800, 204,
- gMonStillFrontPic_Forretress, 0x800, 205,
- gMonStillFrontPic_Dunsparce, 0x800, 206,
- gMonStillFrontPic_Gligar, 0x800, 207,
- gMonStillFrontPic_Steelix, 0x800, 208,
- gMonStillFrontPic_Snubbull, 0x800, 209,
- gMonStillFrontPic_Granbull, 0x800, 210,
- gMonStillFrontPic_Qwilfish, 0x800, 211,
- gMonStillFrontPic_Scizor, 0x800, 212,
- gMonStillFrontPic_Shuckle, 0x800, 213,
- gMonStillFrontPic_Heracross, 0x800, 214,
- gMonStillFrontPic_Sneasel, 0x800, 215,
- gMonStillFrontPic_Teddiursa, 0x800, 216,
- gMonStillFrontPic_Ursaring, 0x800, 217,
- gMonStillFrontPic_Slugma, 0x800, 218,
- gMonStillFrontPic_Magcargo, 0x800, 219,
- gMonStillFrontPic_Swinub, 0x800, 220,
- gMonStillFrontPic_Piloswine, 0x800, 221,
- gMonStillFrontPic_Corsola, 0x800, 222,
- gMonStillFrontPic_Remoraid, 0x800, 223,
- gMonStillFrontPic_Octillery, 0x800, 224,
- gMonStillFrontPic_Delibird, 0x800, 225,
- gMonStillFrontPic_Mantine, 0x800, 226,
- gMonStillFrontPic_Skarmory, 0x800, 227,
- gMonStillFrontPic_Houndour, 0x800, 228,
- gMonStillFrontPic_Houndoom, 0x800, 229,
- gMonStillFrontPic_Kingdra, 0x800, 230,
- gMonStillFrontPic_Phanpy, 0x800, 231,
- gMonStillFrontPic_Donphan, 0x800, 232,
- gMonStillFrontPic_Porygon2, 0x800, 233,
- gMonStillFrontPic_Stantler, 0x800, 234,
- gMonStillFrontPic_Smeargle, 0x800, 235,
- gMonStillFrontPic_Tyrogue, 0x800, 236,
- gMonStillFrontPic_Hitmontop, 0x800, 237,
- gMonStillFrontPic_Smoochum, 0x800, 238,
- gMonStillFrontPic_Elekid, 0x800, 239,
- gMonStillFrontPic_Magby, 0x800, 240,
- gMonStillFrontPic_Miltank, 0x800, 241,
- gMonStillFrontPic_Blissey, 0x800, 242,
- gMonStillFrontPic_Raikou, 0x800, 243,
- gMonStillFrontPic_Entei, 0x800, 244,
- gMonStillFrontPic_Suicune, 0x800, 245,
- gMonStillFrontPic_Larvitar, 0x800, 246,
- gMonStillFrontPic_Pupitar, 0x800, 247,
- gMonStillFrontPic_Tyranitar, 0x800, 248,
- gMonStillFrontPic_Lugia, 0x800, 249,
- gMonStillFrontPic_HoOh, 0x800, 250,
- gMonStillFrontPic_Celebi, 0x800, 251,
+ STILL_FRONT_PIC(CHIKORITA, gMonStillFrontPic_Chikorita),
+ STILL_FRONT_PIC(BAYLEEF, gMonStillFrontPic_Bayleef),
+ STILL_FRONT_PIC(MEGANIUM, gMonStillFrontPic_Meganium),
+ STILL_FRONT_PIC(CYNDAQUIL, gMonStillFrontPic_Cyndaquil),
+ STILL_FRONT_PIC(QUILAVA, gMonStillFrontPic_Quilava),
+ STILL_FRONT_PIC(TYPHLOSION, gMonStillFrontPic_Typhlosion),
+ STILL_FRONT_PIC(TOTODILE, gMonStillFrontPic_Totodile),
+ STILL_FRONT_PIC(CROCONAW, gMonStillFrontPic_Croconaw),
+ STILL_FRONT_PIC(FERALIGATR, gMonStillFrontPic_Feraligatr),
+ STILL_FRONT_PIC(SENTRET, gMonStillFrontPic_Sentret),
+ STILL_FRONT_PIC(FURRET, gMonStillFrontPic_Furret),
+ STILL_FRONT_PIC(HOOTHOOT, gMonStillFrontPic_Hoothoot),
+ STILL_FRONT_PIC(NOCTOWL, gMonStillFrontPic_Noctowl),
+ STILL_FRONT_PIC(LEDYBA, gMonStillFrontPic_Ledyba),
+ STILL_FRONT_PIC(LEDIAN, gMonStillFrontPic_Ledian),
+ STILL_FRONT_PIC(SPINARAK, gMonStillFrontPic_Spinarak),
+ STILL_FRONT_PIC(ARIADOS, gMonStillFrontPic_Ariados),
+ STILL_FRONT_PIC(CROBAT, gMonStillFrontPic_Crobat),
+ STILL_FRONT_PIC(CHINCHOU, gMonStillFrontPic_Chinchou),
+ STILL_FRONT_PIC(LANTURN, gMonStillFrontPic_Lanturn),
+ STILL_FRONT_PIC(PICHU, gMonStillFrontPic_Pichu),
+ STILL_FRONT_PIC(CLEFFA, gMonStillFrontPic_Cleffa),
+ STILL_FRONT_PIC(IGGLYBUFF, gMonStillFrontPic_Igglybuff),
+ STILL_FRONT_PIC(TOGEPI, gMonStillFrontPic_Togepi),
+ STILL_FRONT_PIC(TOGETIC, gMonStillFrontPic_Togetic),
+ STILL_FRONT_PIC(NATU, gMonStillFrontPic_Natu),
+ STILL_FRONT_PIC(XATU, gMonStillFrontPic_Xatu),
+ STILL_FRONT_PIC(MAREEP, gMonStillFrontPic_Mareep),
+ STILL_FRONT_PIC(FLAAFFY, gMonStillFrontPic_Flaaffy),
+ STILL_FRONT_PIC(AMPHAROS, gMonStillFrontPic_Ampharos),
+ STILL_FRONT_PIC(BELLOSSOM, gMonStillFrontPic_Bellossom),
+ STILL_FRONT_PIC(MARILL, gMonStillFrontPic_Marill),
+ STILL_FRONT_PIC(AZUMARILL, gMonStillFrontPic_Azumarill),
+ STILL_FRONT_PIC(SUDOWOODO, gMonStillFrontPic_Sudowoodo),
+ STILL_FRONT_PIC(POLITOED, gMonStillFrontPic_Politoed),
+ STILL_FRONT_PIC(HOPPIP, gMonStillFrontPic_Hoppip),
+ STILL_FRONT_PIC(SKIPLOOM, gMonStillFrontPic_Skiploom),
+ STILL_FRONT_PIC(JUMPLUFF, gMonStillFrontPic_Jumpluff),
+ STILL_FRONT_PIC(AIPOM, gMonStillFrontPic_Aipom),
+ STILL_FRONT_PIC(SUNKERN, gMonStillFrontPic_Sunkern),
+ STILL_FRONT_PIC(SUNFLORA, gMonStillFrontPic_Sunflora),
+ STILL_FRONT_PIC(YANMA, gMonStillFrontPic_Yanma),
+ STILL_FRONT_PIC(WOOPER, gMonStillFrontPic_Wooper),
+ STILL_FRONT_PIC(QUAGSIRE, gMonStillFrontPic_Quagsire),
+ STILL_FRONT_PIC(ESPEON, gMonStillFrontPic_Espeon),
+ STILL_FRONT_PIC(UMBREON, gMonStillFrontPic_Umbreon),
+ STILL_FRONT_PIC(MURKROW, gMonStillFrontPic_Murkrow),
+ STILL_FRONT_PIC(SLOWKING, gMonStillFrontPic_Slowking),
+ STILL_FRONT_PIC(MISDREAVUS, gMonStillFrontPic_Misdreavus),
+ STILL_FRONT_PIC(UNOWN, gMonStillFrontPic_UnownA),
+ STILL_FRONT_PIC(WOBBUFFET, gMonStillFrontPic_Wobbuffet),
+ STILL_FRONT_PIC(GIRAFARIG, gMonStillFrontPic_Girafarig),
+ STILL_FRONT_PIC(PINECO, gMonStillFrontPic_Pineco),
+ STILL_FRONT_PIC(FORRETRESS, gMonStillFrontPic_Forretress),
+ STILL_FRONT_PIC(DUNSPARCE, gMonStillFrontPic_Dunsparce),
+ STILL_FRONT_PIC(GLIGAR, gMonStillFrontPic_Gligar),
+ STILL_FRONT_PIC(STEELIX, gMonStillFrontPic_Steelix),
+ STILL_FRONT_PIC(SNUBBULL, gMonStillFrontPic_Snubbull),
+ STILL_FRONT_PIC(GRANBULL, gMonStillFrontPic_Granbull),
+ STILL_FRONT_PIC(QWILFISH, gMonStillFrontPic_Qwilfish),
+ STILL_FRONT_PIC(SCIZOR, gMonStillFrontPic_Scizor),
+ STILL_FRONT_PIC(SHUCKLE, gMonStillFrontPic_Shuckle),
+ STILL_FRONT_PIC(HERACROSS, gMonStillFrontPic_Heracross),
+ STILL_FRONT_PIC(SNEASEL, gMonStillFrontPic_Sneasel),
+ STILL_FRONT_PIC(TEDDIURSA, gMonStillFrontPic_Teddiursa),
+ STILL_FRONT_PIC(URSARING, gMonStillFrontPic_Ursaring),
+ STILL_FRONT_PIC(SLUGMA, gMonStillFrontPic_Slugma),
+ STILL_FRONT_PIC(MAGCARGO, gMonStillFrontPic_Magcargo),
+ STILL_FRONT_PIC(SWINUB, gMonStillFrontPic_Swinub),
+ STILL_FRONT_PIC(PILOSWINE, gMonStillFrontPic_Piloswine),
+ STILL_FRONT_PIC(CORSOLA, gMonStillFrontPic_Corsola),
+ STILL_FRONT_PIC(REMORAID, gMonStillFrontPic_Remoraid),
+ STILL_FRONT_PIC(OCTILLERY, gMonStillFrontPic_Octillery),
+ STILL_FRONT_PIC(DELIBIRD, gMonStillFrontPic_Delibird),
+ STILL_FRONT_PIC(MANTINE, gMonStillFrontPic_Mantine),
+ STILL_FRONT_PIC(SKARMORY, gMonStillFrontPic_Skarmory),
+ STILL_FRONT_PIC(HOUNDOUR, gMonStillFrontPic_Houndour),
+ STILL_FRONT_PIC(HOUNDOOM, gMonStillFrontPic_Houndoom),
+ STILL_FRONT_PIC(KINGDRA, gMonStillFrontPic_Kingdra),
+ STILL_FRONT_PIC(PHANPY, gMonStillFrontPic_Phanpy),
+ STILL_FRONT_PIC(DONPHAN, gMonStillFrontPic_Donphan),
+ STILL_FRONT_PIC(PORYGON2, gMonStillFrontPic_Porygon2),
+ STILL_FRONT_PIC(STANTLER, gMonStillFrontPic_Stantler),
+ STILL_FRONT_PIC(SMEARGLE, gMonStillFrontPic_Smeargle),
+ STILL_FRONT_PIC(TYROGUE, gMonStillFrontPic_Tyrogue),
+ STILL_FRONT_PIC(HITMONTOP, gMonStillFrontPic_Hitmontop),
+ STILL_FRONT_PIC(SMOOCHUM, gMonStillFrontPic_Smoochum),
+ STILL_FRONT_PIC(ELEKID, gMonStillFrontPic_Elekid),
+ STILL_FRONT_PIC(MAGBY, gMonStillFrontPic_Magby),
+ STILL_FRONT_PIC(MILTANK, gMonStillFrontPic_Miltank),
+ STILL_FRONT_PIC(BLISSEY, gMonStillFrontPic_Blissey),
+ STILL_FRONT_PIC(RAIKOU, gMonStillFrontPic_Raikou),
+ STILL_FRONT_PIC(ENTEI, gMonStillFrontPic_Entei),
+ STILL_FRONT_PIC(SUICUNE, gMonStillFrontPic_Suicune),
+ STILL_FRONT_PIC(LARVITAR, gMonStillFrontPic_Larvitar),
+ STILL_FRONT_PIC(PUPITAR, gMonStillFrontPic_Pupitar),
+ STILL_FRONT_PIC(TYRANITAR, gMonStillFrontPic_Tyranitar),
+ STILL_FRONT_PIC(LUGIA, gMonStillFrontPic_Lugia),
+ STILL_FRONT_PIC(HO_OH, gMonStillFrontPic_HoOh),
+ STILL_FRONT_PIC(CELEBI, gMonStillFrontPic_Celebi),
// Empty slots
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 252,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 253,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 254,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 255,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 256,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 257,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 258,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 259,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 260,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 261,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 262,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 263,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 264,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 265,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 266,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 267,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 268,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 269,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 270,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 271,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 272,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 273,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 274,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 275,
- gMonStillFrontPic_DoubleQuestionMark, 0x800, 276,
+ STILL_FRONT_PIC(OLD_UNOWN_B, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_C, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_D, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_E, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_F, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_G, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_H, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_I, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_J, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_K, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_L, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_M, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_N, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_O, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_P, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_Q, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_R, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_S, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_T, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_U, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_V, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_W, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_X, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_Y, gMonStillFrontPic_DoubleQuestionMark),
+ STILL_FRONT_PIC(OLD_UNOWN_Z, gMonStillFrontPic_DoubleQuestionMark),
// Gen III
- gMonStillFrontPic_Treecko, 0x800, 277,
- gMonStillFrontPic_Grovyle, 0x800, 278,
- gMonStillFrontPic_Sceptile, 0x800, 279,
- gMonStillFrontPic_Torchic, 0x800, 280,
- gMonStillFrontPic_Combusken, 0x800, 281,
- gMonStillFrontPic_Blaziken, 0x800, 282,
- gMonStillFrontPic_Mudkip, 0x800, 283,
- gMonStillFrontPic_Marshtomp, 0x800, 284,
- gMonStillFrontPic_Swampert, 0x800, 285,
- gMonStillFrontPic_Poochyena, 0x800, 286,
- gMonStillFrontPic_Mightyena, 0x800, 287,
- gMonStillFrontPic_Zigzagoon, 0x800, 288,
- gMonStillFrontPic_Linoone, 0x800, 289,
- gMonStillFrontPic_Wurmple, 0x800, 290,
- gMonStillFrontPic_Silcoon, 0x800, 291,
- gMonStillFrontPic_Beautifly, 0x800, 292,
- gMonStillFrontPic_Cascoon, 0x800, 293,
- gMonStillFrontPic_Dustox, 0x800, 294,
- gMonStillFrontPic_Lotad, 0x800, 295,
- gMonStillFrontPic_Lombre, 0x800, 296,
- gMonStillFrontPic_Ludicolo, 0x800, 297,
- gMonStillFrontPic_Seedot, 0x800, 298,
- gMonStillFrontPic_Nuzleaf, 0x800, 299,
- gMonStillFrontPic_Shiftry, 0x800, 300,
- gMonStillFrontPic_Nincada, 0x800, 301,
- gMonStillFrontPic_Ninjask, 0x800, 302,
- gMonStillFrontPic_Shedinja, 0x800, 303,
- gMonStillFrontPic_Taillow, 0x800, 304,
- gMonStillFrontPic_Swellow, 0x800, 305,
- gMonStillFrontPic_Shroomish, 0x800, 306,
- gMonStillFrontPic_Breloom, 0x800, 307,
- gMonStillFrontPic_Spinda, 0x800, 308,
- gMonStillFrontPic_Wingull, 0x800, 309,
- gMonStillFrontPic_Pelipper, 0x800, 310,
- gMonStillFrontPic_Surskit, 0x800, 311,
- gMonStillFrontPic_Masquerain, 0x800, 312,
- gMonStillFrontPic_Wailmer, 0x800, 313,
- gMonStillFrontPic_Wailord, 0x800, 314,
- gMonStillFrontPic_Skitty, 0x800, 315,
- gMonStillFrontPic_Delcatty, 0x800, 316,
- gMonStillFrontPic_Kecleon, 0x800, 317,
- gMonStillFrontPic_Baltoy, 0x800, 318,
- gMonStillFrontPic_Claydol, 0x800, 319,
- gMonStillFrontPic_Nosepass, 0x800, 320,
- gMonStillFrontPic_Torkoal, 0x800, 321,
- gMonStillFrontPic_Sableye, 0x800, 322,
- gMonStillFrontPic_Barboach, 0x800, 323,
- gMonStillFrontPic_Whiscash, 0x800, 324,
- gMonStillFrontPic_Luvdisc, 0x800, 325,
- gMonStillFrontPic_Corphish, 0x800, 326,
- gMonStillFrontPic_Crawdaunt, 0x800, 327,
- gMonStillFrontPic_Feebas, 0x800, 328,
- gMonStillFrontPic_Milotic, 0x800, 329,
- gMonStillFrontPic_Carvanha, 0x800, 330,
- gMonStillFrontPic_Sharpedo, 0x800, 331,
- gMonStillFrontPic_Trapinch, 0x800, 332,
- gMonStillFrontPic_Vibrava, 0x800, 333,
- gMonStillFrontPic_Flygon, 0x800, 334,
- gMonStillFrontPic_Makuhita, 0x800, 335,
- gMonStillFrontPic_Hariyama, 0x800, 336,
- gMonStillFrontPic_Electrike, 0x800, 337,
- gMonStillFrontPic_Manectric, 0x800, 338,
- gMonStillFrontPic_Numel, 0x800, 339,
- gMonStillFrontPic_Camerupt, 0x800, 340,
- gMonStillFrontPic_Spheal, 0x800, 341,
- gMonStillFrontPic_Sealeo, 0x800, 342,
- gMonStillFrontPic_Walrein, 0x800, 343,
- gMonStillFrontPic_Cacnea, 0x800, 344,
- gMonStillFrontPic_Cacturne, 0x800, 345,
- gMonStillFrontPic_Snorunt, 0x800, 346,
- gMonStillFrontPic_Glalie, 0x800, 347,
- gMonStillFrontPic_Lunatone, 0x800, 348,
- gMonStillFrontPic_Solrock, 0x800, 349,
- gMonStillFrontPic_Azurill, 0x800, 350,
- gMonStillFrontPic_Spoink, 0x800, 351,
- gMonStillFrontPic_Grumpig, 0x800, 352,
- gMonStillFrontPic_Plusle, 0x800, 353,
- gMonStillFrontPic_Minun, 0x800, 354,
- gMonStillFrontPic_Mawile, 0x800, 355,
- gMonStillFrontPic_Meditite, 0x800, 356,
- gMonStillFrontPic_Medicham, 0x800, 357,
- gMonStillFrontPic_Swablu, 0x800, 358,
- gMonStillFrontPic_Altaria, 0x800, 359,
- gMonStillFrontPic_Wynaut, 0x800, 360,
- gMonStillFrontPic_Duskull, 0x800, 361,
- gMonStillFrontPic_Dusclops, 0x800, 362,
- gMonStillFrontPic_Roselia, 0x800, 363,
- gMonStillFrontPic_Slakoth, 0x800, 364,
- gMonStillFrontPic_Vigoroth, 0x800, 365,
- gMonStillFrontPic_Slaking, 0x800, 366,
- gMonStillFrontPic_Gulpin, 0x800, 367,
- gMonStillFrontPic_Swalot, 0x800, 368,
- gMonStillFrontPic_Tropius, 0x800, 369,
- gMonStillFrontPic_Whismur, 0x800, 370,
- gMonStillFrontPic_Loudred, 0x800, 371,
- gMonStillFrontPic_Exploud, 0x800, 372,
- gMonStillFrontPic_Clamperl, 0x800, 373,
- gMonStillFrontPic_Huntail, 0x800, 374,
- gMonStillFrontPic_Gorebyss, 0x800, 375,
- gMonStillFrontPic_Absol, 0x800, 376,
- gMonStillFrontPic_Shuppet, 0x800, 377,
- gMonStillFrontPic_Banette, 0x800, 378,
- gMonStillFrontPic_Seviper, 0x800, 379,
- gMonStillFrontPic_Zangoose, 0x800, 380,
- gMonStillFrontPic_Relicanth, 0x800, 381,
- gMonStillFrontPic_Aron, 0x800, 382,
- gMonStillFrontPic_Lairon, 0x800, 383,
- gMonStillFrontPic_Aggron, 0x800, 384,
- gMonStillFrontPic_Castform, 0x800, 385,
- gMonStillFrontPic_Volbeat, 0x800, 386,
- gMonStillFrontPic_Illumise, 0x800, 387,
- gMonStillFrontPic_Lileep, 0x800, 388,
- gMonStillFrontPic_Cradily, 0x800, 389,
- gMonStillFrontPic_Anorith, 0x800, 390,
- gMonStillFrontPic_Armaldo, 0x800, 391,
- gMonStillFrontPic_Ralts, 0x800, 392,
- gMonStillFrontPic_Kirlia, 0x800, 393,
- gMonStillFrontPic_Gardevoir, 0x800, 394,
- gMonStillFrontPic_Bagon, 0x800, 395,
- gMonStillFrontPic_Shelgon, 0x800, 396,
- gMonStillFrontPic_Salamence, 0x800, 397,
- gMonStillFrontPic_Beldum, 0x800, 398,
- gMonStillFrontPic_Metang, 0x800, 399,
- gMonStillFrontPic_Metagross, 0x800, 400,
- gMonStillFrontPic_Regirock, 0x800, 401,
- gMonStillFrontPic_Regice, 0x800, 402,
- gMonStillFrontPic_Registeel, 0x800, 403,
- gMonStillFrontPic_Kyogre, 0x800, 404,
- gMonStillFrontPic_Groudon, 0x800, 405,
- gMonStillFrontPic_Rayquaza, 0x800, 406,
- gMonStillFrontPic_Latias, 0x800, 407,
- gMonStillFrontPic_Latios, 0x800, 408,
- gMonStillFrontPic_Jirachi, 0x800, 409,
- gMonStillFrontPic_Deoxys, 0x800, 410,
- gMonStillFrontPic_Chimecho, 0x800, 411,
- gMonStillFrontPic_Egg, 0x800, 412,
- gMonStillFrontPic_UnownB, 0x800, 413,
- gMonStillFrontPic_UnownC, 0x800, 414,
- gMonStillFrontPic_UnownD, 0x800, 415,
- gMonStillFrontPic_UnownE, 0x800, 416,
- gMonStillFrontPic_UnownF, 0x800, 417,
- gMonStillFrontPic_UnownG, 0x800, 418,
- gMonStillFrontPic_UnownH, 0x800, 419,
- gMonStillFrontPic_UnownI, 0x800, 420,
- gMonStillFrontPic_UnownJ, 0x800, 421,
- gMonStillFrontPic_UnownK, 0x800, 422,
- gMonStillFrontPic_UnownL, 0x800, 423,
- gMonStillFrontPic_UnownM, 0x800, 424,
- gMonStillFrontPic_UnownN, 0x800, 425,
- gMonStillFrontPic_UnownO, 0x800, 426,
- gMonStillFrontPic_UnownP, 0x800, 427,
- gMonStillFrontPic_UnownQ, 0x800, 428,
- gMonStillFrontPic_UnownR, 0x800, 429,
- gMonStillFrontPic_UnownS, 0x800, 430,
- gMonStillFrontPic_UnownT, 0x800, 431,
- gMonStillFrontPic_UnownU, 0x800, 432,
- gMonStillFrontPic_UnownV, 0x800, 433,
- gMonStillFrontPic_UnownW, 0x800, 434,
- gMonStillFrontPic_UnownX, 0x800, 435,
- gMonStillFrontPic_UnownY, 0x800, 436,
- gMonStillFrontPic_UnownZ, 0x800, 437,
- gMonStillFrontPic_UnownExclamationMark, 0x800, 438,
- gMonStillFrontPic_UnownQuestionMark, 0x800, 439,
+ STILL_FRONT_PIC(TREECKO, gMonStillFrontPic_Treecko),
+ STILL_FRONT_PIC(GROVYLE, gMonStillFrontPic_Grovyle),
+ STILL_FRONT_PIC(SCEPTILE, gMonStillFrontPic_Sceptile),
+ STILL_FRONT_PIC(TORCHIC, gMonStillFrontPic_Torchic),
+ STILL_FRONT_PIC(COMBUSKEN, gMonStillFrontPic_Combusken),
+ STILL_FRONT_PIC(BLAZIKEN, gMonStillFrontPic_Blaziken),
+ STILL_FRONT_PIC(MUDKIP, gMonStillFrontPic_Mudkip),
+ STILL_FRONT_PIC(MARSHTOMP, gMonStillFrontPic_Marshtomp),
+ STILL_FRONT_PIC(SWAMPERT, gMonStillFrontPic_Swampert),
+ STILL_FRONT_PIC(POOCHYENA, gMonStillFrontPic_Poochyena),
+ STILL_FRONT_PIC(MIGHTYENA, gMonStillFrontPic_Mightyena),
+ STILL_FRONT_PIC(ZIGZAGOON, gMonStillFrontPic_Zigzagoon),
+ STILL_FRONT_PIC(LINOONE, gMonStillFrontPic_Linoone),
+ STILL_FRONT_PIC(WURMPLE, gMonStillFrontPic_Wurmple),
+ STILL_FRONT_PIC(SILCOON, gMonStillFrontPic_Silcoon),
+ STILL_FRONT_PIC(BEAUTIFLY, gMonStillFrontPic_Beautifly),
+ STILL_FRONT_PIC(CASCOON, gMonStillFrontPic_Cascoon),
+ STILL_FRONT_PIC(DUSTOX, gMonStillFrontPic_Dustox),
+ STILL_FRONT_PIC(LOTAD, gMonStillFrontPic_Lotad),
+ STILL_FRONT_PIC(LOMBRE, gMonStillFrontPic_Lombre),
+ STILL_FRONT_PIC(LUDICOLO, gMonStillFrontPic_Ludicolo),
+ STILL_FRONT_PIC(SEEDOT, gMonStillFrontPic_Seedot),
+ STILL_FRONT_PIC(NUZLEAF, gMonStillFrontPic_Nuzleaf),
+ STILL_FRONT_PIC(SHIFTRY, gMonStillFrontPic_Shiftry),
+ STILL_FRONT_PIC(NINCADA, gMonStillFrontPic_Nincada),
+ STILL_FRONT_PIC(NINJASK, gMonStillFrontPic_Ninjask),
+ STILL_FRONT_PIC(SHEDINJA, gMonStillFrontPic_Shedinja),
+ STILL_FRONT_PIC(TAILLOW, gMonStillFrontPic_Taillow),
+ STILL_FRONT_PIC(SWELLOW, gMonStillFrontPic_Swellow),
+ STILL_FRONT_PIC(SHROOMISH, gMonStillFrontPic_Shroomish),
+ STILL_FRONT_PIC(BRELOOM, gMonStillFrontPic_Breloom),
+ STILL_FRONT_PIC(SPINDA, gMonStillFrontPic_Spinda),
+ STILL_FRONT_PIC(WINGULL, gMonStillFrontPic_Wingull),
+ STILL_FRONT_PIC(PELIPPER, gMonStillFrontPic_Pelipper),
+ STILL_FRONT_PIC(SURSKIT, gMonStillFrontPic_Surskit),
+ STILL_FRONT_PIC(MASQUERAIN, gMonStillFrontPic_Masquerain),
+ STILL_FRONT_PIC(WAILMER, gMonStillFrontPic_Wailmer),
+ STILL_FRONT_PIC(WAILORD, gMonStillFrontPic_Wailord),
+ STILL_FRONT_PIC(SKITTY, gMonStillFrontPic_Skitty),
+ STILL_FRONT_PIC(DELCATTY, gMonStillFrontPic_Delcatty),
+ STILL_FRONT_PIC(KECLEON, gMonStillFrontPic_Kecleon),
+ STILL_FRONT_PIC(BALTOY, gMonStillFrontPic_Baltoy),
+ STILL_FRONT_PIC(CLAYDOL, gMonStillFrontPic_Claydol),
+ STILL_FRONT_PIC(NOSEPASS, gMonStillFrontPic_Nosepass),
+ STILL_FRONT_PIC(TORKOAL, gMonStillFrontPic_Torkoal),
+ STILL_FRONT_PIC(SABLEYE, gMonStillFrontPic_Sableye),
+ STILL_FRONT_PIC(BARBOACH, gMonStillFrontPic_Barboach),
+ STILL_FRONT_PIC(WHISCASH, gMonStillFrontPic_Whiscash),
+ STILL_FRONT_PIC(LUVDISC, gMonStillFrontPic_Luvdisc),
+ STILL_FRONT_PIC(CORPHISH, gMonStillFrontPic_Corphish),
+ STILL_FRONT_PIC(CRAWDAUNT, gMonStillFrontPic_Crawdaunt),
+ STILL_FRONT_PIC(FEEBAS, gMonStillFrontPic_Feebas),
+ STILL_FRONT_PIC(MILOTIC, gMonStillFrontPic_Milotic),
+ STILL_FRONT_PIC(CARVANHA, gMonStillFrontPic_Carvanha),
+ STILL_FRONT_PIC(SHARPEDO, gMonStillFrontPic_Sharpedo),
+ STILL_FRONT_PIC(TRAPINCH, gMonStillFrontPic_Trapinch),
+ STILL_FRONT_PIC(VIBRAVA, gMonStillFrontPic_Vibrava),
+ STILL_FRONT_PIC(FLYGON, gMonStillFrontPic_Flygon),
+ STILL_FRONT_PIC(MAKUHITA, gMonStillFrontPic_Makuhita),
+ STILL_FRONT_PIC(HARIYAMA, gMonStillFrontPic_Hariyama),
+ STILL_FRONT_PIC(ELECTRIKE, gMonStillFrontPic_Electrike),
+ STILL_FRONT_PIC(MANECTRIC, gMonStillFrontPic_Manectric),
+ STILL_FRONT_PIC(NUMEL, gMonStillFrontPic_Numel),
+ STILL_FRONT_PIC(CAMERUPT, gMonStillFrontPic_Camerupt),
+ STILL_FRONT_PIC(SPHEAL, gMonStillFrontPic_Spheal),
+ STILL_FRONT_PIC(SEALEO, gMonStillFrontPic_Sealeo),
+ STILL_FRONT_PIC(WALREIN, gMonStillFrontPic_Walrein),
+ STILL_FRONT_PIC(CACNEA, gMonStillFrontPic_Cacnea),
+ STILL_FRONT_PIC(CACTURNE, gMonStillFrontPic_Cacturne),
+ STILL_FRONT_PIC(SNORUNT, gMonStillFrontPic_Snorunt),
+ STILL_FRONT_PIC(GLALIE, gMonStillFrontPic_Glalie),
+ STILL_FRONT_PIC(LUNATONE, gMonStillFrontPic_Lunatone),
+ STILL_FRONT_PIC(SOLROCK, gMonStillFrontPic_Solrock),
+ STILL_FRONT_PIC(AZURILL, gMonStillFrontPic_Azurill),
+ STILL_FRONT_PIC(SPOINK, gMonStillFrontPic_Spoink),
+ STILL_FRONT_PIC(GRUMPIG, gMonStillFrontPic_Grumpig),
+ STILL_FRONT_PIC(PLUSLE, gMonStillFrontPic_Plusle),
+ STILL_FRONT_PIC(MINUN, gMonStillFrontPic_Minun),
+ STILL_FRONT_PIC(MAWILE, gMonStillFrontPic_Mawile),
+ STILL_FRONT_PIC(MEDITITE, gMonStillFrontPic_Meditite),
+ STILL_FRONT_PIC(MEDICHAM, gMonStillFrontPic_Medicham),
+ STILL_FRONT_PIC(SWABLU, gMonStillFrontPic_Swablu),
+ STILL_FRONT_PIC(ALTARIA, gMonStillFrontPic_Altaria),
+ STILL_FRONT_PIC(WYNAUT, gMonStillFrontPic_Wynaut),
+ STILL_FRONT_PIC(DUSKULL, gMonStillFrontPic_Duskull),
+ STILL_FRONT_PIC(DUSCLOPS, gMonStillFrontPic_Dusclops),
+ STILL_FRONT_PIC(ROSELIA, gMonStillFrontPic_Roselia),
+ STILL_FRONT_PIC(SLAKOTH, gMonStillFrontPic_Slakoth),
+ STILL_FRONT_PIC(VIGOROTH, gMonStillFrontPic_Vigoroth),
+ STILL_FRONT_PIC(SLAKING, gMonStillFrontPic_Slaking),
+ STILL_FRONT_PIC(GULPIN, gMonStillFrontPic_Gulpin),
+ STILL_FRONT_PIC(SWALOT, gMonStillFrontPic_Swalot),
+ STILL_FRONT_PIC(TROPIUS, gMonStillFrontPic_Tropius),
+ STILL_FRONT_PIC(WHISMUR, gMonStillFrontPic_Whismur),
+ STILL_FRONT_PIC(LOUDRED, gMonStillFrontPic_Loudred),
+ STILL_FRONT_PIC(EXPLOUD, gMonStillFrontPic_Exploud),
+ STILL_FRONT_PIC(CLAMPERL, gMonStillFrontPic_Clamperl),
+ STILL_FRONT_PIC(HUNTAIL, gMonStillFrontPic_Huntail),
+ STILL_FRONT_PIC(GOREBYSS, gMonStillFrontPic_Gorebyss),
+ STILL_FRONT_PIC(ABSOL, gMonStillFrontPic_Absol),
+ STILL_FRONT_PIC(SHUPPET, gMonStillFrontPic_Shuppet),
+ STILL_FRONT_PIC(BANETTE, gMonStillFrontPic_Banette),
+ STILL_FRONT_PIC(SEVIPER, gMonStillFrontPic_Seviper),
+ STILL_FRONT_PIC(ZANGOOSE, gMonStillFrontPic_Zangoose),
+ STILL_FRONT_PIC(RELICANTH, gMonStillFrontPic_Relicanth),
+ STILL_FRONT_PIC(ARON, gMonStillFrontPic_Aron),
+ STILL_FRONT_PIC(LAIRON, gMonStillFrontPic_Lairon),
+ STILL_FRONT_PIC(AGGRON, gMonStillFrontPic_Aggron),
+ STILL_FRONT_PIC(CASTFORM, gMonStillFrontPic_Castform),
+ STILL_FRONT_PIC(VOLBEAT, gMonStillFrontPic_Volbeat),
+ STILL_FRONT_PIC(ILLUMISE, gMonStillFrontPic_Illumise),
+ STILL_FRONT_PIC(LILEEP, gMonStillFrontPic_Lileep),
+ STILL_FRONT_PIC(CRADILY, gMonStillFrontPic_Cradily),
+ STILL_FRONT_PIC(ANORITH, gMonStillFrontPic_Anorith),
+ STILL_FRONT_PIC(ARMALDO, gMonStillFrontPic_Armaldo),
+ STILL_FRONT_PIC(RALTS, gMonStillFrontPic_Ralts),
+ STILL_FRONT_PIC(KIRLIA, gMonStillFrontPic_Kirlia),
+ STILL_FRONT_PIC(GARDEVOIR, gMonStillFrontPic_Gardevoir),
+ STILL_FRONT_PIC(BAGON, gMonStillFrontPic_Bagon),
+ STILL_FRONT_PIC(SHELGON, gMonStillFrontPic_Shelgon),
+ STILL_FRONT_PIC(SALAMENCE, gMonStillFrontPic_Salamence),
+ STILL_FRONT_PIC(BELDUM, gMonStillFrontPic_Beldum),
+ STILL_FRONT_PIC(METANG, gMonStillFrontPic_Metang),
+ STILL_FRONT_PIC(METAGROSS, gMonStillFrontPic_Metagross),
+ STILL_FRONT_PIC(REGIROCK, gMonStillFrontPic_Regirock),
+ STILL_FRONT_PIC(REGICE, gMonStillFrontPic_Regice),
+ STILL_FRONT_PIC(REGISTEEL, gMonStillFrontPic_Registeel),
+ STILL_FRONT_PIC(KYOGRE, gMonStillFrontPic_Kyogre),
+ STILL_FRONT_PIC(GROUDON, gMonStillFrontPic_Groudon),
+ STILL_FRONT_PIC(RAYQUAZA, gMonStillFrontPic_Rayquaza),
+ STILL_FRONT_PIC(LATIAS, gMonStillFrontPic_Latias),
+ STILL_FRONT_PIC(LATIOS, gMonStillFrontPic_Latios),
+ STILL_FRONT_PIC(JIRACHI, gMonStillFrontPic_Jirachi),
+ STILL_FRONT_PIC(DEOXYS, gMonStillFrontPic_Deoxys),
+ STILL_FRONT_PIC(CHIMECHO, gMonStillFrontPic_Chimecho),
+ STILL_FRONT_PIC(EGG, gMonStillFrontPic_Egg),
+ STILL_FRONT_PIC(UNOWN_B, gMonStillFrontPic_UnownB),
+ STILL_FRONT_PIC(UNOWN_C, gMonStillFrontPic_UnownC),
+ STILL_FRONT_PIC(UNOWN_D, gMonStillFrontPic_UnownD),
+ STILL_FRONT_PIC(UNOWN_E, gMonStillFrontPic_UnownE),
+ STILL_FRONT_PIC(UNOWN_F, gMonStillFrontPic_UnownF),
+ STILL_FRONT_PIC(UNOWN_G, gMonStillFrontPic_UnownG),
+ STILL_FRONT_PIC(UNOWN_H, gMonStillFrontPic_UnownH),
+ STILL_FRONT_PIC(UNOWN_I, gMonStillFrontPic_UnownI),
+ STILL_FRONT_PIC(UNOWN_J, gMonStillFrontPic_UnownJ),
+ STILL_FRONT_PIC(UNOWN_K, gMonStillFrontPic_UnownK),
+ STILL_FRONT_PIC(UNOWN_L, gMonStillFrontPic_UnownL),
+ STILL_FRONT_PIC(UNOWN_M, gMonStillFrontPic_UnownM),
+ STILL_FRONT_PIC(UNOWN_N, gMonStillFrontPic_UnownN),
+ STILL_FRONT_PIC(UNOWN_O, gMonStillFrontPic_UnownO),
+ STILL_FRONT_PIC(UNOWN_P, gMonStillFrontPic_UnownP),
+ STILL_FRONT_PIC(UNOWN_Q, gMonStillFrontPic_UnownQ),
+ STILL_FRONT_PIC(UNOWN_R, gMonStillFrontPic_UnownR),
+ STILL_FRONT_PIC(UNOWN_S, gMonStillFrontPic_UnownS),
+ STILL_FRONT_PIC(UNOWN_T, gMonStillFrontPic_UnownT),
+ STILL_FRONT_PIC(UNOWN_U, gMonStillFrontPic_UnownU),
+ STILL_FRONT_PIC(UNOWN_V, gMonStillFrontPic_UnownV),
+ STILL_FRONT_PIC(UNOWN_W, gMonStillFrontPic_UnownW),
+ STILL_FRONT_PIC(UNOWN_X, gMonStillFrontPic_UnownX),
+ STILL_FRONT_PIC(UNOWN_Y, gMonStillFrontPic_UnownY),
+ STILL_FRONT_PIC(UNOWN_Z, gMonStillFrontPic_UnownZ),
+ STILL_FRONT_PIC(UNOWN_EMARK, gMonStillFrontPic_UnownExclamationMark),
+ STILL_FRONT_PIC(UNOWN_QMARK, gMonStillFrontPic_UnownQuestionMark),
};
diff --git a/src/data/wild_encounters.h b/src/data/wild_encounters.h
new file mode 100644
index 000000000..d1f2eb616
--- /dev/null
+++ b/src/data/wild_encounters.h
@@ -0,0 +1,4573 @@
+// const rom data
+
+/*This file consists of several parts.
+ *First, the actual tables that define the available Pokemon and their level ranges.
+ *Second, the headers for each area that links the tables to the actual maps.
+ *Third, Battle Pyramid-specific tables and headers.
+ *Fourth, Battle Pike-specific tables and headers.
+ *And then finally, Feebas-related data.
+ *You can search for // to jump between the sections.
+ */
+
+ //Start of regular Pokemon tables.
+
+const struct WildPokemon gRoute101_LandMons[] =
+{
+ {2, 2, SPECIES_WURMPLE},
+ {2, 2, SPECIES_POOCHYENA},
+ {2, 2, SPECIES_WURMPLE},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_POOCHYENA},
+ {2, 2, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+};
+
+const struct WildPokemonInfo gRoute101_LandMonsInfo = {20, gRoute101_LandMons};
+
+const struct WildPokemon gRoute102_LandMons[] =
+{
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_WURMPLE},
+ {4, 4, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_WURMPLE},
+ {3, 3, SPECIES_LOTAD},
+ {4, 4, SPECIES_LOTAD},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_RALTS},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_SEEDOT},
+};
+
+const struct WildPokemonInfo gRoute102_LandMonsInfo = {20, gRoute102_LandMons};
+
+const struct WildPokemon gRoute102_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute102_WaterMonsInfo = {4, gRoute102_WaterMons};
+
+const struct WildPokemon gRoute102_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+
+const struct WildPokemonInfo gRoute102_FishingMonsInfo = {30, gRoute102_FishingMons};
+
+const struct WildPokemon gRoute103_LandMons[] =
+{
+ {2, 2, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_POOCHYENA},
+ {2, 2, SPECIES_WINGULL},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {2, 2, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+};
+
+const struct WildPokemonInfo gRoute103_LandMonsInfo = {20, gRoute103_LandMons};
+
+const struct WildPokemon gRoute103_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute103_WaterMonsInfo = {4, gRoute103_WaterMons};
+
+const struct WildPokemon gRoute103_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute103_FishingMonsInfo = {30, gRoute103_FishingMons};
+
+const struct WildPokemon gRoute104_LandMons[] =
+{
+ {4, 4, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_WURMPLE},
+ {5, 5, SPECIES_POOCHYENA},
+ {5, 5, SPECIES_MARILL},
+ {4, 4, SPECIES_MARILL},
+ {5, 5, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_TAILLOW},
+ {5, 5, SPECIES_TAILLOW},
+ {4, 4, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {5, 5, SPECIES_WINGULL},
+};
+
+const struct WildPokemonInfo gRoute104_LandMonsInfo = {20, gRoute104_LandMons};
+
+const struct WildPokemon gRoute104_WaterMons[] =
+{
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute104_WaterMonsInfo = {4, gRoute104_WaterMons};
+
+const struct WildPokemon gRoute104_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {20, 25, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_MAGIKARP},
+ {40, 45, SPECIES_MAGIKARP},
+};
+
+const struct WildPokemonInfo gRoute104_FishingMonsInfo = {30, gRoute104_FishingMons};
+
+const struct WildPokemon gRoute105_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute105_WaterMonsInfo = {4, gRoute105_WaterMons};
+
+const struct WildPokemon gRoute105_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute105_FishingMonsInfo = {30, gRoute105_FishingMons};
+
+const struct WildPokemon gRoute110_LandMons[] =
+{
+ {12, 12, SPECIES_POOCHYENA},
+ {12, 12, SPECIES_ELECTRIKE},
+ {12, 12, SPECIES_GULPIN},
+ {13, 13, SPECIES_ELECTRIKE},
+ {13, 13, SPECIES_MINUN},
+ {13, 13, SPECIES_ODDISH},
+ {13, 13, SPECIES_MINUN},
+ {13, 13, SPECIES_GULPIN},
+ {12, 12, SPECIES_WINGULL},
+ {12, 12, SPECIES_WINGULL},
+ {12, 12, SPECIES_PLUSLE},
+ {13, 13, SPECIES_PLUSLE},
+};
+
+const struct WildPokemonInfo gRoute110_LandMonsInfo = {20, gRoute110_LandMons};
+
+const struct WildPokemon gRoute110_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute110_WaterMonsInfo = {4, gRoute110_WaterMons};
+
+const struct WildPokemon gRoute110_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute110_FishingMonsInfo = {30, gRoute110_FishingMons};
+
+const struct WildPokemon gRoute111_LandMons[] =
+{
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {19, 19, SPECIES_BALTOY},
+ {21, 21, SPECIES_BALTOY},
+ {19, 19, SPECIES_SANDSHREW},
+ {19, 19, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_BALTOY},
+ {20, 20, SPECIES_CACNEA},
+ {22, 22, SPECIES_CACNEA},
+ {22, 22, SPECIES_CACNEA},
+};
+
+const struct WildPokemonInfo gRoute111_LandMonsInfo = {10, gRoute111_LandMons};
+
+const struct WildPokemon gRoute111_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute111_WaterMonsInfo = {4, gRoute111_WaterMons};
+
+const struct WildPokemon gRoute111_RockSmashMons[] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gRoute111_RockSmashMonsInfo = {20, gRoute111_RockSmashMons};
+
+const struct WildPokemon gRoute111_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+
+const struct WildPokemonInfo gRoute111_FishingMonsInfo = {30, gRoute111_FishingMons};
+
+const struct WildPokemon gRoute112_LandMons[] =
+{
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_MARILL},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_MARILL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_MARILL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+};
+
+const struct WildPokemonInfo gRoute112_LandMonsInfo = {20, gRoute112_LandMons};
+
+const struct WildPokemon gRoute113_LandMons[] =
+{
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SLUGMA},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SLUGMA},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SLUGMA},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+};
+
+const struct WildPokemonInfo gRoute113_LandMonsInfo = {20, gRoute113_LandMons};
+
+const struct WildPokemon gRoute114_LandMons[] =
+{
+ {16, 16, SPECIES_SWABLU},
+ {16, 16, SPECIES_LOTAD},
+ {17, 17, SPECIES_SWABLU},
+ {15, 15, SPECIES_SWABLU},
+ {15, 15, SPECIES_LOTAD},
+ {16, 16, SPECIES_LOMBRE},
+ {16, 16, SPECIES_LOMBRE},
+ {18, 18, SPECIES_LOMBRE},
+ {17, 17, SPECIES_SEVIPER},
+ {15, 15, SPECIES_SEVIPER},
+ {17, 17, SPECIES_SEVIPER},
+ {15, 15, SPECIES_NUZLEAF},
+};
+
+const struct WildPokemonInfo gRoute114_LandMonsInfo = {20, gRoute114_LandMons};
+
+const struct WildPokemon gRoute114_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute114_WaterMonsInfo = {4, gRoute114_WaterMons};
+
+const struct WildPokemon gRoute114_RockSmashMons[] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gRoute114_RockSmashMonsInfo = {20, gRoute114_RockSmashMons};
+
+const struct WildPokemon gRoute114_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+
+const struct WildPokemonInfo gRoute114_FishingMonsInfo = {30, gRoute114_FishingMons};
+
+const struct WildPokemon gRoute116_LandMons[] =
+{
+ {6, 6, SPECIES_POOCHYENA},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_NINCADA},
+ {7, 7, SPECIES_ABRA},
+ {7, 7, SPECIES_NINCADA},
+ {6, 6, SPECIES_TAILLOW},
+ {7, 7, SPECIES_TAILLOW},
+ {8, 8, SPECIES_TAILLOW},
+ {7, 7, SPECIES_POOCHYENA},
+ {8, 8, SPECIES_POOCHYENA},
+ {7, 7, SPECIES_SKITTY},
+ {8, 8, SPECIES_SKITTY},
+};
+
+const struct WildPokemonInfo gRoute116_LandMonsInfo = {20, gRoute116_LandMons};
+
+const struct WildPokemon gRoute117_LandMons[] =
+{
+ {13, 13, SPECIES_POOCHYENA},
+ {13, 13, SPECIES_ODDISH},
+ {14, 14, SPECIES_POOCHYENA},
+ {14, 14, SPECIES_ODDISH},
+ {13, 13, SPECIES_MARILL},
+ {13, 13, SPECIES_ODDISH},
+ {13, 13, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_VOLBEAT},
+ {13, 13, SPECIES_SEEDOT},
+};
+
+const struct WildPokemonInfo gRoute117_LandMonsInfo = {20, gRoute117_LandMons};
+
+const struct WildPokemon gRoute117_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute117_WaterMonsInfo = {4, gRoute117_WaterMons};
+
+const struct WildPokemon gRoute117_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+
+const struct WildPokemonInfo gRoute117_FishingMonsInfo = {30, gRoute117_FishingMons};
+
+const struct WildPokemon gRoute118_LandMons[] =
+{
+ {24, 24, SPECIES_ZIGZAGOON},
+ {24, 24, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_ZIGZAGOON},
+ {26, 26, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_LINOONE},
+ {26, 26, SPECIES_MANECTRIC},
+ {25, 25, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+
+const struct WildPokemonInfo gRoute118_LandMonsInfo = {20, gRoute118_LandMons};
+
+const struct WildPokemon gRoute118_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute118_WaterMonsInfo = {4, gRoute118_WaterMons};
+
+const struct WildPokemon gRoute118_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+
+const struct WildPokemonInfo gRoute118_FishingMonsInfo = {30, gRoute118_FishingMons};
+
+const struct WildPokemon gRoute124_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute124_WaterMonsInfo = {4, gRoute124_WaterMons};
+
+const struct WildPokemon gRoute124_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute124_FishingMonsInfo = {30, gRoute124_FishingMons};
+
+const struct WildPokemon gPetalburgWoods_LandMons[] =
+{
+ {5, 5, SPECIES_POOCHYENA},
+ {5, 5, SPECIES_WURMPLE},
+ {5, 5, SPECIES_SHROOMISH},
+ {6, 6, SPECIES_POOCHYENA},
+ {5, 5, SPECIES_SILCOON},
+ {5, 5, SPECIES_CASCOON},
+ {6, 6, SPECIES_WURMPLE},
+ {6, 6, SPECIES_SHROOMISH},
+ {5, 5, SPECIES_TAILLOW},
+ {5, 5, SPECIES_SLAKOTH},
+ {6, 6, SPECIES_TAILLOW},
+ {6, 6, SPECIES_SLAKOTH},
+};
+
+const struct WildPokemonInfo gPetalburgWoods_LandMonsInfo = {20, gPetalburgWoods_LandMons};
+
+const struct WildPokemon gRusturfTunnel_LandMons[] =
+{
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+};
+
+const struct WildPokemonInfo gRusturfTunnel_LandMonsInfo = {10, gRusturfTunnel_LandMons};
+
+const struct WildPokemon gGraniteCave_1F_LandMons[] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_GEODUDE},
+ {8, 8, SPECIES_GEODUDE},
+ {6, 6, SPECIES_GEODUDE},
+ {9, 9, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gGraniteCave_1F_LandMonsInfo = {10, gGraniteCave_1F_LandMons};
+
+const struct WildPokemon gGraniteCave_B1F_LandMons[] =
+{
+ {9, 9, SPECIES_ZUBAT},
+ {10, 10, SPECIES_ARON},
+ {9, 9, SPECIES_ARON},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ZUBAT},
+ {9, 9, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {11, 11, SPECIES_MAKUHITA},
+ {10, 10, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {9, 9, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+};
+
+const struct WildPokemonInfo gGraniteCave_B1F_LandMonsInfo = {10, gGraniteCave_B1F_LandMons};
+
+const struct WildPokemon gMtPyre_1F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+};
+
+const struct WildPokemonInfo gMtPyre_1F_LandMonsInfo = {10, gMtPyre_1F_LandMons};
+
+const struct WildPokemon gVictoryRoad_1F_LandMons[] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_LOUDRED},
+ {36, 36, SPECIES_ZUBAT},
+ {36, 36, SPECIES_MAKUHITA},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+};
+
+const struct WildPokemonInfo gVictoryRoad_1F_LandMonsInfo = {10, gVictoryRoad_1F_LandMons};
+
+const struct WildPokemon gSafariZone_South_LandMons[] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+ {25, 25, SPECIES_DODUO},
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+
+const struct WildPokemonInfo gSafariZone_South_LandMonsInfo = {25, gSafariZone_South_LandMons};
+
+const struct WildPokemon gUnderwater2_WaterMons[] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+
+const struct WildPokemonInfo gUnderwater2_WaterMonsInfo = {4, gUnderwater2_WaterMons};
+
+const struct WildPokemon gAbandonedShip_Rooms_B1F_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+
+const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_WaterMonsInfo = {4, gAbandonedShip_Rooms_B1F_WaterMons};
+
+const struct WildPokemon gAbandonedShip_Rooms_B1F_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+
+const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_FishingMonsInfo = {20, gAbandonedShip_Rooms_B1F_FishingMons};
+
+const struct WildPokemon gGraniteCave_B2F_LandMons[] =
+{
+ {10, 10, SPECIES_ZUBAT},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ARON},
+ {11, 11, SPECIES_ZUBAT},
+ {12, 12, SPECIES_ARON},
+ {10, 10, SPECIES_ABRA},
+ {10, 10, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+};
+
+const struct WildPokemonInfo gGraniteCave_B2F_LandMonsInfo = {10, gGraniteCave_B2F_LandMons};
+
+const struct WildPokemon gGraniteCave_B2F_RockSmashMons[] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {10, 20, SPECIES_NOSEPASS},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gGraniteCave_B2F_RockSmashMonsInfo = {20, gGraniteCave_B2F_RockSmashMons};
+
+const struct WildPokemon gFieryPath_LandMons[] =
+{
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_KOFFING},
+ {16, 16, SPECIES_NUMEL},
+ {15, 15, SPECIES_MACHOP},
+ {15, 15, SPECIES_TORKOAL},
+ {15, 15, SPECIES_SLUGMA},
+ {16, 16, SPECIES_KOFFING},
+ {16, 16, SPECIES_MACHOP},
+ {14, 14, SPECIES_TORKOAL},
+ {16, 16, SPECIES_TORKOAL},
+ {14, 14, SPECIES_GRIMER},
+ {14, 14, SPECIES_GRIMER},
+};
+
+const struct WildPokemonInfo gFieryPath_LandMonsInfo = {10, gFieryPath_LandMons};
+
+const struct WildPokemon gMeteorFalls_B1F_2R_LandMons[] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {30, 30, SPECIES_BAGON},
+ {35, 35, SPECIES_SOLROCK},
+ {35, 35, SPECIES_BAGON},
+ {37, 37, SPECIES_SOLROCK},
+ {25, 25, SPECIES_BAGON},
+ {39, 39, SPECIES_SOLROCK},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_2R_LandMonsInfo = {10, gMeteorFalls_B1F_2R_LandMons};
+
+const struct WildPokemon gMeteorFalls_B1F_2R_WaterMons[] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_2R_WaterMonsInfo = {4, gMeteorFalls_B1F_2R_WaterMons};
+
+const struct WildPokemon gMeteorFalls_B1F_2R_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_2R_FishingMonsInfo = {30, gMeteorFalls_B1F_2R_FishingMons};
+
+const struct WildPokemon gJaggedPass_LandMons[] =
+{
+ {21, 21, SPECIES_NUMEL},
+ {21, 21, SPECIES_NUMEL},
+ {21, 21, SPECIES_MACHOP},
+ {20, 20, SPECIES_NUMEL},
+ {20, 20, SPECIES_SPOINK},
+ {20, 20, SPECIES_MACHOP},
+ {21, 21, SPECIES_SPOINK},
+ {22, 22, SPECIES_MACHOP},
+ {22, 22, SPECIES_NUMEL},
+ {22, 22, SPECIES_SPOINK},
+ {22, 22, SPECIES_NUMEL},
+ {22, 22, SPECIES_SPOINK},
+};
+
+const struct WildPokemonInfo gJaggedPass_LandMonsInfo = {20, gJaggedPass_LandMons};
+
+const struct WildPokemon gRoute106_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute106_WaterMonsInfo = {4, gRoute106_WaterMons};
+
+const struct WildPokemon gRoute106_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute106_FishingMonsInfo = {30, gRoute106_FishingMons};
+
+const struct WildPokemon gRoute107_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute107_WaterMonsInfo = {4, gRoute107_WaterMons};
+
+const struct WildPokemon gRoute107_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute107_FishingMonsInfo = {30, gRoute107_FishingMons};
+
+const struct WildPokemon gRoute108_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute108_WaterMonsInfo = {4, gRoute108_WaterMons};
+
+const struct WildPokemon gRoute108_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute108_FishingMonsInfo = {30, gRoute108_FishingMons};
+
+const struct WildPokemon gRoute109_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute109_WaterMonsInfo = {4, gRoute109_WaterMons};
+
+const struct WildPokemon gRoute109_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute109_FishingMonsInfo = {30, gRoute109_FishingMons};
+
+const struct WildPokemon gRoute115_LandMons[] =
+{
+ {23, 23, SPECIES_SWABLU},
+ {23, 23, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWABLU},
+ {24, 24, SPECIES_TAILLOW},
+ {25, 25, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWELLOW},
+ {24, 24, SPECIES_JIGGLYPUFF},
+ {25, 25, SPECIES_JIGGLYPUFF},
+ {24, 24, SPECIES_WINGULL},
+ {24, 24, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+};
+
+const struct WildPokemonInfo gRoute115_LandMonsInfo = {20, gRoute115_LandMons};
+
+const struct WildPokemon gRoute115_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute115_WaterMonsInfo = {4, gRoute115_WaterMons};
+
+const struct WildPokemon gRoute115_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute115_FishingMonsInfo = {30, gRoute115_FishingMons};
+
+const struct WildPokemon gNewMauville_Inside_LandMons[] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_ELECTRODE},
+ {26, 26, SPECIES_MAGNETON},
+};
+
+const struct WildPokemonInfo gNewMauville_Inside_LandMonsInfo = {10, gNewMauville_Inside_LandMons};
+
+const struct WildPokemon gRoute119_LandMons[] =
+{
+ {25, 25, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_LINOONE},
+ {27, 27, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {24, 24, SPECIES_ODDISH},
+ {25, 25, SPECIES_TROPIUS},
+ {26, 26, SPECIES_TROPIUS},
+ {27, 27, SPECIES_TROPIUS},
+ {25, 25, SPECIES_KECLEON},
+};
+
+const struct WildPokemonInfo gRoute119_LandMonsInfo = {15, gRoute119_LandMons};
+
+const struct WildPokemon gRoute119_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute119_WaterMonsInfo = {4, gRoute119_WaterMons};
+
+const struct WildPokemon gRoute119_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {25, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+
+const struct WildPokemonInfo gRoute119_FishingMonsInfo = {30, gRoute119_FishingMons};
+
+const struct WildPokemon gRoute120_LandMons[] =
+{
+ {25, 25, SPECIES_POOCHYENA},
+ {25, 25, SPECIES_MIGHTYENA},
+ {27, 27, SPECIES_MIGHTYENA},
+ {25, 25, SPECIES_ODDISH},
+ {25, 25, SPECIES_MARILL},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {27, 27, SPECIES_MARILL},
+ {25, 25, SPECIES_ABSOL},
+ {27, 27, SPECIES_ABSOL},
+ {25, 25, SPECIES_KECLEON},
+ {25, 25, SPECIES_SEEDOT},
+};
+
+const struct WildPokemonInfo gRoute120_LandMonsInfo = {20, gRoute120_LandMons};
+
+const struct WildPokemon gRoute120_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute120_WaterMonsInfo = {4, gRoute120_WaterMons};
+
+const struct WildPokemon gRoute120_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+
+const struct WildPokemonInfo gRoute120_FishingMonsInfo = {30, gRoute120_FishingMons};
+
+const struct WildPokemon gRoute121_LandMons[] =
+{
+ {26, 26, SPECIES_POOCHYENA},
+ {26, 26, SPECIES_SHUPPET},
+ {26, 26, SPECIES_MIGHTYENA},
+ {28, 28, SPECIES_SHUPPET},
+ {28, 28, SPECIES_MIGHTYENA},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+
+const struct WildPokemonInfo gRoute121_LandMonsInfo = {20, gRoute121_LandMons};
+
+const struct WildPokemon gRoute121_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute121_WaterMonsInfo = {4, gRoute121_WaterMons};
+
+const struct WildPokemon gRoute121_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute121_FishingMonsInfo = {30, gRoute121_FishingMons};
+
+const struct WildPokemon gRoute122_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute122_WaterMonsInfo = {4, gRoute122_WaterMons};
+
+const struct WildPokemon gRoute122_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute122_FishingMonsInfo = {30, gRoute122_FishingMons};
+
+const struct WildPokemon gRoute123_LandMons[] =
+{
+ {26, 26, SPECIES_POOCHYENA},
+ {26, 26, SPECIES_SHUPPET},
+ {26, 26, SPECIES_MIGHTYENA},
+ {28, 28, SPECIES_SHUPPET},
+ {28, 28, SPECIES_MIGHTYENA},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+
+const struct WildPokemonInfo gRoute123_LandMonsInfo = {20, gRoute123_LandMons};
+
+const struct WildPokemon gRoute123_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute123_WaterMonsInfo = {4, gRoute123_WaterMons};
+
+const struct WildPokemon gRoute123_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute123_FishingMonsInfo = {30, gRoute123_FishingMons};
+
+const struct WildPokemon gMtPyre_2F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+};
+
+const struct WildPokemonInfo gMtPyre_2F_LandMonsInfo = {10, gMtPyre_2F_LandMons};
+
+const struct WildPokemon gMtPyre_3F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+};
+
+const struct WildPokemonInfo gMtPyre_3F_LandMonsInfo = {10, gMtPyre_3F_LandMons};
+
+const struct WildPokemon gMtPyre_4F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+};
+
+const struct WildPokemonInfo gMtPyre_4F_LandMonsInfo = {10, gMtPyre_4F_LandMons};
+
+const struct WildPokemon gMtPyre_5F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+};
+
+const struct WildPokemonInfo gMtPyre_5F_LandMonsInfo = {10, gMtPyre_5F_LandMons};
+
+const struct WildPokemon gMtPyre_6F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+};
+
+const struct WildPokemonInfo gMtPyre_6F_LandMonsInfo = {10, gMtPyre_6F_LandMons};
+
+const struct WildPokemon gMtPyre_Exterior_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {29, 29, SPECIES_VULPIX},
+ {27, 27, SPECIES_VULPIX},
+ {29, 29, SPECIES_VULPIX},
+ {25, 25, SPECIES_VULPIX},
+ {27, 27, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+};
+
+const struct WildPokemonInfo gMtPyre_Exterior_LandMonsInfo = {10, gMtPyre_Exterior_LandMons};
+
+const struct WildPokemon gMtPyre_Summit_LandMons[] =
+{
+ {28, 28, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {30, 30, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {30, 30, SPECIES_DUSKULL},
+ {28, 28, SPECIES_CHIMECHO},
+ {28, 28, SPECIES_CHIMECHO},
+};
+
+const struct WildPokemonInfo gMtPyre_Summit_LandMonsInfo = {10, gMtPyre_Summit_LandMons};
+
+const struct WildPokemon gGraniteCave_StevensRoom_LandMons[] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+};
+
+const struct WildPokemonInfo gGraniteCave_StevensRoom_LandMonsInfo = {10, gGraniteCave_StevensRoom_LandMons};
+
+const struct WildPokemon gRoute125_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute125_WaterMonsInfo = {4, gRoute125_WaterMons};
+
+const struct WildPokemon gRoute125_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute125_FishingMonsInfo = {30, gRoute125_FishingMons};
+
+const struct WildPokemon gRoute126_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute126_WaterMonsInfo = {4, gRoute126_WaterMons};
+
+const struct WildPokemon gRoute126_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute126_FishingMonsInfo = {30, gRoute126_FishingMons};
+
+const struct WildPokemon gRoute127_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute127_WaterMonsInfo = {4, gRoute127_WaterMons};
+
+const struct WildPokemon gRoute127_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute127_FishingMonsInfo = {30, gRoute127_FishingMons};
+
+const struct WildPokemon gRoute128_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute128_WaterMonsInfo = {4, gRoute128_WaterMons};
+
+const struct WildPokemon gRoute128_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute128_FishingMonsInfo = {30, gRoute128_FishingMons};
+
+const struct WildPokemon gRoute129_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_WAILORD},
+};
+
+const struct WildPokemonInfo gRoute129_WaterMonsInfo = {4, gRoute129_WaterMons};
+
+const struct WildPokemon gRoute129_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute129_FishingMonsInfo = {30, gRoute129_FishingMons};
+
+const struct WildPokemon gRoute130_LandMons[] =
+{
+ {30, 30, SPECIES_WYNAUT},
+ {35, 35, SPECIES_WYNAUT},
+ {25, 25, SPECIES_WYNAUT},
+ {40, 40, SPECIES_WYNAUT},
+ {20, 20, SPECIES_WYNAUT},
+ {45, 45, SPECIES_WYNAUT},
+ {15, 15, SPECIES_WYNAUT},
+ {50, 50, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+};
+
+const struct WildPokemonInfo gRoute130_LandMonsInfo = {20, gRoute130_LandMons};
+
+const struct WildPokemon gRoute130_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute130_WaterMonsInfo = {4, gRoute130_WaterMons};
+
+const struct WildPokemon gRoute130_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute130_FishingMonsInfo = {30, gRoute130_FishingMons};
+
+const struct WildPokemon gRoute131_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute131_WaterMonsInfo = {4, gRoute131_WaterMons};
+
+const struct WildPokemon gRoute131_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute131_FishingMonsInfo = {30, gRoute131_FishingMons};
+
+const struct WildPokemon gRoute132_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute132_WaterMonsInfo = {4, gRoute132_WaterMons};
+
+const struct WildPokemon gRoute132_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute132_FishingMonsInfo = {30, gRoute132_FishingMons};
+
+const struct WildPokemon gRoute133_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute133_WaterMonsInfo = {4, gRoute133_WaterMons};
+
+const struct WildPokemon gRoute133_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute133_FishingMonsInfo = {30, gRoute133_FishingMons};
+
+const struct WildPokemon gRoute134_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute134_WaterMonsInfo = {4, gRoute134_WaterMons};
+
+const struct WildPokemon gRoute134_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute134_FishingMonsInfo = {30, gRoute134_FishingMons};
+
+const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+
+const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo = {4, gAbandonedShip_HiddenFloorCorridors_WaterMons};
+
+const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+
+const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo = {20, gAbandonedShip_HiddenFloorCorridors_FishingMons};
+
+const struct WildPokemon gSeafloorCavern_Room1_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room1_LandMonsInfo = {4, gSeafloorCavern_Room1_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room2_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room2_LandMonsInfo = {4, gSeafloorCavern_Room2_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room3_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room3_LandMonsInfo = {4, gSeafloorCavern_Room3_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room4_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room4_LandMonsInfo = {4, gSeafloorCavern_Room4_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room5_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room5_LandMonsInfo = {4, gSeafloorCavern_Room5_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room6_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room6_LandMonsInfo = {4, gSeafloorCavern_Room6_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room6_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room6_WaterMonsInfo = {4, gSeafloorCavern_Room6_WaterMons};
+
+const struct WildPokemon gSeafloorCavern_Room6_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room6_FishingMonsInfo = {10, gSeafloorCavern_Room6_FishingMons};
+
+const struct WildPokemon gSeafloorCavern_Room7_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room7_LandMonsInfo = {4, gSeafloorCavern_Room7_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room7_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room7_WaterMonsInfo = {4, gSeafloorCavern_Room7_WaterMons};
+
+const struct WildPokemon gSeafloorCavern_Room7_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room7_FishingMonsInfo = {10, gSeafloorCavern_Room7_FishingMons};
+
+const struct WildPokemon gSeafloorCavern_Room8_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room8_LandMonsInfo = {4, gSeafloorCavern_Room8_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Entrance_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Entrance_WaterMonsInfo = {4, gSeafloorCavern_Entrance_WaterMons};
+
+const struct WildPokemon gSeafloorCavern_Entrance_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Entrance_FishingMonsInfo = {10, gSeafloorCavern_Entrance_FishingMons};
+
+const struct WildPokemon gCaveOfOrigin_Entrance_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_Entrance_LandMonsInfo = {4, gCaveOfOrigin_Entrance_LandMons};
+
+const struct WildPokemon gCaveOfOrigin_1F_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_1F_LandMonsInfo = {4, gCaveOfOrigin_1F_LandMons};
+
+const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap1_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap1_LandMons};
+
+const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap2_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap2_LandMons};
+
+const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap3_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap3_LandMons};
+
+const struct WildPokemon gNewMauville_Entrance_LandMons[] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+};
+
+const struct WildPokemonInfo gNewMauville_Entrance_LandMonsInfo = {10, gNewMauville_Entrance_LandMons};
+
+const struct WildPokemon gSafariZone_Southwest_LandMons[] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+ {27, 27, SPECIES_DODUO},
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+
+const struct WildPokemonInfo gSafariZone_Southwest_LandMonsInfo = {25, gSafariZone_Southwest_LandMons};
+
+const struct WildPokemon gSafariZone_Southwest_WaterMons[] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+};
+
+const struct WildPokemonInfo gSafariZone_Southwest_WaterMonsInfo = {9, gSafariZone_Southwest_WaterMons};
+
+const struct WildPokemon gSafariZone_Southwest_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+
+const struct WildPokemonInfo gSafariZone_Southwest_FishingMonsInfo = {35, gSafariZone_Southwest_FishingMons};
+
+const struct WildPokemon gSafariZone_North_LandMons[] =
+{
+ {27, 27, SPECIES_PHANPY},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_PHANPY},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_NATU},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_NATU},
+ {29, 29, SPECIES_XATU},
+ {27, 27, SPECIES_HERACROSS},
+ {31, 31, SPECIES_XATU},
+ {29, 29, SPECIES_HERACROSS},
+};
+
+const struct WildPokemonInfo gSafariZone_North_LandMonsInfo = {25, gSafariZone_North_LandMons};
+
+const struct WildPokemon gSafariZone_North_RockSmashMons[] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {20, 25, SPECIES_GEODUDE},
+ {25, 30, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gSafariZone_North_RockSmashMonsInfo = {25, gSafariZone_North_RockSmashMons};
+
+const struct WildPokemon gSafariZone_Northwest_LandMons[] =
+{
+ {27, 27, SPECIES_RHYHORN},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_RHYHORN},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_DODUO},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_DODUO},
+ {29, 29, SPECIES_DODRIO},
+ {27, 27, SPECIES_PINSIR},
+ {31, 31, SPECIES_DODRIO},
+ {29, 29, SPECIES_PINSIR},
+};
+
+const struct WildPokemonInfo gSafariZone_Northwest_LandMonsInfo = {25, gSafariZone_Northwest_LandMons};
+
+const struct WildPokemon gSafariZone_Northwest_WaterMons[] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_GOLDUCK},
+ {25, 40, SPECIES_GOLDUCK},
+};
+
+const struct WildPokemonInfo gSafariZone_Northwest_WaterMonsInfo = {9, gSafariZone_Northwest_WaterMons};
+
+const struct WildPokemon gSafariZone_Northwest_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+
+const struct WildPokemonInfo gSafariZone_Northwest_FishingMonsInfo = {35, gSafariZone_Northwest_FishingMons};
+
+const struct WildPokemon gVictoryRoad_B1F_LandMons[] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_LAIRON},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_GOLBAT},
+ {42, 42, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MAWILE},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MAWILE},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B1F_LandMonsInfo = {10, gVictoryRoad_B1F_LandMons};
+
+const struct WildPokemon gVictoryRoad_B1F_RockSmashMons[] =
+{
+ {30, 40, SPECIES_GRAVELER},
+ {30, 40, SPECIES_GEODUDE},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B1F_RockSmashMonsInfo = {20, gVictoryRoad_B1F_RockSmashMons};
+
+const struct WildPokemon gVictoryRoad_B2F_LandMons[] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_SABLEYE},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_LAIRON},
+ {42, 42, SPECIES_GOLBAT},
+ {42, 42, SPECIES_SABLEYE},
+ {44, 44, SPECIES_GOLBAT},
+ {44, 44, SPECIES_SABLEYE},
+ {42, 42, SPECIES_LAIRON},
+ {42, 42, SPECIES_MAWILE},
+ {44, 44, SPECIES_LAIRON},
+ {44, 44, SPECIES_MAWILE},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B2F_LandMonsInfo = {10, gVictoryRoad_B2F_LandMons};
+
+const struct WildPokemon gVictoryRoad_B2F_WaterMons[] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {25, 30, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B2F_WaterMonsInfo = {4, gVictoryRoad_B2F_WaterMons};
+
+const struct WildPokemon gVictoryRoad_B2F_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B2F_FishingMonsInfo = {30, gVictoryRoad_B2F_FishingMons};
+
+const struct WildPokemon gMeteorFalls_1F_1R_LandMons[] =
+{
+ {16, 16, SPECIES_ZUBAT},
+ {17, 17, SPECIES_ZUBAT},
+ {18, 18, SPECIES_ZUBAT},
+ {15, 15, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+ {16, 16, SPECIES_SOLROCK},
+ {18, 18, SPECIES_SOLROCK},
+ {14, 14, SPECIES_SOLROCK},
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_1R_LandMonsInfo = {10, gMeteorFalls_1F_1R_LandMons};
+
+const struct WildPokemon gMeteorFalls_1F_1R_WaterMons[] =
+{
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_1R_WaterMonsInfo = {4, gMeteorFalls_1F_1R_WaterMons};
+
+const struct WildPokemon gMeteorFalls_1F_1R_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_1R_FishingMonsInfo = {30, gMeteorFalls_1F_1R_FishingMons};
+
+const struct WildPokemon gMeteorFalls_1F_2R_LandMons[] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+ {35, 35, SPECIES_GOLBAT},
+ {39, 39, SPECIES_SOLROCK},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_2R_LandMonsInfo = {10, gMeteorFalls_1F_2R_LandMons};
+
+const struct WildPokemon gMeteorFalls_1F_2R_WaterMons[] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_2R_WaterMonsInfo = {4, gMeteorFalls_1F_2R_WaterMons};
+
+const struct WildPokemon gMeteorFalls_1F_2R_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_2R_FishingMonsInfo = {30, gMeteorFalls_1F_2R_FishingMons};
+
+const struct WildPokemon gMeteorFalls_B1F_1R_LandMons[] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+ {35, 35, SPECIES_GOLBAT},
+ {39, 39, SPECIES_SOLROCK},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_1R_LandMonsInfo = {10, gMeteorFalls_B1F_1R_LandMons};
+
+const struct WildPokemon gMeteorFalls_B1F_1R_WaterMons[] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_1R_WaterMonsInfo = {4, gMeteorFalls_B1F_1R_WaterMons};
+
+const struct WildPokemon gMeteorFalls_B1F_1R_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_1R_FishingMonsInfo = {30, gMeteorFalls_B1F_1R_FishingMons};
+
+const struct WildPokemon gShoalCave_LowTideStairsRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideStairsRoom_LandMonsInfo = {10, gShoalCave_LowTideStairsRoom_LandMons};
+
+const struct WildPokemon gShoalCave_LowTideLowerRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideLowerRoom_LandMonsInfo = {10, gShoalCave_LowTideLowerRoom_LandMons};
+
+const struct WildPokemon gShoalCave_LowTideInnerRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_LandMonsInfo = {10, gShoalCave_LowTideInnerRoom_LandMons};
+
+const struct WildPokemon gShoalCave_LowTideInnerRoom_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_WaterMonsInfo = {4, gShoalCave_LowTideInnerRoom_WaterMons};
+
+const struct WildPokemon gShoalCave_LowTideInnerRoom_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_FishingMonsInfo = {10, gShoalCave_LowTideInnerRoom_FishingMons};
+
+const struct WildPokemon gShoalCave_LowTideEntranceRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_LandMonsInfo = {10, gShoalCave_LowTideEntranceRoom_LandMons};
+
+const struct WildPokemon gShoalCave_LowTideEntranceRoom_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_WaterMonsInfo = {4, gShoalCave_LowTideEntranceRoom_WaterMons};
+
+const struct WildPokemon gShoalCave_LowTideEntranceRoom_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_FishingMonsInfo = {10, gShoalCave_LowTideEntranceRoom_FishingMons};
+
+const struct WildPokemon gLilycoveCity_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gLilycoveCity_WaterMonsInfo = {4, gLilycoveCity_WaterMons};
+
+const struct WildPokemon gLilycoveCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_STARYU},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gLilycoveCity_FishingMonsInfo = {10, gLilycoveCity_FishingMons};
+
+const struct WildPokemon gDewfordTown_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gDewfordTown_WaterMonsInfo = {4, gDewfordTown_WaterMons};
+
+const struct WildPokemon gDewfordTown_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gDewfordTown_FishingMonsInfo = {10, gDewfordTown_FishingMons};
+
+const struct WildPokemon gSlateportCity_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gSlateportCity_WaterMonsInfo = {4, gSlateportCity_WaterMons};
+
+const struct WildPokemon gSlateportCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gSlateportCity_FishingMonsInfo = {10, gSlateportCity_FishingMons};
+
+const struct WildPokemon gMossdeepCity_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gMossdeepCity_WaterMonsInfo = {4, gMossdeepCity_WaterMons};
+
+const struct WildPokemon gMossdeepCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gMossdeepCity_FishingMonsInfo = {10, gMossdeepCity_FishingMons};
+
+const struct WildPokemon gPacifidlogTown_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gPacifidlogTown_WaterMonsInfo = {4, gPacifidlogTown_WaterMons};
+
+const struct WildPokemon gPacifidlogTown_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gPacifidlogTown_FishingMonsInfo = {10, gPacifidlogTown_FishingMons};
+
+const struct WildPokemon gEverGrandeCity_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gEverGrandeCity_WaterMonsInfo = {4, gEverGrandeCity_WaterMons};
+
+const struct WildPokemon gEverGrandeCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gEverGrandeCity_FishingMonsInfo = {10, gEverGrandeCity_FishingMons};
+
+const struct WildPokemon gPetalburgCity_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+};
+
+const struct WildPokemonInfo gPetalburgCity_WaterMonsInfo = {1, gPetalburgCity_WaterMons};
+
+const struct WildPokemon gPetalburgCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+
+const struct WildPokemonInfo gPetalburgCity_FishingMonsInfo = {10, gPetalburgCity_FishingMons};
+
+const struct WildPokemon gUnderwater1_WaterMons[] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+
+const struct WildPokemonInfo gUnderwater1_WaterMonsInfo = {4, gUnderwater1_WaterMons};
+
+const struct WildPokemon gShoalCave_LowTideIceRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {26, 26, SPECIES_SNORUNT},
+ {32, 32, SPECIES_SPHEAL},
+ {30, 30, SPECIES_GOLBAT},
+ {28, 28, SPECIES_SNORUNT},
+ {32, 32, SPECIES_GOLBAT},
+ {30, 30, SPECIES_SNORUNT},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideIceRoom_LandMonsInfo = {10, gShoalCave_LowTideIceRoom_LandMons};
+
+const struct WildPokemon gSkyPillar_1F_LandMons[] =
+{
+ {33, 33, SPECIES_SABLEYE},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {34, 34, SPECIES_SABLEYE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_BANETTE},
+ {38, 38, SPECIES_BANETTE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_CLAYDOL},
+};
+
+const struct WildPokemonInfo gSkyPillar_1F_LandMonsInfo = {10, gSkyPillar_1F_LandMons};
+
+const struct WildPokemon gSootopolisCity_WaterMons[] =
+{
+ {5, 35, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {15, 25, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+};
+
+const struct WildPokemonInfo gSootopolisCity_WaterMonsInfo = {1, gSootopolisCity_WaterMons};
+
+const struct WildPokemon gSootopolisCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_GYARADOS},
+ {35, 45, SPECIES_GYARADOS},
+ {5, 45, SPECIES_GYARADOS},
+};
+
+const struct WildPokemonInfo gSootopolisCity_FishingMonsInfo = {10, gSootopolisCity_FishingMons};
+
+const struct WildPokemon gSkyPillar_3F_LandMons[] =
+{
+ {33, 33, SPECIES_SABLEYE},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {34, 34, SPECIES_SABLEYE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_BANETTE},
+ {38, 38, SPECIES_BANETTE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_CLAYDOL},
+};
+
+const struct WildPokemonInfo gSkyPillar_3F_LandMonsInfo = {10, gSkyPillar_3F_LandMons};
+
+const struct WildPokemon gSkyPillar_5F_LandMons[] =
+{
+ {33, 33, SPECIES_SABLEYE},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {34, 34, SPECIES_SABLEYE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_BANETTE},
+ {38, 38, SPECIES_BANETTE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_ALTARIA},
+ {39, 39, SPECIES_ALTARIA},
+ {39, 39, SPECIES_ALTARIA},
+};
+
+const struct WildPokemonInfo gSkyPillar_5F_LandMonsInfo = {10, gSkyPillar_5F_LandMons};
+
+const struct WildPokemon gSafariZone_Southeast_LandMons[] =
+{
+ {33, 33, SPECIES_SUNKERN},
+ {34, 34, SPECIES_MAREEP},
+ {35, 35, SPECIES_SUNKERN},
+ {36, 36, SPECIES_MAREEP},
+ {34, 34, SPECIES_AIPOM},
+ {33, 33, SPECIES_SPINARAK},
+ {35, 35, SPECIES_HOOTHOOT},
+ {34, 34, SPECIES_SNUBBULL},
+ {36, 36, SPECIES_STANTLER},
+ {37, 37, SPECIES_GLIGAR},
+ {39, 39, SPECIES_STANTLER},
+ {40, 40, SPECIES_GLIGAR},
+};
+
+const struct WildPokemonInfo gSafariZone_Southeast_LandMonsInfo = {25, gSafariZone_Southeast_LandMons};
+
+const struct WildPokemon gSafariZone_Southeast_WaterMons[] =
+{
+ {25, 30, SPECIES_WOOPER},
+ {25, 30, SPECIES_MARILL},
+ {25, 30, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {35, 40, SPECIES_QUAGSIRE},
+};
+
+const struct WildPokemonInfo gSafariZone_Southeast_WaterMonsInfo = {9, gSafariZone_Southeast_WaterMons};
+
+const struct WildPokemon gSafariZone_Southeast_FishingMons[] =
+{
+ {25, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_REMORAID},
+ {25, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_REMORAID},
+ {30, 35, SPECIES_REMORAID},
+ {30, 35, SPECIES_REMORAID},
+ {35, 40, SPECIES_OCTILLERY},
+};
+
+const struct WildPokemonInfo gSafariZone_Southeast_FishingMonsInfo = {35, gSafariZone_Southeast_FishingMons};
+
+const struct WildPokemon gSafariZone_Northeast_LandMons[] =
+{
+ {33, 33, SPECIES_AIPOM},
+ {34, 34, SPECIES_TEDDIURSA},
+ {35, 35, SPECIES_AIPOM},
+ {36, 36, SPECIES_TEDDIURSA},
+ {34, 34, SPECIES_SUNKERN},
+ {33, 33, SPECIES_LEDYBA},
+ {35, 35, SPECIES_HOOTHOOT},
+ {34, 34, SPECIES_PINECO},
+ {36, 36, SPECIES_HOUNDOUR},
+ {37, 37, SPECIES_MILTANK},
+ {39, 39, SPECIES_HOUNDOUR},
+ {40, 40, SPECIES_MILTANK},
+};
+
+const struct WildPokemonInfo gSafariZone_Northeast_LandMonsInfo = {25, gSafariZone_Northeast_LandMons};
+
+const struct WildPokemon gSafariZone_Northeast_RockSmashMons[] =
+{
+ {25, 30, SPECIES_SHUCKLE},
+ {20, 25, SPECIES_SHUCKLE},
+ {30, 35, SPECIES_SHUCKLE},
+ {30, 35, SPECIES_SHUCKLE},
+ {35, 40, SPECIES_SHUCKLE},
+};
+
+const struct WildPokemonInfo gSafariZone_Northeast_RockSmashMonsInfo = {25, gSafariZone_Northeast_RockSmashMons};
+
+const struct WildPokemon gMagmaHideout_1F_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_1F_LandMonsInfo = {10, gMagmaHideout_1F_LandMons};
+
+const struct WildPokemon gMagmaHideout_2F_1R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_2F_1R_LandMonsInfo = {10, gMagmaHideout_2F_1R_LandMons};
+
+const struct WildPokemon gMagmaHideout_2F_2R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_2F_2R_LandMonsInfo = {10, gMagmaHideout_2F_2R_LandMons};
+
+const struct WildPokemon gMagmaHideout_3F_1R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_3F_1R_LandMonsInfo = {10, gMagmaHideout_3F_1R_LandMons};
+
+const struct WildPokemon gMagmaHideout_3F_2R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_3F_2R_LandMonsInfo = {10, gMagmaHideout_3F_2R_LandMons};
+
+const struct WildPokemon gMagmaHideout_4F_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_4F_LandMonsInfo = {10, gMagmaHideout_4F_LandMons};
+
+const struct WildPokemon gMagmaHideout_3F_3R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_3F_3R_LandMonsInfo = {10, gMagmaHideout_3F_3R_LandMons};
+
+const struct WildPokemon gMagmaHideout_2F_3R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_2F_3R_LandMonsInfo = {10, gMagmaHideout_2F_3R_LandMons};
+
+const struct WildPokemon gMirageTower_1F_LandMons[] =
+{
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {22, 22, SPECIES_SANDSHREW},
+ {22, 22, SPECIES_TRAPINCH},
+ {23, 23, SPECIES_SANDSHREW},
+ {23, 23, SPECIES_TRAPINCH},
+ {24, 24, SPECIES_SANDSHREW},
+ {24, 24, SPECIES_TRAPINCH},
+};
+
+const struct WildPokemonInfo gMirageTower_1F_LandMonsInfo = {10, gMirageTower_1F_LandMons};
+
+const struct WildPokemon gMirageTower_2F_LandMons[] =
+{
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {22, 22, SPECIES_SANDSHREW},
+ {22, 22, SPECIES_TRAPINCH},
+ {23, 23, SPECIES_SANDSHREW},
+ {23, 23, SPECIES_TRAPINCH},
+ {24, 24, SPECIES_SANDSHREW},
+ {24, 24, SPECIES_TRAPINCH},
+};
+
+const struct WildPokemonInfo gMirageTower_2F_LandMonsInfo = {10, gMirageTower_2F_LandMons};
+
+const struct WildPokemon gMirageTower_3F_LandMons[] =
+{
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {22, 22, SPECIES_SANDSHREW},
+ {22, 22, SPECIES_TRAPINCH},
+ {23, 23, SPECIES_SANDSHREW},
+ {23, 23, SPECIES_TRAPINCH},
+ {24, 24, SPECIES_SANDSHREW},
+ {24, 24, SPECIES_TRAPINCH},
+};
+
+const struct WildPokemonInfo gMirageTower_3F_LandMonsInfo = {10, gMirageTower_3F_LandMons};
+
+const struct WildPokemon gMirageTower_4F_LandMons[] =
+{
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {22, 22, SPECIES_SANDSHREW},
+ {22, 22, SPECIES_TRAPINCH},
+ {23, 23, SPECIES_SANDSHREW},
+ {23, 23, SPECIES_TRAPINCH},
+ {24, 24, SPECIES_SANDSHREW},
+ {24, 24, SPECIES_TRAPINCH},
+};
+
+const struct WildPokemonInfo gMirageTower_4F_LandMonsInfo = {10, gMirageTower_4F_LandMons};
+
+const struct WildPokemon gDesertUnderpass_LandMons[] =
+{
+ {38, 38, SPECIES_DITTO},
+ {35, 35, SPECIES_WHISMUR},
+ {40, 40, SPECIES_DITTO},
+ {40, 40, SPECIES_LOUDRED},
+ {41, 41, SPECIES_DITTO},
+ {36, 36, SPECIES_WHISMUR},
+ {38, 38, SPECIES_LOUDRED},
+ {42, 42, SPECIES_DITTO},
+ {38, 38, SPECIES_WHISMUR},
+ {43, 43, SPECIES_DITTO},
+ {44, 44, SPECIES_LOUDRED},
+ {45, 45, SPECIES_DITTO},
+};
+
+const struct WildPokemonInfo gDesertUnderpass_LandMonsInfo = {10, gDesertUnderpass_LandMons};
+
+const struct WildPokemon gArtisanCave_B1F_LandMons[] =
+{
+ {40, 40, SPECIES_SMEARGLE},
+ {41, 41, SPECIES_SMEARGLE},
+ {42, 42, SPECIES_SMEARGLE},
+ {43, 43, SPECIES_SMEARGLE},
+ {44, 44, SPECIES_SMEARGLE},
+ {45, 45, SPECIES_SMEARGLE},
+ {46, 46, SPECIES_SMEARGLE},
+ {47, 47, SPECIES_SMEARGLE},
+ {48, 48, SPECIES_SMEARGLE},
+ {49, 49, SPECIES_SMEARGLE},
+ {50, 50, SPECIES_SMEARGLE},
+ {50, 50, SPECIES_SMEARGLE},
+};
+
+const struct WildPokemonInfo gArtisanCave_B1F_LandMonsInfo = {10, gArtisanCave_B1F_LandMons};
+
+const struct WildPokemon gArtisanCave_1F_LandMons[] =
+{
+ {40, 40, SPECIES_SMEARGLE},
+ {41, 41, SPECIES_SMEARGLE},
+ {42, 42, SPECIES_SMEARGLE},
+ {43, 43, SPECIES_SMEARGLE},
+ {44, 44, SPECIES_SMEARGLE},
+ {45, 45, SPECIES_SMEARGLE},
+ {46, 46, SPECIES_SMEARGLE},
+ {47, 47, SPECIES_SMEARGLE},
+ {48, 48, SPECIES_SMEARGLE},
+ {49, 49, SPECIES_SMEARGLE},
+ {50, 50, SPECIES_SMEARGLE},
+ {50, 50, SPECIES_SMEARGLE},
+};
+
+const struct WildPokemonInfo gArtisanCave_1F_LandMonsInfo = {10, gArtisanCave_1F_LandMons};
+
+const struct WildPokemon gAlteringCave1_LandMons[] =
+{
+ {10, 10, SPECIES_ZUBAT},
+ {12, 12, SPECIES_ZUBAT},
+ {8, 8, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+ {10, 10, SPECIES_ZUBAT},
+ {12, 12, SPECIES_ZUBAT},
+ {16, 16, SPECIES_ZUBAT},
+ {6, 6, SPECIES_ZUBAT},
+ {8, 8, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+ {8, 8, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+};
+
+const struct WildPokemonInfo gAlteringCave1_LandMonsInfo = {7, gAlteringCave1_LandMons};
+
+const struct WildPokemon gAlteringCave2_LandMons[] =
+{
+ {7, 7, SPECIES_MAREEP},
+ {9, 9, SPECIES_MAREEP},
+ {5, 5, SPECIES_MAREEP},
+ {11, 11, SPECIES_MAREEP},
+ {7, 7, SPECIES_MAREEP},
+ {9, 9, SPECIES_MAREEP},
+ {13, 13, SPECIES_MAREEP},
+ {3, 3, SPECIES_MAREEP},
+ {5, 5, SPECIES_MAREEP},
+ {11, 11, SPECIES_MAREEP},
+ {5, 5, SPECIES_MAREEP},
+ {11, 11, SPECIES_MAREEP},
+};
+
+const struct WildPokemonInfo gAlteringCave2_LandMonsInfo = {7, gAlteringCave2_LandMons};
+
+const struct WildPokemon gAlteringCave3_LandMons[] =
+{
+ {23, 23, SPECIES_PINECO},
+ {25, 25, SPECIES_PINECO},
+ {22, 22, SPECIES_PINECO},
+ {27, 27, SPECIES_PINECO},
+ {23, 23, SPECIES_PINECO},
+ {25, 25, SPECIES_PINECO},
+ {29, 29, SPECIES_PINECO},
+ {19, 19, SPECIES_PINECO},
+ {21, 21, SPECIES_PINECO},
+ {27, 27, SPECIES_PINECO},
+ {21, 21, SPECIES_PINECO},
+ {27, 27, SPECIES_PINECO},
+};
+
+const struct WildPokemonInfo gAlteringCave3_LandMonsInfo = {7, gAlteringCave3_LandMons};
+
+const struct WildPokemon gAlteringCave4_LandMons[] =
+{
+ {16, 16, SPECIES_HOUNDOUR},
+ {18, 18, SPECIES_HOUNDOUR},
+ {14, 14, SPECIES_HOUNDOUR},
+ {20, 20, SPECIES_HOUNDOUR},
+ {16, 16, SPECIES_HOUNDOUR},
+ {18, 18, SPECIES_HOUNDOUR},
+ {22, 22, SPECIES_HOUNDOUR},
+ {12, 12, SPECIES_HOUNDOUR},
+ {14, 14, SPECIES_HOUNDOUR},
+ {20, 20, SPECIES_HOUNDOUR},
+ {14, 14, SPECIES_HOUNDOUR},
+ {20, 20, SPECIES_HOUNDOUR},
+};
+
+const struct WildPokemonInfo gAlteringCave4_LandMonsInfo = {7, gAlteringCave4_LandMons};
+
+const struct WildPokemon gAlteringCave5_LandMons[] =
+{
+ {10, 10, SPECIES_TEDDIURSA},
+ {12, 12, SPECIES_TEDDIURSA},
+ {8, 8, SPECIES_TEDDIURSA},
+ {14, 14, SPECIES_TEDDIURSA},
+ {10, 10, SPECIES_TEDDIURSA},
+ {12, 12, SPECIES_TEDDIURSA},
+ {16, 16, SPECIES_TEDDIURSA},
+ {6, 6, SPECIES_TEDDIURSA},
+ {8, 8, SPECIES_TEDDIURSA},
+ {14, 14, SPECIES_TEDDIURSA},
+ {8, 8, SPECIES_TEDDIURSA},
+ {14, 14, SPECIES_TEDDIURSA},
+};
+
+const struct WildPokemonInfo gAlteringCave5_LandMonsInfo = {7, gAlteringCave5_LandMons};
+
+const struct WildPokemon gAlteringCave6_LandMons[] =
+{
+ {22, 22, SPECIES_AIPOM},
+ {24, 24, SPECIES_AIPOM},
+ {20, 20, SPECIES_AIPOM},
+ {26, 26, SPECIES_AIPOM},
+ {22, 22, SPECIES_AIPOM},
+ {24, 24, SPECIES_AIPOM},
+ {28, 28, SPECIES_AIPOM},
+ {18, 18, SPECIES_AIPOM},
+ {20, 20, SPECIES_AIPOM},
+ {26, 26, SPECIES_AIPOM},
+ {20, 20, SPECIES_AIPOM},
+ {26, 26, SPECIES_AIPOM},
+};
+
+const struct WildPokemonInfo gAlteringCave6_LandMonsInfo = {7, gAlteringCave6_LandMons};
+
+const struct WildPokemon gAlteringCave7_LandMons[] =
+{
+ {22, 22, SPECIES_SHUCKLE},
+ {24, 24, SPECIES_SHUCKLE},
+ {20, 20, SPECIES_SHUCKLE},
+ {26, 26, SPECIES_SHUCKLE},
+ {22, 22, SPECIES_SHUCKLE},
+ {24, 24, SPECIES_SHUCKLE},
+ {28, 28, SPECIES_SHUCKLE},
+ {18, 18, SPECIES_SHUCKLE},
+ {20, 20, SPECIES_SHUCKLE},
+ {26, 26, SPECIES_SHUCKLE},
+ {20, 20, SPECIES_SHUCKLE},
+ {26, 26, SPECIES_SHUCKLE},
+};
+
+const struct WildPokemonInfo gAlteringCave7_LandMonsInfo = {7, gAlteringCave7_LandMons};
+
+const struct WildPokemon gAlteringCave8_LandMons[] =
+{
+ {22, 22, SPECIES_STANTLER},
+ {24, 24, SPECIES_STANTLER},
+ {20, 20, SPECIES_STANTLER},
+ {26, 26, SPECIES_STANTLER},
+ {22, 22, SPECIES_STANTLER},
+ {24, 24, SPECIES_STANTLER},
+ {28, 28, SPECIES_STANTLER},
+ {18, 18, SPECIES_STANTLER},
+ {20, 20, SPECIES_STANTLER},
+ {26, 26, SPECIES_STANTLER},
+ {20, 20, SPECIES_STANTLER},
+ {26, 26, SPECIES_STANTLER},
+};
+
+const struct WildPokemonInfo gAlteringCave8_LandMonsInfo = {7, gAlteringCave8_LandMons};
+
+const struct WildPokemon gAlteringCave9_LandMons[] =
+{
+ {22, 22, SPECIES_SMEARGLE},
+ {24, 24, SPECIES_SMEARGLE},
+ {20, 20, SPECIES_SMEARGLE},
+ {26, 26, SPECIES_SMEARGLE},
+ {22, 22, SPECIES_SMEARGLE},
+ {24, 24, SPECIES_SMEARGLE},
+ {28, 28, SPECIES_SMEARGLE},
+ {18, 18, SPECIES_SMEARGLE},
+ {20, 20, SPECIES_SMEARGLE},
+ {26, 26, SPECIES_SMEARGLE},
+ {20, 20, SPECIES_SMEARGLE},
+ {26, 26, SPECIES_SMEARGLE},
+};
+
+const struct WildPokemonInfo gAlteringCave9_LandMonsInfo = {7, gAlteringCave9_LandMons};
+
+const struct WildPokemon gMeteorFalls_StevensCave_LandMons[] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+ {35, 35, SPECIES_GOLBAT},
+ {39, 39, SPECIES_SOLROCK},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_StevensCave_LandMonsInfo = {10, gMeteorFalls_StevensCave_LandMons};
+
+//The actual headers that link the encounter tables to particular maps start here.
+
+const struct WildPokemonHeader gWildMonHeaders[] =
+{
+ {
+ .mapGroup = MAP_GROUP(ROUTE101),
+ .mapNum = MAP_NUM(ROUTE101),
+ .landMonsInfo = &gRoute101_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE102),
+ .mapNum = MAP_NUM(ROUTE102),
+ .landMonsInfo = &gRoute102_LandMonsInfo,
+ .waterMonsInfo = &gRoute102_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute102_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE103),
+ .mapNum = MAP_NUM(ROUTE103),
+ .landMonsInfo = &gRoute103_LandMonsInfo,
+ .waterMonsInfo = &gRoute103_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute103_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE104),
+ .mapNum = MAP_NUM(ROUTE104),
+ .landMonsInfo = &gRoute104_LandMonsInfo,
+ .waterMonsInfo = &gRoute104_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute104_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE105),
+ .mapNum = MAP_NUM(ROUTE105),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute105_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute105_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE110),
+ .mapNum = MAP_NUM(ROUTE110),
+ .landMonsInfo = &gRoute110_LandMonsInfo,
+ .waterMonsInfo = &gRoute110_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute110_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE111),
+ .mapNum = MAP_NUM(ROUTE111),
+ .landMonsInfo = &gRoute111_LandMonsInfo,
+ .waterMonsInfo = &gRoute111_WaterMonsInfo,
+ .rockSmashMonsInfo = &gRoute111_RockSmashMonsInfo,
+ .fishingMonsInfo = &gRoute111_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE112),
+ .mapNum = MAP_NUM(ROUTE112),
+ .landMonsInfo = &gRoute112_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE113),
+ .mapNum = MAP_NUM(ROUTE113),
+ .landMonsInfo = &gRoute113_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE114),
+ .mapNum = MAP_NUM(ROUTE114),
+ .landMonsInfo = &gRoute114_LandMonsInfo,
+ .waterMonsInfo = &gRoute114_WaterMonsInfo,
+ .rockSmashMonsInfo = &gRoute114_RockSmashMonsInfo,
+ .fishingMonsInfo = &gRoute114_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE116),
+ .mapNum = MAP_NUM(ROUTE116),
+ .landMonsInfo = &gRoute116_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE117),
+ .mapNum = MAP_NUM(ROUTE117),
+ .landMonsInfo = &gRoute117_LandMonsInfo,
+ .waterMonsInfo = &gRoute117_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute117_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE118),
+ .mapNum = MAP_NUM(ROUTE118),
+ .landMonsInfo = &gRoute118_LandMonsInfo,
+ .waterMonsInfo = &gRoute118_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute118_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE124),
+ .mapNum = MAP_NUM(ROUTE124),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute124_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute124_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(PETALBURG_WOODS),
+ .mapNum = MAP_NUM(PETALBURG_WOODS),
+ .landMonsInfo = &gPetalburgWoods_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(RUSTURF_TUNNEL),
+ .mapNum = MAP_NUM(RUSTURF_TUNNEL),
+ .landMonsInfo = &gRusturfTunnel_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(GRANITE_CAVE_1F),
+ .mapNum = MAP_NUM(GRANITE_CAVE_1F),
+ .landMonsInfo = &gGraniteCave_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(GRANITE_CAVE_B1F),
+ .mapNum = MAP_NUM(GRANITE_CAVE_B1F),
+ .landMonsInfo = &gGraniteCave_B1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_1F),
+ .mapNum = MAP_NUM(MT_PYRE_1F),
+ .landMonsInfo = &gMtPyre_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(VICTORY_ROAD_1F),
+ .mapNum = MAP_NUM(VICTORY_ROAD_1F),
+ .landMonsInfo = &gVictoryRoad_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTH),
+ .mapNum = MAP_NUM(SAFARI_ZONE_SOUTH),
+ .landMonsInfo = &gSafariZone_South_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(UNDERWATER2),
+ .mapNum = MAP_NUM(UNDERWATER2),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gUnderwater2_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ABANDONED_SHIP_ROOMS_B1F),
+ .mapNum = MAP_NUM(ABANDONED_SHIP_ROOMS_B1F),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gAbandonedShip_Rooms_B1F_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gAbandonedShip_Rooms_B1F_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(GRANITE_CAVE_B2F),
+ .mapNum = MAP_NUM(GRANITE_CAVE_B2F),
+ .landMonsInfo = &gGraniteCave_B2F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = &gGraniteCave_B2F_RockSmashMonsInfo,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(FIERY_PATH),
+ .mapNum = MAP_NUM(FIERY_PATH),
+ .landMonsInfo = &gFieryPath_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_2R),
+ .mapNum = MAP_NUM(METEOR_FALLS_B1F_2R),
+ .landMonsInfo = &gMeteorFalls_B1F_2R_LandMonsInfo,
+ .waterMonsInfo = &gMeteorFalls_B1F_2R_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMeteorFalls_B1F_2R_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(JAGGED_PASS),
+ .mapNum = MAP_NUM(JAGGED_PASS),
+ .landMonsInfo = &gJaggedPass_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE106),
+ .mapNum = MAP_NUM(ROUTE106),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute106_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute106_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE107),
+ .mapNum = MAP_NUM(ROUTE107),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute107_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute107_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE108),
+ .mapNum = MAP_NUM(ROUTE108),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute108_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute108_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE109),
+ .mapNum = MAP_NUM(ROUTE109),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute109_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute109_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE115),
+ .mapNum = MAP_NUM(ROUTE115),
+ .landMonsInfo = &gRoute115_LandMonsInfo,
+ .waterMonsInfo = &gRoute115_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute115_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(NEW_MAUVILLE_INSIDE),
+ .mapNum = MAP_NUM(NEW_MAUVILLE_INSIDE),
+ .landMonsInfo = &gNewMauville_Inside_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE119),
+ .mapNum = MAP_NUM(ROUTE119),
+ .landMonsInfo = &gRoute119_LandMonsInfo,
+ .waterMonsInfo = &gRoute119_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute119_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE120),
+ .mapNum = MAP_NUM(ROUTE120),
+ .landMonsInfo = &gRoute120_LandMonsInfo,
+ .waterMonsInfo = &gRoute120_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute120_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE121),
+ .mapNum = MAP_NUM(ROUTE121),
+ .landMonsInfo = &gRoute121_LandMonsInfo,
+ .waterMonsInfo = &gRoute121_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute121_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE122),
+ .mapNum = MAP_NUM(ROUTE122),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute122_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute122_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE123),
+ .mapNum = MAP_NUM(ROUTE123),
+ .landMonsInfo = &gRoute123_LandMonsInfo,
+ .waterMonsInfo = &gRoute123_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute123_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_2F),
+ .mapNum = MAP_NUM(MT_PYRE_2F),
+ .landMonsInfo = &gMtPyre_2F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_3F),
+ .mapNum = MAP_NUM(MT_PYRE_3F),
+ .landMonsInfo = &gMtPyre_3F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_4F),
+ .mapNum = MAP_NUM(MT_PYRE_4F),
+ .landMonsInfo = &gMtPyre_4F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_5F),
+ .mapNum = MAP_NUM(MT_PYRE_5F),
+ .landMonsInfo = &gMtPyre_5F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_6F),
+ .mapNum = MAP_NUM(MT_PYRE_6F),
+ .landMonsInfo = &gMtPyre_6F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_EXTERIOR),
+ .mapNum = MAP_NUM(MT_PYRE_EXTERIOR),
+ .landMonsInfo = &gMtPyre_Exterior_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_SUMMIT),
+ .mapNum = MAP_NUM(MT_PYRE_SUMMIT),
+ .landMonsInfo = &gMtPyre_Summit_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(GRANITE_CAVE_STEVENS_ROOM),
+ .mapNum = MAP_NUM(GRANITE_CAVE_STEVENS_ROOM),
+ .landMonsInfo = &gGraniteCave_StevensRoom_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE125),
+ .mapNum = MAP_NUM(ROUTE125),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute125_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute125_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE126),
+ .mapNum = MAP_NUM(ROUTE126),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute126_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute126_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE127),
+ .mapNum = MAP_NUM(ROUTE127),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute127_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute127_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE128),
+ .mapNum = MAP_NUM(ROUTE128),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute128_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute128_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE129),
+ .mapNum = MAP_NUM(ROUTE129),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute129_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute129_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE130),
+ .mapNum = MAP_NUM(ROUTE130),
+ .landMonsInfo = &gRoute130_LandMonsInfo,
+ .waterMonsInfo = &gRoute130_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute130_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE131),
+ .mapNum = MAP_NUM(ROUTE131),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute131_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute131_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE132),
+ .mapNum = MAP_NUM(ROUTE132),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute132_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute132_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE133),
+ .mapNum = MAP_NUM(ROUTE133),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute133_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute133_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE134),
+ .mapNum = MAP_NUM(ROUTE134),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute134_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute134_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
+ .mapNum = MAP_NUM(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM1),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM1),
+ .landMonsInfo = &gSeafloorCavern_Room1_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM2),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM2),
+ .landMonsInfo = &gSeafloorCavern_Room2_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM3),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM3),
+ .landMonsInfo = &gSeafloorCavern_Room3_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM4),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM4),
+ .landMonsInfo = &gSeafloorCavern_Room4_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM5),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM5),
+ .landMonsInfo = &gSeafloorCavern_Room5_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM6),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM6),
+ .landMonsInfo = &gSeafloorCavern_Room6_LandMonsInfo,
+ .waterMonsInfo = &gSeafloorCavern_Room6_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSeafloorCavern_Room6_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM7),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM7),
+ .landMonsInfo = &gSeafloorCavern_Room7_LandMonsInfo,
+ .waterMonsInfo = &gSeafloorCavern_Room7_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSeafloorCavern_Room7_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM8),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM8),
+ .landMonsInfo = &gSeafloorCavern_Room8_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ENTRANCE),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ENTRANCE),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gSeafloorCavern_Entrance_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSeafloorCavern_Entrance_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_ENTRANCE),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_ENTRANCE),
+ .landMonsInfo = &gCaveOfOrigin_Entrance_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_1F),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_1F),
+ .landMonsInfo = &gCaveOfOrigin_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
+ .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
+ .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
+ .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(NEW_MAUVILLE_ENTRANCE),
+ .mapNum = MAP_NUM(NEW_MAUVILLE_ENTRANCE),
+ .landMonsInfo = &gNewMauville_Entrance_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHWEST),
+ .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHWEST),
+ .landMonsInfo = &gSafariZone_Southwest_LandMonsInfo,
+ .waterMonsInfo = &gSafariZone_Southwest_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSafariZone_Southwest_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTH),
+ .mapNum = MAP_NUM(SAFARI_ZONE_NORTH),
+ .landMonsInfo = &gSafariZone_North_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = &gSafariZone_North_RockSmashMonsInfo,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHWEST),
+ .mapNum = MAP_NUM(SAFARI_ZONE_NORTHWEST),
+ .landMonsInfo = &gSafariZone_Northwest_LandMonsInfo,
+ .waterMonsInfo = &gSafariZone_Northwest_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSafariZone_Northwest_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(VICTORY_ROAD_B1F),
+ .mapNum = MAP_NUM(VICTORY_ROAD_B1F),
+ .landMonsInfo = &gVictoryRoad_B1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = &gVictoryRoad_B1F_RockSmashMonsInfo,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(VICTORY_ROAD_B2F),
+ .mapNum = MAP_NUM(VICTORY_ROAD_B2F),
+ .landMonsInfo = &gVictoryRoad_B2F_LandMonsInfo,
+ .waterMonsInfo = &gVictoryRoad_B2F_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gVictoryRoad_B2F_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_1F_1R),
+ .mapNum = MAP_NUM(METEOR_FALLS_1F_1R),
+ .landMonsInfo = &gMeteorFalls_1F_1R_LandMonsInfo,
+ .waterMonsInfo = &gMeteorFalls_1F_1R_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMeteorFalls_1F_1R_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_1F_2R),
+ .mapNum = MAP_NUM(METEOR_FALLS_1F_2R),
+ .landMonsInfo = &gMeteorFalls_1F_2R_LandMonsInfo,
+ .waterMonsInfo = &gMeteorFalls_1F_2R_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMeteorFalls_1F_2R_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_1R),
+ .mapNum = MAP_NUM(METEOR_FALLS_B1F_1R),
+ .landMonsInfo = &gMeteorFalls_B1F_1R_LandMonsInfo,
+ .waterMonsInfo = &gMeteorFalls_B1F_1R_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMeteorFalls_B1F_1R_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideStairsRoom_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideLowerRoom_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideInnerRoom_LandMonsInfo,
+ .waterMonsInfo = &gShoalCave_LowTideInnerRoom_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gShoalCave_LowTideInnerRoom_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideEntranceRoom_LandMonsInfo,
+ .waterMonsInfo = &gShoalCave_LowTideEntranceRoom_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gShoalCave_LowTideEntranceRoom_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(LILYCOVE_CITY),
+ .mapNum = MAP_NUM(LILYCOVE_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gLilycoveCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gLilycoveCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(DEWFORD_TOWN),
+ .mapNum = MAP_NUM(DEWFORD_TOWN),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gDewfordTown_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gDewfordTown_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SLATEPORT_CITY),
+ .mapNum = MAP_NUM(SLATEPORT_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gSlateportCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSlateportCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(MOSSDEEP_CITY),
+ .mapNum = MAP_NUM(MOSSDEEP_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gMossdeepCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMossdeepCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(PACIFIDLOG_TOWN),
+ .mapNum = MAP_NUM(PACIFIDLOG_TOWN),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gPacifidlogTown_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gPacifidlogTown_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(EVER_GRANDE_CITY),
+ .mapNum = MAP_NUM(EVER_GRANDE_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gEverGrandeCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gEverGrandeCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(PETALBURG_CITY),
+ .mapNum = MAP_NUM(PETALBURG_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gPetalburgCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gPetalburgCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(UNDERWATER1),
+ .mapNum = MAP_NUM(UNDERWATER1),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gUnderwater1_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideIceRoom_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SKY_PILLAR_1F),
+ .mapNum = MAP_NUM(SKY_PILLAR_1F),
+ .landMonsInfo = &gSkyPillar_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SOOTOPOLIS_CITY),
+ .mapNum = MAP_NUM(SOOTOPOLIS_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gSootopolisCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSootopolisCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SKY_PILLAR_3F),
+ .mapNum = MAP_NUM(SKY_PILLAR_3F),
+ .landMonsInfo = &gSkyPillar_3F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SKY_PILLAR_5F),
+ .mapNum = MAP_NUM(SKY_PILLAR_5F),
+ .landMonsInfo = &gSkyPillar_5F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHEAST),
+ .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHEAST),
+ .landMonsInfo = &gSafariZone_Southeast_LandMonsInfo,
+ .waterMonsInfo = &gSafariZone_Southeast_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSafariZone_Southeast_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHEAST),
+ .mapNum = MAP_NUM(SAFARI_ZONE_NORTHEAST),
+ .landMonsInfo = &gSafariZone_Northeast_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = &gSafariZone_Northeast_RockSmashMonsInfo,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_1F),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_1F),
+ .landMonsInfo = &gMagmaHideout_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_1R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_1R),
+ .landMonsInfo = &gMagmaHideout_2F_1R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_2R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_2R),
+ .landMonsInfo = &gMagmaHideout_2F_2R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_1R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_1R),
+ .landMonsInfo = &gMagmaHideout_3F_1R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_2R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_2R),
+ .landMonsInfo = &gMagmaHideout_3F_2R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_4F),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_4F),
+ .landMonsInfo = &gMagmaHideout_4F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_3R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_3R),
+ .landMonsInfo = &gMagmaHideout_3F_3R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_3R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_3R),
+ .landMonsInfo = &gMagmaHideout_2F_3R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MIRAGE_TOWER_1F),
+ .mapNum = MAP_NUM(MIRAGE_TOWER_1F),
+ .landMonsInfo = &gMirageTower_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MIRAGE_TOWER_2F),
+ .mapNum = MAP_NUM(MIRAGE_TOWER_2F),
+ .landMonsInfo = &gMirageTower_2F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MIRAGE_TOWER_3F),
+ .mapNum = MAP_NUM(MIRAGE_TOWER_3F),
+ .landMonsInfo = &gMirageTower_3F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MIRAGE_TOWER_4F),
+ .mapNum = MAP_NUM(MIRAGE_TOWER_4F),
+ .landMonsInfo = &gMirageTower_4F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(DESERT_UNDERPASS),
+ .mapNum = MAP_NUM(DESERT_UNDERPASS),
+ .landMonsInfo = &gDesertUnderpass_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ARTISAN_CAVE_B1F),
+ .mapNum = MAP_NUM(ARTISAN_CAVE_B1F),
+ .landMonsInfo = &gArtisanCave_B1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ARTISAN_CAVE_1F),
+ .mapNum = MAP_NUM(ARTISAN_CAVE_1F),
+ .landMonsInfo = &gArtisanCave_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave1_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave2_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave3_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave4_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave5_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave6_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave7_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave8_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave9_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_STEVENS_CAVE),
+ .mapNum = MAP_NUM(METEOR_FALLS_STEVENS_CAVE),
+ .landMonsInfo = &gMeteorFalls_StevensCave_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(UNDEFINED),
+ .mapNum = MAP_NUM(UNDEFINED),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+};
+
+//Battle Pyramid-specific tables and headers start here.
+
+const struct WildPokemon gBattlePyramidPlaceholders_1[] =
+{
+ {5, 5, SPECIES_BULBASAUR},
+ {5, 5, SPECIES_BULBASAUR},
+ {5, 5, SPECIES_BULBASAUR},
+ {5, 5, SPECIES_BULBASAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_CHARMANDER},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_1Info = {4, gBattlePyramidPlaceholders_1};
+
+const struct WildPokemon gBattlePyramidPlaceholders_2[] =
+{
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMANDER},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_2Info = {4, gBattlePyramidPlaceholders_2};
+
+const struct WildPokemon gBattlePyramidPlaceholders_3[] =
+{
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARIZARD},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_3Info = {4, gBattlePyramidPlaceholders_3};
+
+const struct WildPokemon gBattlePyramidPlaceholders_4[] =
+{
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_SQUIRTLE},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_4Info = {4, gBattlePyramidPlaceholders_4};
+
+const struct WildPokemon gBattlePyramidPlaceholders_5[] =
+{
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_WARTORTLE},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_5Info = {4, gBattlePyramidPlaceholders_5};
+
+const struct WildPokemon gBattlePyramidPlaceholders_6[] =
+{
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_6Info = {4, gBattlePyramidPlaceholders_6};
+
+const struct WildPokemon gBattlePyramidPlaceholders_7[] =
+{
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_7Info = {8, gBattlePyramidPlaceholders_7};
+
+const struct WildPokemonHeader gBattlePyramidWildMonHeaders[] =
+{
+ {
+ .mapGroup = 0,
+ .mapNum = 1,
+ .landMonsInfo = &gBattlePyramidPlaceholders_1Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 2,
+ .landMonsInfo = &gBattlePyramidPlaceholders_2Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 3,
+ .landMonsInfo = &gBattlePyramidPlaceholders_3Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 4,
+ .landMonsInfo = &gBattlePyramidPlaceholders_4Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 5,
+ .landMonsInfo = &gBattlePyramidPlaceholders_5Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 6,
+ .landMonsInfo = &gBattlePyramidPlaceholders_6Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 7,
+ .landMonsInfo = &gBattlePyramidPlaceholders_7Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 255,
+ .mapNum = 255,
+ .landMonsInfo = NULL,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+};
+
+//Battle Pike-specific tables and headers start here.
+
+const struct WildPokemon gBattlePikeMons_1[] =
+{
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+};
+
+const struct WildPokemonInfo gBattlePikeMonsInfo_1 = {10, gBattlePikeMons_1};
+
+const struct WildPokemon gBattlePikeMons_2[] =
+{
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+};
+
+const struct WildPokemonInfo gBattlePikeMonsInfo_2 = {10, gBattlePikeMons_2};
+
+const struct WildPokemon gBattlePikeMons_3[] =
+{
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+};
+
+const struct WildPokemonInfo gBattlePikeMonsInfo_3 = {10, gBattlePikeMons_3};
+
+const struct WildPokemon gBattlePikeMons_4[] =
+{
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+};
+
+const struct WildPokemonInfo gBattlePikeMonsInfo_4 = {10, gBattlePikeMons_4};
+
+const struct WildPokemonHeader gBattlePikeWildMonHeaders[] =
+{
+ {
+ .mapGroup = 0,
+ .mapNum = 1,
+ .landMonsInfo = &gBattlePikeMonsInfo_1,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 2,
+ .landMonsInfo = &gBattlePikeMonsInfo_2,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 3,
+ .landMonsInfo = &gBattlePikeMonsInfo_3,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 4,
+ .landMonsInfo = &gBattlePikeMonsInfo_4,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 255,
+ .mapNum = 255,
+ .landMonsInfo = NULL,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+};
+
+//Special Feebas-related data.
+
+const struct WildPokemon gWildFeebasRoute119Data = {20, 25, SPECIES_FEEBAS};
+
+const u16 gRoute119WaterTileData[] =
+{
+ 0, 0x2D, 0,
+ 0x2E, 0x5B, 0x83,
+ 0x5C, 0x8B, 0x12A,
+};
+
diff --git a/src/decoration.c b/src/decoration.c
index 8453a055d..addca6954 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -16,7 +16,7 @@
#include "field_weather.h"
#include "field_player_avatar.h"
#include "field_camera.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "event_object_movement.h"
#include "list_menu.h"
#include "menu_helpers.h"
diff --git a/src/dragon.c b/src/dragon.c
index 49f1b57c8..68577988e 100644
--- a/src/dragon.c
+++ b/src/dragon.c
@@ -208,13 +208,13 @@ void sub_8113064(struct Sprite *sprite)
sprite->data[3] = gBattleAnimArgs[4];
sprite->data[5] = gBattleAnimArgs[5];
sprite->invisible = 1;
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80A66DC;
}
static void sub_8113100(struct Sprite *sprite)
{
- sub_80A6838(sprite);
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -235,7 +235,7 @@ static void sub_8113100(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
}
void sub_81131B4(struct Sprite *sprite)
@@ -251,10 +251,10 @@ void sub_81131B4(struct Sprite *sprite)
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
}
- sub_80A6864(sprite, gBattleAnimArgs[1]);
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[1]);
sprite->pos1.y += gBattleAnimArgs[2];
- sprite->callback = sub_80A67D8;
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
}
void sub_8113224(struct Sprite *sprite)
@@ -329,7 +329,7 @@ void sub_81133E8(u8 taskId)
struct Task *task = &gTasks[taskId];
u16 i;
u8 r1;
- if (sub_80A8364(gBattleAnimAttacker) == 1)
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
{
sp.dmaDest = &REG_BG1HOFS;
task->data[2] = gBattle_BG1_X;
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 25ef069e4..c4bc02e42 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -51,6 +51,9 @@ EWRAM_DATA struct
u16 ecWordBuffer[9];
} *gUnknown_0203A118 = NULL;
+EWRAM_DATA void *gUnknown_0203A11C = 0;
+EWRAM_DATA void *gUnknown_0203A120 = 0;
+
// Static ROM declarations
static void sub_811A2C0(u8);
diff --git a/src/effects_1.c b/src/effects_1.c
deleted file mode 100644
index a8687bc38..000000000
--- a/src/effects_1.c
+++ /dev/null
@@ -1,2093 +0,0 @@
-#include "global.h"
-#include "battle_anim.h"
-#include "constants/rgb.h"
-
-extern void sub_80FE840(struct Sprite *);
-extern void sub_80FE8E0(struct Sprite *);
-extern void sub_80FE930(struct Sprite *);
-extern void sub_80FE988(struct Sprite *);
-extern void sub_80FEAD8(struct Sprite *);
-extern void sub_80FEB44(struct Sprite *);
-extern void sub_80FEC48(struct Sprite *);
-extern void sub_80FED28(struct Sprite *);
-extern void sub_80FEE78(struct Sprite *);
-extern void sub_80FEF44(struct Sprite *);
-extern void sub_80FEFFC(struct Sprite *);
-extern void AnimMoveTwisterParticle(struct Sprite *);
-extern void sub_80FF0F4(struct Sprite *);
-extern void sub_80FF374(struct Sprite *);
-extern void sub_80FF698(struct Sprite *);
-extern void sub_80FF768(struct Sprite *);
-extern void sub_80FF7EC(struct Sprite *);
-extern void sub_80FF934(struct Sprite *);
-extern void sub_80FFB18(struct Sprite *);
-extern void sub_80FFBF4(struct Sprite *);
-extern void sub_80FFC70(struct Sprite *);
-extern void sub_80FFCB4(struct Sprite *);
-extern void sub_80FFDBC(struct Sprite *);
-extern void sub_8100640(struct Sprite *);
-extern void sub_8100898(struct Sprite *);
-extern void sub_8100A50(struct Sprite *);
-extern void sub_81009F8(struct Sprite *);
-extern void sub_8100A94(struct Sprite *);
-extern void sub_8100AE0(struct Sprite *);
-extern void sub_8100B88(struct Sprite *);
-extern void sub_8100E1C(struct Sprite *);
-extern void sub_8100EF0(struct Sprite *);
-extern void sub_81010CC(struct Sprite *);
-extern void sub_810130C(struct Sprite *);
-extern void sub_810135C(struct Sprite *);
-extern void sub_8101440(struct Sprite *);
-extern void sub_81014F4(struct Sprite *);
-extern void sub_81015AC(struct Sprite *);
-extern void sub_8101898(struct Sprite *);
-extern void sub_8101940(struct Sprite *);
-extern void sub_8101B90(struct Sprite *);
-extern void sub_8101F40(struct Sprite *);
-extern void sub_8101FA8(struct Sprite *);
-extern void sub_8101FF0(struct Sprite *);
-extern void sub_81020D8(struct Sprite *);
-extern void sub_810217C(struct Sprite *);
-extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
-extern void sub_80A77C8(struct Sprite *);
-extern void sub_8102268(struct Sprite *);
-extern void sub_810234C(struct Sprite *);
-extern void sub_81024E0(struct Sprite *);
-extern void sub_8102540(struct Sprite *);
-extern void sub_80A77C8(struct Sprite *);
-extern void sub_8102844(struct Sprite *);
-extern void sub_8102BCC(struct Sprite *);
-extern void sub_8102CD4(struct Sprite *);
-extern void sub_8102EB0(struct Sprite *);
-extern void sub_8102FB8(struct Sprite *);
-extern void sub_8103028(struct Sprite *);
-extern void sub_8103164(struct Sprite *);
-extern void sub_8103208(struct Sprite *);
-extern void sub_8103284(struct Sprite *);
-extern void sub_8103390(struct Sprite *);
-
-const union AnimCmd gUnknown_085920F0[] =
-{
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_FRAME(2, 5),
- ANIMCMD_FRAME(4, 5),
- ANIMCMD_FRAME(6, 5),
- ANIMCMD_FRAME(8, 5),
- ANIMCMD_FRAME(10, 5),
- ANIMCMD_FRAME(12, 5),
- ANIMCMD_FRAME(14, 5),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd *const gUnknown_08592114[] =
-{
- gUnknown_085920F0,
-};
-
-const struct SpriteTemplate gSleepPowderParticleSpriteTemplate =
-{
- .tileTag = ANIM_TAG_SLEEP_POWDER,
- .paletteTag = ANIM_TAG_SLEEP_POWDER,
- .oam = &gUnknown_08524944,
- .anims = gUnknown_08592114,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FE840,
-};
-
-const struct SpriteTemplate gStunSporeParticleSpriteTemplate =
-{
- .tileTag = ANIM_TAG_STUN_SPORE,
- .paletteTag = ANIM_TAG_STUN_SPORE,
- .oam = &gUnknown_08524944,
- .anims = gUnknown_08592114,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FE840,
-};
-
-const struct SpriteTemplate gPoisonPowderParticleSpriteTemplate =
-{
- .tileTag = ANIM_TAG_POISON_POWDER,
- .paletteTag = ANIM_TAG_POISON_POWDER,
- .oam = &gUnknown_08524944,
- .anims = gUnknown_08592114,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FE840,
-};
-
-const union AnimCmd gUnknown_08592160[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592168[] =
-{
- ANIMCMD_FRAME(1, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592170[] =
-{
- ANIMCMD_FRAME(2, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592178[] =
-{
- ANIMCMD_FRAME(3, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592180[] =
-{
- ANIMCMD_FRAME(4, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592188[] =
-{
- ANIMCMD_FRAME(5, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592190[] =
-{
- ANIMCMD_FRAME(6, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592198[] =
-{
- ANIMCMD_FRAME(7, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085921A0[] =
-{
- ANIMCMD_FRAME(8, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_085921A8[] =
-{
- gUnknown_08592160,
- gUnknown_08592168,
- gUnknown_08592170,
- gUnknown_08592178,
- gUnknown_08592180,
- gUnknown_08592188,
- gUnknown_08592190,
-};
-
-const union AnimCmd *const gUnknown_085921C4[] =
-{
- gUnknown_08592198,
-};
-
-const union AnimCmd *const gUnknown_085921C8[] =
-{
- gUnknown_085921A0,
-};
-
-const union AffineAnimCmd gUnknown_085921CC[] = {
- AFFINEANIMCMD_FRAME(-5, -5, 0, 1),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gUnknown_085921DC[] = {
- gUnknown_085921CC,
-};
-
-const struct SpriteTemplate gUnknown_085921E0 =
-{
- .tileTag = ANIM_TAG_ORBS,
- .paletteTag = ANIM_TAG_ORBS,
- .oam = &gUnknown_08524A8C,
- .anims = gUnknown_085921C8,
- .images = NULL,
- .affineAnims = gUnknown_085921DC,
- .callback = sub_80FE8E0,
-};
-
-const struct SpriteTemplate gUnknown_085921F8 =
-{
- .tileTag = ANIM_TAG_ORBS,
- .paletteTag = ANIM_TAG_ORBS,
- .oam = &gUnknown_08524904,
- .anims = gUnknown_085921A8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FE930,
-};
-
-const struct SpriteTemplate gUnknown_08592210 =
-{
- .tileTag = ANIM_TAG_ORBS,
- .paletteTag = ANIM_TAG_ORBS,
- .oam = &gUnknown_08524904,
- .anims = gUnknown_085921C4,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FE988,
-};
-
-const union AffineAnimCmd gUnknown_08592228[] = {
- AFFINEANIMCMD_FRAME(320, 320, 0, 0),
- AFFINEANIMCMD_FRAME(-14, -14, 0, 1),
- AFFINEANIMCMD_JUMP(1),
-};
-
-const union AffineAnimCmd *const gUnknown_08592240[] = {
- gUnknown_08592228,
-};
-
-const struct SpriteTemplate gUnknown_08592244 =
-{
- .tileTag = ANIM_TAG_GRAY_ORB,
- .paletteTag = ANIM_TAG_GRAY_ORB,
- .oam = &gUnknown_085249C4,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08592240,
- .callback = sub_80FE8E0,
-};
-
-const union AffineAnimCmd gUnknown_0859225C[] = {
- AFFINEANIMCMD_FRAME(-5, -5, 0, 1),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gUnknown_0859226C[] = {
- gUnknown_0859225C,
-};
-
-const struct SpriteTemplate gUnknown_08592270 =
-{
- .tileTag = ANIM_TAG_ORBS,
- .paletteTag = ANIM_TAG_ORBS,
- .oam = &gUnknown_08524A8C,
- .anims = gUnknown_085921C8,
- .images = NULL,
- .affineAnims = gUnknown_0859226C,
- .callback = sub_80FEAD8,
-};
-
-const struct SpriteTemplate gUnknown_08592288 =
-{
- .tileTag = ANIM_TAG_ORBS,
- .paletteTag = ANIM_TAG_ORBS,
- .oam = &gUnknown_08524904,
- .anims = gUnknown_085921A8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FEB44,
-};
-
-const union AnimCmd gUnknown_085922A0[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085922A8[] =
-{
- ANIMCMD_FRAME(4, 7),
- ANIMCMD_FRAME(8, 7),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd *const gUnknown_085922B4[] =
-{
- gUnknown_085922A0,
- gUnknown_085922A8,
-};
-
-const struct SpriteTemplate gLeechSeedSpriteTemplate =
-{
- .tileTag = ANIM_TAG_SEED,
- .paletteTag = ANIM_TAG_SEED,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_085922B4,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FEC48,
-};
-
-const union AnimCmd gUnknown_085922D4[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085922DC[] =
-{
- ANIMCMD_FRAME(4, 7),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_085922E4[] =
-{
- gUnknown_085922D4,
- gUnknown_085922DC,
-};
-
-const struct SpriteTemplate gUnknown_085922EC =
-{
- .tileTag = ANIM_TAG_SPORE,
- .paletteTag = ANIM_TAG_SPORE,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_085922E4,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FED28,
-};
-
-const union AnimCmd gUnknown_08592304[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_0859230C[] =
-{
- ANIMCMD_FRAME(4, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592314[] =
-{
- gUnknown_08592304,
-};
-
-const union AnimCmd *const gUnknown_08592318[] =
-{
- gUnknown_0859230C,
-};
-
-const struct SpriteTemplate gUnknown_0859231C =
-{
- .tileTag = ANIM_TAG_FLOWER,
- .paletteTag = ANIM_TAG_FLOWER,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_08592314,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FEE78,
-};
-
-const struct SpriteTemplate gUnknown_08592334 =
-{
- .tileTag = ANIM_TAG_FLOWER,
- .paletteTag = ANIM_TAG_FLOWER,
- .oam = &gUnknown_08524904,
- .anims = gUnknown_08592318,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FEF44,
-};
-
-const union AnimCmd gUnknown_0859234C[] =
-{
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_FRAME(4, 5),
- ANIMCMD_FRAME(8, 5),
- ANIMCMD_FRAME(12, 5),
- ANIMCMD_FRAME(16, 5),
- ANIMCMD_FRAME(20, 5),
- ANIMCMD_FRAME(16, 5),
- ANIMCMD_FRAME(12, 5),
- ANIMCMD_FRAME(8, 5),
- ANIMCMD_FRAME(4, 5),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd gUnknown_08592378[] =
-{
- ANIMCMD_FRAME(24, 5),
- ANIMCMD_FRAME(28, 5),
- ANIMCMD_FRAME(32, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592388[] =
-{
- gUnknown_0859234C,
- gUnknown_08592378,
-};
-
-const struct SpriteTemplate gUnknown_08592390 =
-{
- .tileTag = ANIM_TAG_LEAF,
- .paletteTag = ANIM_TAG_LEAF,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_08592388,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FEFFC,
-};
-
-const struct SpriteTemplate gUnknown_085923A8 =
-{
- .tileTag = ANIM_TAG_LEAF,
- .paletteTag = ANIM_TAG_LEAF,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_08592388,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimMoveTwisterParticle,
-};
-
-const union AnimCmd gUnknown_085923C0[] =
-{
- ANIMCMD_FRAME(0, 3),
- ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 3, .vFlip = TRUE),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd *const gUnknown_085923D4[] =
-{
- gUnknown_085923C0,
-};
-
-const struct SpriteTemplate gUnknown_085923D8 =
-{
- .tileTag = ANIM_TAG_RAZOR_LEAF,
- .paletteTag = ANIM_TAG_RAZOR_LEAF,
- .oam = &gUnknown_08524934,
- .anims = gUnknown_085923D4,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FF0F4,
-};
-
-const union AffineAnimCmd gUnknown_085923F0[] = {
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gUnknown_08592400[] = {
- gUnknown_085923F0,
-};
-
-const struct SpriteTemplate gSwiftStarSpriteTemplate =
-{
- .tileTag = ANIM_TAG_YELLOW_STAR,
- .paletteTag = ANIM_TAG_YELLOW_STAR,
- .oam = &gUnknown_08524974,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08592400,
- .callback = sub_80FF0F4,
-};
-
-const union AnimCmd gUnknown_0859241C[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(64, 4),
- ANIMCMD_FRAME(96, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592430[] =
-{
- ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(64, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(96, 4, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592444[] =
-{
- gUnknown_0859241C,
- gUnknown_08592430,
-};
-
-const union AffineAnimCmd gUnknown_0859244C[] = {
- AFFINEANIMCMD_FRAME(256, 256, 0, 0),
- AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
- AFFINEANIMCMD_FRAME(11, 0, 0, 6),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_0859246C[] = {
- AFFINEANIMCMD_FRAME(-256, 256, 0, 0),
- AFFINEANIMCMD_FRAME(11, 0, 0, 6),
- AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_0859248C[] = {
- gUnknown_0859244C,
- gUnknown_0859246C,
-};
-
-const struct SpriteTemplate gUnknown_08592494 =
-{
- .tileTag = ANIM_TAG_TENDRILS,
- .paletteTag = ANIM_TAG_TENDRILS,
- .oam = &gUnknown_0852499C,
- .anims = gUnknown_08592444,
- .images = NULL,
- .affineAnims = gUnknown_0859248C,
- .callback = sub_80FF374,
-};
-
-const union AffineAnimCmd gUnknown_085924AC[] = {
- AFFINEANIMCMD_FRAME(0, 0, 0, 0),
- AFFINEANIMCMD_FRAME(48, 48, 0, 14),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_085924C4[] = {
- AFFINEANIMCMD_FRAME(-16, -16, 0, 1),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gUnknown_085924D4[] = {
- gUnknown_085924AC,
- gUnknown_085924C4,
-};
-
-const struct SpriteTemplate gUnknown_085924DC =
-{
- .tileTag = ANIM_TAG_ORBS,
- .paletteTag = ANIM_TAG_ORBS,
- .oam = &gUnknown_085249CC,
- .anims = gUnknown_085921C8,
- .images = NULL,
- .affineAnims = gUnknown_085924D4,
- .callback = sub_80FF698,
-};
-
-const union AnimCmd gUnknown_085924F4[] =
-{
- ANIMCMD_FRAME(0, 7),
- ANIMCMD_FRAME(16, 7),
- ANIMCMD_FRAME(32, 7),
- ANIMCMD_FRAME(48, 7),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592508[] =
-{
- ANIMCMD_FRAME(0, 7, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 7, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 7, .hFlip = TRUE),
- ANIMCMD_FRAME(48, 7, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_0859251C[] =
-{
- ANIMCMD_FRAME(0, 7),
- ANIMCMD_FRAME(16, 7),
- ANIMCMD_FRAME(32, 7),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_0859252C[] =
-{
- ANIMCMD_FRAME(0, 7, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 7, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 7, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_0859253C[] =
-{
- gUnknown_085924F4,
- gUnknown_08592508,
- gUnknown_0859251C,
- gUnknown_0859252C,
-};
-
-const struct SpriteTemplate gUnknown_0859254C =
-{
- .tileTag = ANIM_TAG_ROOTS,
- .paletteTag = ANIM_TAG_ROOTS,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_0859253C,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FF768,
-};
-
-const struct SpriteTemplate gUnknown_08592564 =
-{
- .tileTag = ANIM_TAG_ROOTS,
- .paletteTag = ANIM_TAG_ROOTS,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_0859253C,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FF7EC,
-};
-
-const union AnimCmd gUnknown_0859257C[] =
-{
- ANIMCMD_FRAME(3, 3),
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd *const gUnknown_08592588[] =
-{
- gUnknown_0859257C,
-};
-
-const struct SpriteTemplate gUnknown_0859258C =
-{
- .tileTag = ANIM_TAG_ORBS,
- .paletteTag = ANIM_TAG_ORBS,
- .oam = &gUnknown_08524904,
- .anims = gUnknown_08592588,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FF934,
-};
-
-const union AnimCmd gUnknown_085925A4[] =
-{
- ANIMCMD_FRAME(0, 30),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_085925AC[] =
-{
- gUnknown_085925A4,
-};
-
-const union AffineAnimCmd gUnknown_085925B0[] = {
- AFFINEANIMCMD_FRAME(0, 0, -4, 10),
- AFFINEANIMCMD_FRAME(0, 0, 4, 20),
- AFFINEANIMCMD_FRAME(0, 0, -4, 10),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_085925D0[] = {
- AFFINEANIMCMD_FRAME(0, 0, -1, 2),
- AFFINEANIMCMD_FRAME(0, 0, 1, 4),
- AFFINEANIMCMD_FRAME(0, 0, -1, 4),
- AFFINEANIMCMD_FRAME(0, 0, 1, 4),
- AFFINEANIMCMD_FRAME(0, 0, -1, 4),
- AFFINEANIMCMD_FRAME(0, 0, 1, 2),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_08592608[] = {
- gUnknown_085925B0,
- gUnknown_085925D0,
-};
-
-const struct SpriteTemplate gUnknown_08592610 =
-{
- .tileTag = ANIM_TAG_ITEM_BAG,
- .paletteTag = ANIM_TAG_ITEM_BAG,
- .oam = &gUnknown_08524974,
- .anims = gUnknown_085925AC,
- .images = NULL,
- .affineAnims = gUnknown_08592608,
- .callback = sub_80FFB18,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8592628 =
-{
- .tileTag = ANIM_TAG_ITEM_BAG,
- .paletteTag = ANIM_TAG_ITEM_BAG,
- .oam = &gUnknown_08524974,
- .anims = gUnknown_085925AC,
- .images = NULL,
- .affineAnims = gUnknown_08592608,
- .callback = sub_80FFBF4,
-};
-
-const union AnimCmd gUnknown_08592640[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(4, 4),
- ANIMCMD_FRAME(8, 4),
- ANIMCMD_FRAME(12, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592654[] =
-{
- gUnknown_08592640,
-};
-
-const struct SpriteTemplate gUnknown_08592658 =
-{
- .tileTag = ANIM_TAG_GREEN_SPARKLE,
- .paletteTag = ANIM_TAG_GREEN_SPARKLE,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_08592654,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80FFC70,
-};
-
-const struct SpriteTemplate gUnknown_08592670 =
-{
- .tileTag = ANIM_TAG_ITEM_BAG,
- .paletteTag = ANIM_TAG_ITEM_BAG,
- .oam = &gUnknown_08524974,
- .anims = gUnknown_085925AC,
- .images = NULL,
- .affineAnims = gUnknown_08592608,
- .callback = sub_80FFCB4,
-};
-
-const union AffineAnimCmd gUnknown_08592688[] = {
- AFFINEANIMCMD_FRAME(0, 0, 0, 3),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08592698[] = {
- AFFINEANIMCMD_FRAME(0, -10, 0, 3),
- AFFINEANIMCMD_FRAME(0, -6, 0, 3),
- AFFINEANIMCMD_FRAME(0, -2, 0, 3),
- AFFINEANIMCMD_FRAME(0, 0, 0, 3),
- AFFINEANIMCMD_FRAME(0, 2, 0, 3),
- AFFINEANIMCMD_FRAME(0, 6, 0, 3),
- AFFINEANIMCMD_FRAME(0, 10, 0, 3),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_085926D8[] = {
- gUnknown_08592688,
- gUnknown_08592698,
- gUnknown_085925B0,
- gUnknown_085925D0,
-};
-
-const struct SpriteTemplate gUnknown_085926E8 =
-{
- .tileTag = ANIM_TAG_ITEM_BAG,
- .paletteTag = ANIM_TAG_ITEM_BAG,
- .oam = &gUnknown_08524974,
- .anims = gUnknown_085925AC,
- .images = NULL,
- .affineAnims = gUnknown_085926D8,
- .callback = sub_80FFDBC,
-};
-
-const s8 gUnknown_08592700[][3] =
-{
- {5, 24, 1},
- {0, 4, 0},
- {8, 16, -1},
- {0, 2, 0},
- {8, 16, 1},
- {0, 2, 0},
- {8, 16, 1},
- {0, 2, 0},
- {8, 16, 1},
- {0, 16, 0},
- {0, 0, 127},
-};
-
-const union AnimCmd gUnknown_08592724[] =
-{
- ANIMCMD_FRAME(28, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_0859272C[] =
-{
- ANIMCMD_FRAME(32, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592734[] =
-{
- ANIMCMD_FRAME(20, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_0859273C[] =
-{
- ANIMCMD_FRAME(28, 1, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592744[] =
-{
- ANIMCMD_FRAME(16, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_0859274C[] =
-{
- ANIMCMD_FRAME(16, 1, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592754[] =
-{
- ANIMCMD_FRAME(28, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_0859275C[] =
-{
- gUnknown_08592724,
- gUnknown_0859272C,
- gUnknown_08592734,
- gUnknown_0859273C,
- gUnknown_08592744,
- gUnknown_0859274C,
- gUnknown_08592754,
-};
-
-const struct SpriteTemplate gUnknown_08592778 =
-{
- .tileTag = ANIM_TAG_LEAF,
- .paletteTag = ANIM_TAG_LEAF,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_0859275C,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallbackDummy,
-};
-
-const union AffineAnimCmd gUnknown_08592790[] = {
- AFFINEANIMCMD_FRAME(256, 256, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 4, 1),
- AFFINEANIMCMD_JUMP(1),
-};
-
-const union AffineAnimCmd *const gUnknown_085927A8[] = {
- gUnknown_08592790,
-};
-
-const struct SpriteTemplate gUnknown_085927AC =
-{
- .tileTag = ANIM_TAG_FLOWER,
- .paletteTag = ANIM_TAG_FLOWER,
- .oam = &gUnknown_08524904,
- .anims = gUnknown_08592318,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8100640,
-};
-
-const struct SpriteTemplate gUnknown_085927C4 =
-{
- .tileTag = ANIM_TAG_FLOWER,
- .paletteTag = ANIM_TAG_FLOWER,
- .oam = &gUnknown_0852496C,
- .anims = gUnknown_08592314,
- .images = NULL,
- .affineAnims = gUnknown_085927A8,
- .callback = sub_8100640,
-};
-
-const union AffineAnimCmd gUnknown_085927DC[] = {
- AFFINEANIMCMD_FRAME(256, 256, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, -10, 1),
- AFFINEANIMCMD_JUMP(1),
-};
-
-const union AffineAnimCmd gUnknown_085927F4[] = {
- AFFINEANIMCMD_FRAME(192, 192, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, -12, 1),
- AFFINEANIMCMD_JUMP(1),
-};
-
-const union AffineAnimCmd gUnknown_0859280C[] = {
- AFFINEANIMCMD_FRAME(143, 143, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, -15, 1),
- AFFINEANIMCMD_JUMP(1),
-};
-
-const union AffineAnimCmd *const gUnknown_08592824[] = {
- gUnknown_085927DC,
-};
-
-const union AffineAnimCmd *const gUnknown_08592828[] = {
- gUnknown_085927F4,
-};
-
-const union AffineAnimCmd *const gUnknown_0859282C[] = {
- gUnknown_0859280C,
-};
-
-const struct SpriteTemplate gUnknown_08592830 =
-{
- .tileTag = ANIM_TAG_SPARKLE_6,
- .paletteTag = ANIM_TAG_SPARKLE_6,
- .oam = &gUnknown_0852496C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08592824,
- .callback = sub_8100640,
-};
-
-const struct SpriteTemplate gUnknown_08592848 =
-{
- .tileTag = ANIM_TAG_SPARKLE_6,
- .paletteTag = ANIM_TAG_SPARKLE_6,
- .oam = &gUnknown_0852496C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08592828,
- .callback = sub_8100640,
-};
-
-const struct SpriteTemplate gUnknown_08592860 =
-{
- .tileTag = ANIM_TAG_SPARKLE_6,
- .paletteTag = ANIM_TAG_SPARKLE_6,
- .oam = &gUnknown_0852496C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_0859282C,
- .callback = sub_8100640,
-};
-
-// sMagicalLeafBlendColors
-const u16 gUnknown_08592878[] =
-{
- RGB(31, 0, 0),
- RGB(31, 19, 0),
- RGB(31, 31, 0),
- RGB(0, 31, 0),
- RGB(5, 14, 31),
- RGB(22, 10, 31),
- RGB(22, 21, 31),
-};
-
-const struct SpriteTemplate gUnknown_08592888 =
-{
- .tileTag = ANIM_TAG_GREEN_SPIKE,
- .paletteTag = ANIM_TAG_GREEN_SPIKE,
- .oam = &gUnknown_0852496C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8100898,
-};
-
-const union AnimCmd gUnknown_085928A0[] =
-{
- ANIMCMD_FRAME(64, 3),
- ANIMCMD_FRAME(80, 3),
- ANIMCMD_FRAME(96, 3),
- ANIMCMD_FRAME(112, 6),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085928B4[] =
-{
- ANIMCMD_FRAME(64, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(80, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(96, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(112, 6, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_085928C8[] =
-{
- gUnknown_085928A0,
- gUnknown_085928B4,
-};
-
-const struct SpriteTemplate gUnknown_085928D0 =
-{
- .tileTag = ANIM_TAG_SLAM_HIT,
- .paletteTag = ANIM_TAG_SLAM_HIT,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_085928C8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8100A50,
-};
-
-const struct SpriteTemplate gUnknown_085928E8 =
-{
- .tileTag = ANIM_TAG_WHIP_HIT,
- .paletteTag = ANIM_TAG_WHIP_HIT,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_085928C8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8100A50,
-};
-
-const union AnimCmd gUnknown_08592900[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(48, 4),
- ANIMCMD_FRAME(64, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592918[] =
-{
- gUnknown_08592900,
-};
-
-const struct SpriteTemplate gUnknown_0859291C =
-{
- .tileTag = ANIM_TAG_UNUSED_HIT,
- .paletteTag = ANIM_TAG_UNUSED_HIT,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592918,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81009F8,
-};
-
-const struct SpriteTemplate gUnknown_08592934 =
-{
- .tileTag = ANIM_TAG_UNUSED_HIT_2,
- .paletteTag = ANIM_TAG_UNUSED_HIT_2,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592918,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81009F8,
-};
-
-const union AffineAnimCmd gUnknown_0859294C[] = {
- AFFINEANIMCMD_FRAME(256, 256, 0, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_0859295C[] = {
- AFFINEANIMCMD_FRAME(256, 256, 32, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_0859296C[] = {
- AFFINEANIMCMD_FRAME(256, 256, 64, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_0859297C[] = {
- AFFINEANIMCMD_FRAME(256, 256, 96, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_0859298C[] = {
- AFFINEANIMCMD_FRAME(256, 256, -128, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_0859299C[] = {
- AFFINEANIMCMD_FRAME(256, 256, -96, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_085929AC[] = {
- AFFINEANIMCMD_FRAME(256, 256, -64, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_085929BC[] = {
- AFFINEANIMCMD_FRAME(256, 256, -32, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_085929CC[] = {
- gUnknown_0859294C,
- gUnknown_0859295C,
- gUnknown_0859296C,
- gUnknown_0859297C,
- gUnknown_0859298C,
- gUnknown_0859299C,
- gUnknown_085929AC,
- gUnknown_085929BC,
-};
-
-const struct SpriteTemplate gUnknown_085929EC =
-{
- .tileTag = ANIM_TAG_HANDS_AND_FEET,
- .paletteTag = ANIM_TAG_HANDS_AND_FEET,
- .oam = &gUnknown_08524974,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_085929CC,
- .callback = sub_8100A94,
-};
-
-const union AnimCmd gUnknown_08592A04[] =
-{
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_FRAME(16, 5),
- ANIMCMD_FRAME(32, 5),
- ANIMCMD_FRAME(48, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592A18[] =
-{
- gUnknown_08592A04,
-};
-
-const struct SpriteTemplate gCuttingSliceSpriteTemplate =
-{
- .tileTag = ANIM_TAG_CUT,
- .paletteTag = ANIM_TAG_CUT,
- .oam = &gUnknown_08524A34,
- .anims = gUnknown_08592A18,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8100AE0,
-};
-
-const struct SpriteTemplate gUnknown_08592A34 =
-{
- .tileTag = ANIM_TAG_CUT,
- .paletteTag = ANIM_TAG_CUT,
- .oam = &gUnknown_08524A34,
- .anims = gUnknown_08592A18,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8100B88,
-};
-
-const union AnimCmd gUnknown_08592A4C[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592A54[] =
-{
- ANIMCMD_FRAME(4, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592A5C[] =
-{
- ANIMCMD_FRAME(8, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592A64[] =
-{
- ANIMCMD_FRAME(12, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592A6C[] =
-{
- ANIMCMD_FRAME(16, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592A74[] =
-{
- ANIMCMD_FRAME(20, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592A7C[] =
-{
- ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592A84[] =
-{
- ANIMCMD_FRAME(4, 1, .vFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592A8C[] =
-{
- ANIMCMD_FRAME(8, 1, .vFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592A94[] =
-{
- ANIMCMD_FRAME(12, 1, .vFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592A9C[] =
-{
- gUnknown_08592A4C,
- gUnknown_08592A54,
- gUnknown_08592A5C,
- gUnknown_08592A64,
- gUnknown_08592A6C,
- gUnknown_08592A74,
- gUnknown_08592A7C,
- gUnknown_08592A84,
- gUnknown_08592A8C,
- gUnknown_08592A94,
-};
-
-const struct SpriteTemplate gUnknown_08592AC4 =
-{
- .tileTag = ANIM_TAG_MUSIC_NOTES,
- .paletteTag = ANIM_TAG_MUSIC_NOTES,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_08592A9C,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8100E1C,
-};
-
-const struct SpriteTemplate gUnknown_08592ADC =
-{
- .tileTag = ANIM_TAG_PROTECT,
- .paletteTag = ANIM_TAG_PROTECT,
- .oam = &gUnknown_08524A3C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8100EF0,
-};
-
-const union AffineAnimCmd gUnknown_08592AF4[] =
-{
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08592B04[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
- AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 24),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gUnknown_08592B34[] =
-{
- gUnknown_08592AF4,
- gUnknown_08592B04,
-};
-
-const struct SpriteTemplate gUnknown_08592B3C =
-{
- .tileTag = ANIM_TAG_MILK_BOTTLE,
- .paletteTag = ANIM_TAG_MILK_BOTTLE,
- .oam = &gUnknown_08524A94,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08592B34,
- .callback = sub_81010CC,
-};
-
-const union AnimCmd gUnknown_08592B54[] =
-{
- ANIMCMD_FRAME(0, 7),
- ANIMCMD_FRAME(16, 7),
- ANIMCMD_FRAME(32, 7),
- ANIMCMD_FRAME(48, 7),
- ANIMCMD_FRAME(64, 7),
- ANIMCMD_FRAME(80, 7),
- ANIMCMD_FRAME(96, 7),
- ANIMCMD_FRAME(112, 7),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd *const gUnknown_08592B78[] =
-{
- gUnknown_08592B54,
-};
-
-const struct SpriteTemplate gUnknown_08592B7C =
-{
- .tileTag = ANIM_TAG_SPARKLE_2,
- .paletteTag = ANIM_TAG_SPARKLE_2,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592B78,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810130C,
-};
-
-const struct SpriteTemplate gUnknown_08592B94 =
-{
- .tileTag = ANIM_TAG_SPARKLE_2,
- .paletteTag = ANIM_TAG_SPARKLE_2,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592B78,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810135C,
-};
-
-const union AnimCmd gUnknown_08592BAC[] =
-{
- ANIMCMD_FRAME(0, 10),
- ANIMCMD_FRAME(4, 10),
- ANIMCMD_FRAME(8, 10),
- ANIMCMD_FRAME(12, 10),
- ANIMCMD_FRAME(16, 26),
- ANIMCMD_FRAME(16, 5),
- ANIMCMD_FRAME(20, 5),
- ANIMCMD_FRAME(24, 15),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592BD0[] =
-{
- ANIMCMD_FRAME(0, 10, .hFlip = TRUE),
- ANIMCMD_FRAME(4, 10, .hFlip = TRUE),
- ANIMCMD_FRAME(8, 10, .hFlip = TRUE),
- ANIMCMD_FRAME(12, 10, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 26, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
- ANIMCMD_FRAME(20, 5, .hFlip = TRUE),
- ANIMCMD_FRAME(24, 15, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592BF4[] =
-{
- gUnknown_08592BAC,
- gUnknown_08592BD0,
-};
-
-const struct SpriteTemplate gUnknown_08592BFC =
-{
- .tileTag = ANIM_TAG_UNUSED_BUBBLE_BURST,
- .paletteTag = ANIM_TAG_UNUSED_BUBBLE_BURST,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_08592BF4,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101440,
-};
-
-const union AnimCmd gUnknown_08592C14[] =
-{
- ANIMCMD_FRAME(0, 40),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592C1C[] =
-{
- gUnknown_08592C14,
-};
-
-const union AffineAnimCmd gUnknown_08592C20[] =
-{
- AFFINEANIMCMD_FRAME(0x14, 0x14, -30, 0),
- AFFINEANIMCMD_FRAME(0x8, 0x8, 1, 24),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08592C20_2[] =
-{
- AFFINEANIMCMD_LOOP(0),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
- AFFINEANIMCMD_LOOP(10),
-};
-
-const union AffineAnimCmd gUnknown_08592C50[] =
-{
- AFFINEANIMCMD_FRAME(0x14, 0x14, 30, 0),
- AFFINEANIMCMD_FRAME(0x8, 0x8, -1, 24),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08592C50_2[] =
-{
- AFFINEANIMCMD_LOOP(0),
- AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 24),
- AFFINEANIMCMD_LOOP(10),
-};
-
-const union AffineAnimCmd *const gUnknown_08592C80[] =
-{
- gUnknown_08592C20,
- gUnknown_08592C50,
-};
-
-const struct SpriteTemplate gUnknown_08592C88 =
-{
- .tileTag = ANIM_TAG_LETTER_Z,
- .paletteTag = ANIM_TAG_LETTER_Z,
- .oam = &gUnknown_08524974,
- .anims = gUnknown_08592C1C,
- .images = NULL,
- .affineAnims = gUnknown_08592C80,
- .callback = sub_81014F4,
-};
-
-const struct SpriteTemplate gUnknown_08592CA0 =
-{
- .tileTag = ANIM_TAG_LOCK_ON,
- .paletteTag = ANIM_TAG_LOCK_ON,
- .oam = &gUnknown_08524914,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81015AC,
-};
-
-const struct SpriteTemplate gUnknown_08592CB8 =
-{
- .tileTag = ANIM_TAG_LOCK_ON,
- .paletteTag = ANIM_TAG_LOCK_ON,
- .oam = &gUnknown_0852490C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101898,
-};
-
-const s8 gUnknown_08592CD0[][2] =
-{
- { 64, 64},
- { 0, -64},
- {-64, 64},
- { 32, -32},
-};
-
-const struct SpriteTemplate gUnknown_08592CD8 =
-{
- .tileTag = 0,
- .paletteTag = 0,
- .oam = &gDummyOamData,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101940,
-};
-
-const struct SpriteTemplate gUnknown_08592CF0 =
-{
- .tileTag = 0,
- .paletteTag = 0,
- .oam = &gDummyOamData,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101B90,
-};
-
-const union AnimCmd gUnknown_08592D08[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(48, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592D1C[] =
-{
- ANIMCMD_FRAME(48, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592D24[] =
-{
- gUnknown_08592D08,
- gUnknown_08592D1C,
-};
-
-const struct SpriteTemplate gUnknown_08592D2C =
-{
- .tileTag = ANIM_TAG_SLASH,
- .paletteTag = ANIM_TAG_SLASH,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592D24,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101F40,
-};
-
-const struct SpriteTemplate gUnknown_08592D44 =
-{
- .tileTag = ANIM_TAG_SLASH_2,
- .paletteTag = ANIM_TAG_SLASH_2,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592D24,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101FA8,
-};
-
-const struct SpriteTemplate gUnknown_08592D5C =
-{
- .tileTag = ANIM_TAG_SLASH_2,
- .paletteTag = ANIM_TAG_SLASH_2,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592D24,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101FF0,
-};
-
-const union AnimCmd gUnknown_08592D74[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(8, 12),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(24, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592D88[] =
-{
- gUnknown_08592D74,
-};
-
-const struct SpriteTemplate gUnknown_08592D8C =
-{
- .tileTag = ANIM_TAG_FOCUS_ENERGY,
- .paletteTag = ANIM_TAG_FOCUS_ENERGY,
- .oam = &gUnknown_08524954,
- .anims = gUnknown_08592D88,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81020D8,
-};
-
-const union AnimCmd gUnknown_08592DA4[] =
-{
- ANIMCMD_FRAME(0, 18),
- ANIMCMD_FRAME(0, 6),
- ANIMCMD_FRAME(16, 18),
- ANIMCMD_FRAME(0, 6),
- ANIMCMD_FRAME(16, 6),
- ANIMCMD_FRAME(32, 18),
- ANIMCMD_FRAME(16, 6),
- ANIMCMD_FRAME(32, 6),
- ANIMCMD_FRAME(48, 18),
- ANIMCMD_FRAME(32, 6),
- ANIMCMD_FRAME(48, 6),
- ANIMCMD_FRAME(64, 18),
- ANIMCMD_FRAME(48, 6),
- ANIMCMD_FRAME(64, 54),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592DE0[] =
-{
- gUnknown_08592DA4,
-};
-
-const struct SpriteTemplate gUnknown_08592DE4 =
-{
- .tileTag = ANIM_TAG_SPHERE_TO_CUBE,
- .paletteTag = ANIM_TAG_SPHERE_TO_CUBE,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592DE0,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810217C,
-};
-
-const struct SpriteTemplate gUnknown_08592DFC =
-{
- .tileTag = ANIM_TAG_BLACK_BALL,
- .paletteTag = ANIM_TAG_BLACK_BALL,
- .oam = &gUnknown_08524904,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = TranslateAnimSpriteToTargetMonLocation,
-};
-
-const union AnimCmd gUnknown_08592E14[] =
-{
- ANIMCMD_FRAME(0, 3),
- ANIMCMD_FRAME(16, 3),
- ANIMCMD_FRAME(32, 3),
- ANIMCMD_FRAME(48, 3),
- ANIMCMD_FRAME(64, 3),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592E2C[] =
-{
- gUnknown_08592E14,
-};
-
-const struct SpriteTemplate gUnknown_08592E30 =
-{
- .tileTag = ANIM_TAG_GRAY_SMOKE,
- .paletteTag = ANIM_TAG_GRAY_SMOKE,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592E2C,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A77C8,
-};
-
-const union AnimCmd gUnknown_08592E48[] =
-{
- ANIMCMD_FRAME(3, 5),
- ANIMCMD_FRAME(2, 5),
- ANIMCMD_FRAME(1, 5),
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592E5C[] =
-{
- gUnknown_08592E48,
-};
-
-const union AffineAnimCmd gUnknown_08592E60[] =
-{
- AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_08592E70[] =
-{
- gUnknown_08592E60,
-};
-
-const struct SpriteTemplate gUnknown_08592E74 =
-{
- .tileTag = ANIM_TAG_CONVERSION,
- .paletteTag = ANIM_TAG_CONVERSION,
- .oam = &gUnknown_08524AE4,
- .anims = gUnknown_08592E5C,
- .images = NULL,
- .affineAnims = gUnknown_08592E70,
- .callback = sub_8102268,
-};
-
-const union AnimCmd gUnknown_08592E8C[] =
-{
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_FRAME(1, 5),
- ANIMCMD_FRAME(2, 5),
- ANIMCMD_FRAME(3, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592EA0[] =
-{
- gUnknown_08592E8C,
-};
-
-const struct SpriteTemplate gUnknown_08592EA4 =
-{
- .tileTag = ANIM_TAG_CONVERSION,
- .paletteTag = ANIM_TAG_CONVERSION,
- .oam = &gUnknown_08524AE4,
- .anims = gUnknown_08592EA0,
- .images = NULL,
- .affineAnims = gUnknown_08592E70,
- .callback = sub_810234C,
-};
-
-const struct SpriteTemplate gUnknown_08592EBC =
-{
- .tileTag = ANIM_TAG_MOON,
- .paletteTag = ANIM_TAG_MOON,
- .oam = &gUnknown_08524A3C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81024E0,
-};
-
-const union AnimCmd gUnknown_08592ED4[] =
-{
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(4, 8),
- ANIMCMD_FRAME(8, 8),
- ANIMCMD_FRAME(12, 8),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd *const gUnknown_08592EE8[] =
-{
- gUnknown_08592ED4,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8592EEC =
-{
- .tileTag = ANIM_TAG_GREEN_SPARKLE,
- .paletteTag = ANIM_TAG_GREEN_SPARKLE,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_08592EE8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8102540,
-};
-
-const union AnimCmd gUnknown_08592F04[] =
-{
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_FRAME(16, 2),
- ANIMCMD_FRAME(32, 2),
- ANIMCMD_FRAME(48, 3),
- ANIMCMD_FRAME(64, 5),
- ANIMCMD_FRAME(80, 3),
- ANIMCMD_FRAME(96, 2),
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592F28[] =
-{
- gUnknown_08592F04,
-};
-
-const struct SpriteTemplate gUnknown_08592F2C =
-{
- .tileTag = ANIM_TAG_BLUE_STAR,
- .paletteTag = ANIM_TAG_BLUE_STAR,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592F28,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A77C8,
-};
-
-const struct SpriteTemplate gUnknown_08592F44 =
-{
- .tileTag = ANIM_TAG_HORN_HIT,
- .paletteTag = ANIM_TAG_HORN_HIT,
- .oam = &gUnknown_08524914,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8102844,
-};
-
-const union AnimCmd gUnknown_08592F5C[] =
-{
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_FRAME(16, 2),
- ANIMCMD_FRAME(32, 2),
- ANIMCMD_FRAME(48, 2),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592F70[] =
-{
- gUnknown_08592F5C,
-};
-
-const struct SpriteTemplate gUnknown_08592F74 =
-{
- .tileTag = ANIM_TAG_FANG_ATTACK,
- .paletteTag = ANIM_TAG_FANG_ATTACK,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08592F70,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8102BCC,
-};
-
-const union AnimCmd gUnknown_08592F8C[] =
-{
- ANIMCMD_FRAME(0, 10),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592F94[] =
-{
- ANIMCMD_FRAME(4, 10),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592F9C[] =
-{
- ANIMCMD_FRAME(8, 41),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592FA4[] =
-{
- ANIMCMD_FRAME(12, 10),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592FAC[] =
-{
- ANIMCMD_FRAME(16, 10),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592FB4[] =
-{
- ANIMCMD_FRAME(20, 10),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592FBC[] =
-{
- ANIMCMD_FRAME(0, 10, .vFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08592FC4[] =
-{
- ANIMCMD_FRAME(4, 10, .vFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08592FCC[] =
-{
- gUnknown_08592F8C,
- gUnknown_08592F94,
- gUnknown_08592F9C,
- gUnknown_08592FA4,
- gUnknown_08592FAC,
- gUnknown_08592FB4,
- gUnknown_08592FBC,
- gUnknown_08592FC4,
-};
-
-const union AffineAnimCmd gUnknown_08592FEC[] =
-{
- AFFINEANIMCMD_FRAME(0xC, 0xC, 0, 16),
- AFFINEANIMCMD_FRAME(0xFFF4, 0xFFF4, 0, 16),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gUnknown_08593004[] =
-{
- gUnknown_08592FEC,
-};
-
-const struct SpriteTemplate gUnknown_08593008 =
-{
- .tileTag = ANIM_TAG_MUSIC_NOTES,
- .paletteTag = ANIM_TAG_MUSIC_NOTES,
- .oam = &gUnknown_085249CC,
- .anims = gUnknown_08592FCC,
- .images = NULL,
- .affineAnims = gUnknown_08593004,
- .callback = sub_8102CD4,
-};
-
-const u16 gUnknown_08593020[][6] =
-{
- {10072, RGB(31, 31, 31), RGB(31, 26, 28), RGB(31, 22, 26), RGB(31, 17, 24), RGB(31, 13, 22)},
- {10097, RGB(31, 31, 31), RGB(25, 31, 26), RGB(20, 31, 21), RGB(15, 31, 16), RGB(10, 31, 12)},
- {10185, RGB(31, 31, 31), RGB(31, 31, 24), RGB(31, 31, 17), RGB(31, 31, 10), RGB(31, 31, 3)},
- {10175, RGB(31, 31, 31), RGB(26, 28, 31), RGB(21, 26, 31), RGB(16, 24, 31), RGB(12, 22, 31)},
-};
-
-const struct SpriteTemplate gUnknown_08593050 =
-{
- .tileTag = ANIM_TAG_MUSIC_NOTES,
- .paletteTag = ANIM_TAG_MUSIC_NOTES,
- .oam = &gUnknown_085249CC,
- .anims = gUnknown_08592FCC,
- .images = NULL,
- .affineAnims = gUnknown_08593004,
- .callback = sub_8102EB0,
-};
-
-const struct SpriteTemplate gUnknown_08593068 =
-{
- .tileTag = ANIM_TAG_PURPLE_HAND_OUTLINE,
- .paletteTag = ANIM_TAG_PURPLE_HAND_OUTLINE,
- .oam = &gUnknown_08524914,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8102FB8,
-};
-
-const union AffineAnimCmd gUnknown_08593080[] =
-{
- AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
- AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 1),
- AFFINEANIMCMD_JUMP(1),
-};
-
-const union AffineAnimCmd *const gUnknown_08593098[] =
-{
- gUnknown_08593080,
-};
-
-const struct SpriteTemplate gUnknown_0859309C =
-{
- .tileTag = ANIM_TAG_MUSIC_NOTES,
- .paletteTag = ANIM_TAG_MUSIC_NOTES,
- .oam = &gUnknown_085249CC,
- .anims = gUnknown_08592FCC,
- .images = NULL,
- .affineAnims = gUnknown_08593098,
- .callback = sub_8103028,
-};
-
-const union AnimCmd gUnknown_085930B4[] =
-{
- ANIMCMD_FRAME(0, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(48, 2, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085930C8[] =
-{
- ANIMCMD_FRAME(48, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 2, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 2, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085930DC[] =
-{
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_FRAME(16, 2),
- ANIMCMD_FRAME(32, 2),
- ANIMCMD_FRAME(48, 2),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085930F0[] =
-{
- ANIMCMD_FRAME(48, 2),
- ANIMCMD_FRAME(32, 2),
- ANIMCMD_FRAME(16, 2),
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593104[] =
-{
- gUnknown_085930B4,
- gUnknown_085930DC,
- gUnknown_085930C8,
- gUnknown_085930F0,
-};
-
-const struct SpriteTemplate gUnknown_08593114 =
-{
- .tileTag = ANIM_TAG_THOUGHT_BUBBLE,
- .paletteTag = ANIM_TAG_THOUGHT_BUBBLE,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08593104,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8103164,
-};
-
-const union AffineAnimCmd gUnknown_0859312C[] =
-{
- AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
- AFFINEANIMCMD_FRAME(0x1E, 0x1E, 0, 8),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08593144[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 11),
- AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 11),
- AFFINEANIMCMD_LOOP(2),
- AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 0, 8),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08593144_2[] =
-{
- AFFINEANIMCMD_FRAME(16, 16, 0, 0),
- AFFINEANIMCMD_FRAME(30, 30, 0, 8),
- AFFINEANIMCMD_FRAME(0, 0, 0, 16),
- AFFINEANIMCMD_LOOP(0),
- AFFINEANIMCMD_FRAME(0, 0, 4, 11),
- AFFINEANIMCMD_FRAME(0, 0, -4, 11),
- AFFINEANIMCMD_LOOP(2),
- AFFINEANIMCMD_FRAME(-30, -30, 0, 8),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_085931B4[] =
-{
- gUnknown_0859312C,
- gUnknown_08593144,
-};
-
-const struct SpriteTemplate gUnknown_085931BC =
-{
- .tileTag = ANIM_TAG_FINGER,
- .paletteTag = ANIM_TAG_FINGER,
- .oam = &gUnknown_085249D4,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_085931B4,
- .callback = sub_8103208,
-};
-
-const struct SpriteTemplate gUnknown_085931D4 =
-{
- .tileTag = ANIM_TAG_FINGER,
- .paletteTag = ANIM_TAG_FINGER,
- .oam = &gUnknown_08524974,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_085931B4,
- .callback = sub_8103284,
-};
-
-const union AnimCmd gUnknown_085931EC[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085931F4[] =
-{
- ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085931FC[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_0859321C[] =
-{
- ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_0859323C[] =
-{
- gUnknown_085931EC,
- gUnknown_085931F4,
- gUnknown_085931FC,
- gUnknown_0859321C,
-};
-
-const struct SpriteTemplate gUnknown_0859324C =
-{
- .tileTag = ANIM_TAG_FINGER_2,
- .paletteTag = ANIM_TAG_FINGER_2,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_0859323C,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8103390,
-};
diff --git a/src/effects_2.c b/src/effects_2.c
deleted file mode 100644
index 82336be5c..000000000
--- a/src/effects_2.c
+++ /dev/null
@@ -1,1197 +0,0 @@
-#include "global.h"
-#include "battle_anim.h"
-#include "constants/rgb.h"
-
-extern void sub_8103448(struct Sprite *);
-extern void sub_8103498(struct Sprite *);
-extern void sub_810358C(struct Sprite *);
-extern void sub_8103620(struct Sprite *);
-extern void sub_80A77C8(struct Sprite *);
-extern void sub_81037D8(struct Sprite *);
-extern void sub_810387C(struct Sprite *);
-extern void sub_81038C8(struct Sprite *);
-extern void sub_8103AA4(struct Sprite *);
-extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
-extern void sub_8108C94(struct Sprite *);
-extern void sub_80A78AC(struct Sprite *);
-extern void sub_8103FE8(struct Sprite *);
-extern void sub_8104088(struct Sprite *);
-extern void sub_810413C(struct Sprite *);
-extern void sub_81041C4(struct Sprite *);
-extern void sub_8104304(struct Sprite *);
-extern void sub_8104364(struct Sprite *);
-extern void sub_8104414(struct Sprite *);
-extern void sub_8104B1C(struct Sprite *);
-extern void sub_8104BAC(struct Sprite *);
-extern void sub_810501C(struct Sprite *);
-extern void sub_80A7938(struct Sprite *);
-extern void sub_8105538(struct Sprite *);
-extern void sub_81051C4(struct Sprite *);
-extern void sub_81052A4(struct Sprite *);
-extern void sub_81054E8(struct Sprite *);
-extern void sub_8105C48(struct Sprite *);
-extern void sub_8105DE8(struct Sprite *);
-extern void sub_8105E60(struct Sprite *);
-extern void sub_8106140(struct Sprite *);
-extern void sub_81061C4(struct Sprite *);
-extern void sub_810624C(struct Sprite *);
-extern void sub_810673C(struct Sprite *);
-extern void sub_8106878(struct Sprite *);
-extern void sub_8106944(struct Sprite *);
-extern void sub_81069B8(struct Sprite *);
-extern void sub_81069D0(struct Sprite *);
-extern void sub_8106AD0(struct Sprite *);
-extern void sub_8106B54(struct Sprite *);
-extern void sub_8106C80(struct Sprite *);
-extern void sub_8106CD0(struct Sprite *);
-extern void sub_8106E00(struct Sprite *);
-extern void sub_8106F60(struct Sprite *);
-extern void sub_8106F00(struct Sprite *);
-extern void sub_81070AC(struct Sprite *);
-
-const struct SpriteTemplate gUnknown_08593264 =
-{
- .tileTag = ANIM_TAG_FINGER,
- .paletteTag = ANIM_TAG_FINGER,
- .oam = &gUnknown_08524914,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8103448,
-};
-
-const union AnimCmd gUnknown_0859327C[] =
-{
- ANIMCMD_FRAME(4, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593284[] =
-{
- gUnknown_0859327C,
-};
-
-const struct SpriteTemplate gUnknown_08593288 =
-{
- .tileTag = ANIM_TAG_MUSIC_NOTES,
- .paletteTag = ANIM_TAG_MUSIC_NOTES,
- .oam = &gUnknown_0852490C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8103498,
-};
-
-const struct SpriteTemplate gUnknown_085932A0 =
-{
- .tileTag = 0,
- .paletteTag = 0,
- .oam = &gDummyOamData,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810358C,
-};
-
-extern const union AffineAnimCmd *const gUnknown_08597060[];
-const struct SpriteTemplate gUnknown_085932B8 =
-{
- .tileTag = ANIM_TAG_CLAMP,
- .paletteTag = ANIM_TAG_CLAMP,
- .oam = &gUnknown_08524A9C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08597060,
- .callback = sub_8103620,
-};
-
-const union AnimCmd gUnknown_085932D0[] =
-{
- ANIMCMD_FRAME(0, 9),
- ANIMCMD_FRAME(16, 3),
- ANIMCMD_FRAME(32, 3),
- ANIMCMD_FRAME(48, 3),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_085932E4[] =
-{
- gUnknown_085932D0,
-};
-
-const union AffineAnimCmd gUnknown_085932E8[] =
-{
- AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
- AFFINEANIMCMD_FRAME(0x9, 0x9, 0, 18),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_08593300[] =
-{
- gUnknown_085932E8,
-};
-
-const struct SpriteTemplate gUnknown_08593304 =
-{
- .tileTag = ANIM_TAG_UNUSED_EXPLOSION,
- .paletteTag = ANIM_TAG_UNUSED_EXPLOSION,
- .oam = &gUnknown_08524974,
- .anims = gUnknown_085932E4,
- .images = NULL,
- .affineAnims = gUnknown_08593300,
- .callback = sub_80A77C8,
-};
-
-const union AnimCmd gUnknown_0859331C[] =
-{
- ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(8, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(24, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(40, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(48, 3, .hFlip = TRUE),
- ANIMCMD_LOOP(1),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593340[] =
-{
- gUnknown_0859331C,
-};
-
-const struct SpriteTemplate gUnknown_08593344 =
-{
- .tileTag = ANIM_TAG_ALERT,
- .paletteTag = ANIM_TAG_ALERT,
- .oam = &gUnknown_08524934,
- .anims = gUnknown_08593340,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81037D8,
-};
-
-const union AffineAnimCmd gUnknown_0859335C[] =
-{
- AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
- AFFINEANIMCMD_FRAME(0x14, 0x0, 0, 12),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_0859337C[] =
-{
- gUnknown_0859335C,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8593380 =
-{
- .tileTag = ANIM_TAG_SWORD,
- .paletteTag = ANIM_TAG_SWORD,
- .oam = &gUnknown_08524ADC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_0859337C,
- .callback = sub_810387C,
-};
-
-const struct SpriteTemplate gSonicBoomSpriteTemplate =
-{
- .tileTag = ANIM_TAG_AIR_WAVE,
- .paletteTag = ANIM_TAG_AIR_WAVE,
- .oam = &gUnknown_08524B14,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81038C8,
-};
-
-const struct SpriteTemplate gUnknown_085933B0 =
-{
- .tileTag = ANIM_TAG_AIR_WAVE,
- .paletteTag = ANIM_TAG_AIR_WAVE,
- .oam = &gUnknown_08524A54,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8103AA4,
-};
-
-const union AffineAnimCmd gUnknown_085933C8[] =
-{
- AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
- AFFINEANIMCMD_FRAME(0x7, 0x7, 0, -56),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_085933E0[] =
-{
- AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
- AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
- AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
- AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
- AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
- AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
- AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_08593420[] =
-{
- gUnknown_085933C8,
-};
-
-const union AffineAnimCmd *const gUnknown_08593424[] =
-{
- gUnknown_085933E0,
-};
-
-const struct SpriteTemplate gSupersonicWaveSpriteTemplate =
-{
- .tileTag = ANIM_TAG_GOLD_RING,
- .paletteTag = ANIM_TAG_GOLD_RING,
- .oam = &gUnknown_08524A14,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593420,
- .callback = TranslateAnimSpriteToTargetMonLocation,
-};
-
-const struct SpriteTemplate gScreechWaveSpriteTemplate =
-{
- .tileTag = ANIM_TAG_PURPLE_RING,
- .paletteTag = ANIM_TAG_PURPLE_RING,
- .oam = &gUnknown_08524A14,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593420,
- .callback = TranslateAnimSpriteToTargetMonLocation,
-};
-
-const struct SpriteTemplate gUnknown_08593458 =
-{
- .tileTag = ANIM_TAG_METAL_SOUND_WAVES,
- .paletteTag = ANIM_TAG_METAL_SOUND_WAVES,
- .oam = &gUnknown_08524A1C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593420,
- .callback = TranslateAnimSpriteToTargetMonLocation,
-};
-
-const struct SpriteTemplate gUnknown_08593470 =
-{
- .tileTag = ANIM_TAG_BLUE_RING_2,
- .paletteTag = ANIM_TAG_BLUE_RING_2,
- .oam = &gUnknown_08524A14,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593424,
- .callback = sub_8108C94,
-};
-
-const struct SpriteTemplate gUnknown_08593488 =
-{
- .tileTag = ANIM_TAG_LARGE_FRESH_EGG,
- .paletteTag = ANIM_TAG_LARGE_FRESH_EGG,
- .oam = &gUnknown_0852490C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A78AC,
-};
-
-const struct SpriteTemplate gUnknown_085934A0 =
-{
- .tileTag = ANIM_TAG_UNUSED_VOID_LINES,
- .paletteTag = ANIM_TAG_UNUSED_VOID_LINES,
- .oam = &gUnknown_08524A3C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8103FE8,
-};
-
-const union AnimCmd gUnknown_085934B8[] =
-{
- ANIMCMD_FRAME(8, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_085934C0[] =
-{
- gUnknown_085934B8,
-};
-
-const union AffineAnimCmd gUnknown_085934C4[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gUnknown_085934D4[] =
-{
- gUnknown_085934C4,
-};
-
-const struct SpriteTemplate gUnknown_085934D8 =
-{
- .tileTag = ANIM_TAG_COIN,
- .paletteTag = ANIM_TAG_COIN,
- .oam = &gUnknown_0852496C,
- .anims = gUnknown_085934C0,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8104088,
-};
-
-const struct SpriteTemplate gUnknown_085934F0 =
-{
- .tileTag = ANIM_TAG_COIN,
- .paletteTag = ANIM_TAG_COIN,
- .oam = &gUnknown_0852496C,
- .anims = gUnknown_085934C0,
- .images = NULL,
- .affineAnims = gUnknown_085934D4,
- .callback = sub_810413C,
-};
-
-const union AffineAnimCmd gUnknown_08593508[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gUnknown_08593518[] =
-{
- gUnknown_08593508,
-};
-
-const struct SpriteTemplate gUnknown_0859351C =
-{
- .tileTag = ANIM_TAG_SEED,
- .paletteTag = ANIM_TAG_SEED,
- .oam = &gUnknown_0852496C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593518,
- .callback = sub_81041C4,
-};
-
-const union AffineAnimCmd gUnknown_08593534[] =
-{
- AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
- AFFINEANIMCMD_FRAME(0x4, 0x0, 0, 40),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_0859354C[] =
-{
- gUnknown_08593534,
-};
-
-const struct SpriteTemplate gUnknown_08593550 =
-{
- .tileTag = ANIM_TAG_GUST,
- .paletteTag = ANIM_TAG_GUST,
- .oam = &gUnknown_085249BC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_0859354C,
- .callback = sub_8104304,
-};
-
-const union AnimCmd gUnknown_08593568[] =
-{
- ANIMCMD_FRAME(0, 3),
- ANIMCMD_FRAME(16, 3),
- ANIMCMD_FRAME(32, 20),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08593578[] =
-{
- ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 20, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593588[] =
-{
- gUnknown_08593568,
- gUnknown_08593578,
-};
-
-const struct SpriteTemplate gUnknown_08593590 =
-{
- .tileTag = ANIM_TAG_CUT,
- .paletteTag = ANIM_TAG_CUT,
- .oam = &gUnknown_08524A34,
- .anims = gUnknown_08593588,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8104364,
-};
-
-const union AnimCmd gUnknown_085935A8[] =
-{
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_FRAME(16, 2),
- ANIMCMD_FRAME(32, 1),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085935B8[] =
-{
- ANIMCMD_FRAME(0, 2, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 2, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 1, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_085935C8[] =
-{
- gUnknown_085935A8,
- gUnknown_085935B8,
-};
-
-const struct SpriteTemplate gUnknown_085935D0 =
-{
- .tileTag = ANIM_TAG_CUT,
- .paletteTag = ANIM_TAG_CUT,
- .oam = &gUnknown_08524A34,
- .anims = gUnknown_085935C8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8104414,
-};
-
-const union AffineAnimCmd gUnknown_085935E8[] =
-{
- AFFINEANIMCMD_FRAME(-6, 4, 0, 8),
- AFFINEANIMCMD_FRAME(10, -10, 0, 8),
- AFFINEANIMCMD_FRAME(-4, 6, 0, 8),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08593608[] =
-{
- AFFINEANIMCMD_FRAME(-4, -5, 0, 12),
- AFFINEANIMCMD_FRAME(0, 0, 0, 24),
- AFFINEANIMCMD_FRAME(4, 5, 0, 12),
- AFFINEANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08593628[] =
-{
- ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(4, 40, .hFlip = TRUE),
- ANIMCMD_FRAME(8, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(12, 4, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_0859363C[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(4, 40),
- ANIMCMD_FRAME(8, 4),
- ANIMCMD_FRAME(12, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593650[] =
-{
- gUnknown_08593628,
- gUnknown_0859363C,
-};
-
-const struct SpriteTemplate gUnknown_08593658 =
-{
- .tileTag = ANIM_TAG_BREATH,
- .paletteTag = ANIM_TAG_BREATH,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_08593650,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8104B1C,
-};
-
-const union AffineAnimCmd gUnknown_08593670[] =
-{
- AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 8),
- AFFINEANIMCMD_FRAME(0xFFF5, 0xFFF5, 0, 8),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_08593688[] =
-{
- gUnknown_08593670,
-};
-
-const struct SpriteTemplate gUnknown_0859368C =
-{
- .tileTag = ANIM_TAG_ANGER,
- .paletteTag = ANIM_TAG_ANGER,
- .oam = &gUnknown_0852496C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593688,
- .callback = sub_8104BAC,
-};
-
-const union AffineAnimCmd gUnknown_085936A4[] =
-{
- AFFINEANIMCMD_FRAME(-10, 9, 0, 7),
- AFFINEANIMCMD_FRAME(20, -20, 0, 7),
- AFFINEANIMCMD_FRAME(-20, 20, 0, 7),
- AFFINEANIMCMD_FRAME(10, -9, 0, 7),
- AFFINEANIMCMD_LOOP(2),
- AFFINEANIMCMD_END,
-};
-
-const struct SpriteTemplate gUnknown_085936D4 =
-{
- .tileTag = ANIM_TAG_PENCIL,
- .paletteTag = ANIM_TAG_PENCIL,
- .oam = &gUnknown_08524914,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810501C,
-};
-
-const struct SpriteTemplate gUnknown_085936EC =
-{
- .tileTag = ANIM_TAG_SNORE_Z,
- .paletteTag = ANIM_TAG_SNORE_Z,
- .oam = &gUnknown_08524914,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A7938,
-};
-
-const union AnimCmd gUnknown_08593704[] =
-{
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_FRAME(16, 5),
- ANIMCMD_FRAME(32, 5),
- ANIMCMD_FRAME(48, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593718[] =
-{
- gUnknown_08593704,
-};
-//*
-const struct SpriteTemplate gBattleAnimSpriteTemplate_859371C =
-{
- .tileTag = ANIM_TAG_EXPLOSION,
- .paletteTag = ANIM_TAG_EXPLOSION,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08593718,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A77C8,
-};
-
-const union AffineAnimCmd gUnknown_08593734[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 4),
- AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd gUnknown_08593754[] =
-{
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08593764[] =
-{
- AFFINEANIMCMD_FRAME(0xFFF8, 0x4, 0, 8),
- AFFINEANIMCMD_LOOP(0),
- AFFINEANIMCMD_FRAME(0x10, 0xFFF8, 0, 8),
- AFFINEANIMCMD_FRAME(0xFFF0, 0x8, 0, 8),
- AFFINEANIMCMD_LOOP(1),
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_085937A4[] =
-{
- gUnknown_08593734,
- gUnknown_08593754,
- gUnknown_08593764,
-};
-//*
-const struct SpriteTemplate gUnknown_085937B0 =
-{
- .tileTag = ANIM_TAG_BREAKING_EGG,
- .paletteTag = ANIM_TAG_BREAKING_EGG,
- .oam = &gUnknown_08524AF4,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_085937A4,
- .callback = sub_8105538,
-};
-
-const union AffineAnimCmd gUnknown_085937C8[] =
-{
- AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
- AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 30),
- AFFINEANIMCMD_END_ALT(1),
-};
-
-const union AffineAnimCmd gUnknown_085937E0[] =
-{
- AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
- AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 15),
- AFFINEANIMCMD_END_ALT(1),
-};
-
-const union AffineAnimCmd gUnknown_085937F8[] =
-{
- AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
- AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 45),
- AFFINEANIMCMD_END_ALT(1),
-};
-
-const union AffineAnimCmd *const gUnknown_08593810[] =
-{
- gUnknown_085937C8,
- gUnknown_085937E0,
-};
-
-const union AffineAnimCmd *const gUnknown_08593818[] =
-{
- gUnknown_085937F8,
-};
-
-const struct SpriteTemplate gUnknown_0859381C =
-{
- .tileTag = ANIM_TAG_THIN_RING,
- .paletteTag = ANIM_TAG_THIN_RING,
- .oam = &gUnknown_085249DC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593810,
- .callback = sub_80A77C8,
-};
-//*
-const union AffineAnimCmd gUnknown_08593834[] =
-{
- AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
- AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 30),
- AFFINEANIMCMD_END_ALT(1),
-};
-
-const union AffineAnimCmd *const gUnknown_0859384C[] =
-{
- gUnknown_08593834,
-};
-
-const struct SpriteTemplate gUnknown_08593850 =
-{
- .tileTag = ANIM_TAG_THIN_RING,
- .paletteTag = ANIM_TAG_THIN_RING,
- .oam = &gUnknown_08524AFC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_0859384C,
- .callback = sub_80A77C8,
-};
-
-const struct SpriteTemplate gUnknown_08593868 =
-{
- .tileTag = ANIM_TAG_THIN_RING,
- .paletteTag = ANIM_TAG_THIN_RING,
- .oam = &gUnknown_08524AFC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593810,
- .callback = sub_81051C4,
-};
-
-const struct SpriteTemplate gUnknown_08593880 =
-{
- .tileTag = ANIM_TAG_THIN_RING,
- .paletteTag = ANIM_TAG_THIN_RING,
- .oam = &gUnknown_08524AFC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593818,
- .callback = sub_81052A4,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8593898 =
-{
- .tileTag = ANIM_TAG_THIN_RING,
- .paletteTag = ANIM_TAG_THIN_RING,
- .oam = &gUnknown_08524AFC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593810,
- .callback = sub_81054E8,
-};
-
-const union AffineAnimCmd gUnknown_085938B0[] =
-{
- AFFINEANIMCMD_FRAME(96, -13, 0, 8),
- AFFINEANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_085938C0[] =
-{
- ANIMCMD_FRAME(0, 3),
- ANIMCMD_FRAME(4, 3),
- ANIMCMD_FRAME(8, 3),
- ANIMCMD_FRAME(4, 3),
- ANIMCMD_FRAME(0, 3),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_085938D8[] =
-{
- gUnknown_085938C0,
-};
-
-const struct SpriteTemplate gUnknown_085938DC =
-{
- .tileTag = ANIM_TAG_SPEED_DUST,
- .paletteTag = ANIM_TAG_SPEED_DUST,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_085938D8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8105C48,
-};
-
-const s8 gUnknown_085938F4[][2] =
-{
- {30, 28},
- {-20, 24},
- {16, 26},
- {-10, 28},
-};
-
-const union AnimCmd gUnknown_085938FC[] =
-{
- ANIMCMD_FRAME(0, 6),
- ANIMCMD_FRAME(16, 6),
- ANIMCMD_FRAME(32, 15),
- ANIMCMD_FRAME(16, 6),
- ANIMCMD_FRAME(0, 6),
- ANIMCMD_FRAME(16, 6, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 15, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 6, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 6),
- ANIMCMD_FRAME(16, 6),
- ANIMCMD_FRAME(32, 15),
- ANIMCMD_FRAME(16, 6),
- ANIMCMD_FRAME(0, 6),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593934[] =
-{
- gUnknown_085938FC,
-};
-
-const struct SpriteTemplate gUnknown_08593938 =
-{
- .tileTag = ANIM_TAG_BELL,
- .paletteTag = ANIM_TAG_BELL,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08593934,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A77C8,
-};
-
-const u16 gUnknown_08593950[] =
-{
- 10206,
- 9999,
- 9998,
- 0,
-};
-
-const struct SpriteTemplate gUnknown_08593958 =
-{
- .tileTag = ANIM_TAG_MUSIC_NOTES_2,
- .paletteTag = ANIM_TAG_MUSIC_NOTES_2,
- .oam = &gUnknown_0852490C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8105DE8,
-};
-
-const struct SpriteTemplate gUnknown_08593970 =
-{
- .tileTag = ANIM_TAG_MAGENTA_HEART,
- .paletteTag = ANIM_TAG_MAGENTA_HEART,
- .oam = &gUnknown_0852490C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8105E60,
-};
-
-const union AffineAnimCmd gUnknown_08593988[] =
-{
- AFFINEANIMCMD_FRAME(0x000A, 0xFFF3, 0x00, 0x0A),
- AFFINEANIMCMD_FRAME(0xFFF6, 0x000D, 0x00, 0x0A),
- AFFINEANIMCMD_END,
-};
-
-const struct SpriteTemplate gUnknown_085939A0 =
-{
- .tileTag = ANIM_TAG_RED_HEART,
- .paletteTag = ANIM_TAG_RED_HEART,
- .oam = &gUnknown_0852490C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8106140,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_85939B8 =
-{
- .tileTag = ANIM_TAG_RED_HEART,
- .paletteTag = ANIM_TAG_RED_HEART,
- .oam = &gUnknown_0852490C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81061C4,
-};
-
-const struct SpriteTemplate gUnknown_085939D0 =
-{
- .tileTag = ANIM_TAG_RED_HEART,
- .paletteTag = ANIM_TAG_RED_HEART,
- .oam = &gUnknown_0852490C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810624C,
-};
-
-const union AffineAnimCmd gUnknown_085939E8[] =
-{
- AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
- AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1),
- AFFINEANIMCMD_JUMP(1),
-};
-
-const union AffineAnimCmd *const gUnknown_08593A00[] =
-{
- gUnknown_085939E8,
-};
-
-const struct SpriteTemplate gHiddenPowerOrbSpriteTemplate =
-{
- .tileTag = ANIM_TAG_RED_ORB,
- .paletteTag = ANIM_TAG_RED_ORB,
- .oam = &gUnknown_0852496C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593A00,
- .callback = sub_810673C,
-};
-
-const struct SpriteTemplate gHiddenPowerOrbScatterSpriteTemplate =
-{
- .tileTag = ANIM_TAG_RED_ORB,
- .paletteTag = ANIM_TAG_RED_ORB,
- .oam = &gUnknown_085249CC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593A00,
- .callback = sub_8106878,
-};
-
-const union AffineAnimCmd gUnknown_08593A34[] =
-{
- AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
- AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1),
- AFFINEANIMCMD_JUMP(1),
-};
-
-const union AffineAnimCmd *const gUnknown_08593A4C[] =
-{
- gUnknown_08593A34,
-};
-
-const struct SpriteTemplate gUnknown_08593A50 =
-{
- .tileTag = ANIM_TAG_RED_ORB_2,
- .paletteTag = ANIM_TAG_RED_ORB_2,
- .oam = &gUnknown_085249C4,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593A4C,
- .callback = sub_8106944,
-};
-
-const union AnimCmd gUnknown_08593A68[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(4, 4),
- ANIMCMD_FRAME(8, 4),
- ANIMCMD_FRAME(4, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593A80[] =
-{
- gUnknown_08593A68,
-};
-
-const struct SpriteTemplate gUnknown_08593A84 =
-{
- .tileTag = ANIM_TAG_EYE_SPARKLE,
- .paletteTag = ANIM_TAG_EYE_SPARKLE,
- .oam = &gUnknown_0852490C,
- .anims = gUnknown_08593A80,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81069B8,
-};
-
-const union AnimCmd gUnknown_08593A9C[] =
-{
- ANIMCMD_FRAME(0, 24),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593AA4[] =
-{
- gUnknown_08593A9C,
-};
-
-const struct SpriteTemplate gUnknown_08593AA8 =
-{
- .tileTag = ANIM_TAG_ANGEL,
- .paletteTag = ANIM_TAG_ANGEL,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08593AA4,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81069D0,
-};
-
-const struct SpriteTemplate gUnknown_08593AC0 =
-{
- .tileTag = ANIM_TAG_PINK_HEART,
- .paletteTag = ANIM_TAG_PINK_HEART,
- .oam = &gUnknown_0852490C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8106AD0,
-};
-
-const union AnimCmd gUnknown_08593AD8[] =
-{
- ANIMCMD_FRAME(0, 3),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd gUnknown_08593AE0[] =
-{
- ANIMCMD_FRAME(16, 3),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd *const gUnknown_08593AE8[] =
-{
- gUnknown_08593AD8,
- gUnknown_08593AE0,
-};
-
-const struct SpriteTemplate gUnknown_08593AF0 =
-{
- .tileTag = ANIM_TAG_DEVIL,
- .paletteTag = ANIM_TAG_DEVIL,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08593AE8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8106B54,
-};
-
-const union AnimCmd gUnknown_08593B08[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(48, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08593B1C[] =
-{
- ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
- ANIMCMD_FRAME(48, 4, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593B30[] =
-{
- gUnknown_08593B08,
- gUnknown_08593B1C,
-};
-
-const struct SpriteTemplate gUnknown_08593B38 =
-{
- .tileTag = ANIM_TAG_SWIPE,
- .paletteTag = ANIM_TAG_SWIPE,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08593B30,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8106C80,
-};
-
-const union AnimCmd gUnknown_08593B50[] =
-{
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(16, 8),
- ANIMCMD_FRAME(32, 8),
- ANIMCMD_FRAME(16, 8),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_08593B64[] =
-{
- ANIMCMD_FRAME(16, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(32, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gUnknown_08593B78[] =
-{
- gUnknown_08593B50,
- gUnknown_08593B64,
-};
-
-const struct SpriteTemplate gUnknown_08593B80 =
-{
- .tileTag = ANIM_TAG_MOVEMENT_WAVES,
- .paletteTag = ANIM_TAG_MOVEMENT_WAVES,
- .oam = &gUnknown_08524914,
- .anims = gUnknown_08593B78,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8106CD0,
-};
-
-const union AffineAnimCmd gUnknown_08593B98[] =
-{
- AFFINEANIMCMD_FRAME(-12, 8, 0, 4),
- AFFINEANIMCMD_FRAME(20, -20, 0, 4),
- AFFINEANIMCMD_FRAME(-8, 12, 0, 4),
- AFFINEANIMCMD_END,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8593BB8 =
-{
- .tileTag = ANIM_TAG_JAGGED_MUSIC_NOTE,
- .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE,
- .oam = &gUnknown_08524914,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8106E00,
-};
-
-const union AffineAnimCmd gUnknown_08593BD0[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 5),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08593BE0[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 16),
- AFFINEANIMCMD_END_ALT(1),
-};
-
-const union AffineAnimCmd gUnknown_08593BF0[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 16),
- AFFINEANIMCMD_END_ALT(1),
-};
-
-const union AffineAnimCmd *const gUnknown_08593C00[] =
-{
- gUnknown_08593BD0,
- gUnknown_08593BE0,
- gUnknown_08593BF0,
-};
-
-extern const union AnimCmd *const gUnknown_08592FCC[];
-const struct SpriteTemplate gUnknown_08593C0C =
-{
- .tileTag = ANIM_TAG_MUSIC_NOTES_2,
- .paletteTag = ANIM_TAG_MUSIC_NOTES_2,
- .oam = &gUnknown_0852496C,
- .anims = gUnknown_08592FCC,
- .images = NULL,
- .affineAnims = gUnknown_08593C00,
- .callback = sub_8106F60,
-};
-
-const struct SpriteTemplate gUnknown_08593C24 =
-{
- .tileTag = ANIM_TAG_MUSIC_NOTES_2,
- .paletteTag = ANIM_TAG_MUSIC_NOTES_2,
- .oam = &gUnknown_0852496C,
- .anims = gUnknown_08592FCC,
- .images = NULL,
- .affineAnims = gUnknown_08593C00,
- .callback = sub_8106F00,
-};
-
-const union AffineAnimCmd gUnknown_08593C3C[] =
-{
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08593C4C[] =
-{
- AFFINEANIMCMD_FRAME(0x200, 0x100, 0, 0),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gUnknown_08593C5C[] =
-{
- gUnknown_08593C3C,
- gUnknown_08593C4C,
-};
-
-const struct SpriteTemplate gUnknown_08593C64 =
-{
- .tileTag = ANIM_TAG_GUARD_RING,
- .paletteTag = ANIM_TAG_GUARD_RING,
- .oam = &gUnknown_08524B1C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gUnknown_08593C5C,
- .callback = sub_81070AC,
-};
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 97c264d49..360dd2466 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -30,8 +30,8 @@
#include "field_weather.h"
#include "international_string_util.h"
#include "naming_screen.h"
-#include "field_screen.h"
#include "pokemon_storage_system.h"
+#include "field_screen_effect.h"
#include "battle.h" // to get rid of later
struct EggHatchData
@@ -61,8 +61,6 @@ extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
extern const u8 gText_HatchedFromEgg[];
extern const u8 gText_NickHatchPrompt[];
-extern void play_some_sound(void);
-
static void Task_EggHatch(u8 taskID);
static void CB2_EggHatch_0(void);
static void CB2_EggHatch_1(void);
@@ -580,7 +578,7 @@ static void Task_EggHatchPlayBGM(u8 taskID)
if (gTasks[taskID].data[0] == 0)
{
StopMapMusic();
- play_some_sound();
+ PlayRainSoundEffect();
}
if (gTasks[taskID].data[0] == 1)
PlayBGM(MUS_ME_SHINKA);
diff --git a/src/electric.c b/src/electric.c
index 5d65915b2..ed495fa59 100644
--- a/src/electric.c
+++ b/src/electric.c
@@ -1,24 +1,43 @@
#include "global.h"
#include "battle_anim.h"
#include "constants/rgb.h"
+#include "trig.h"
+#include "constants/songs.h"
+#include "sound.h"
-extern void sub_810A1A8(struct Sprite *);
-extern void sub_810A214(struct Sprite *);
-extern void sub_810A274(struct Sprite *);
-extern void sub_810A308(struct Sprite *);
+extern void sub_810E2C8(struct Sprite *);
+extern bool8 sub_810B614(struct Task *task, u8 taskId);
extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
-extern void sub_810A46C(struct Sprite *);
-extern void sub_810A5BC(struct Sprite *);
-extern void sub_810A628(struct Sprite *);
-extern void sub_810A75C(struct Sprite *);
-extern void sub_810A9DC(struct Sprite *);
-extern void sub_810AA2C(struct Sprite *);
-extern void sub_810ACD8(struct Sprite *);
-extern void sub_810AD30(struct Sprite *);
-extern void sub_810AD98(struct Sprite *);
-extern void sub_810B1F0(struct Sprite *);
-extern void sub_810B23C(struct Sprite *);
-extern void sub_810B51C(struct Sprite *);
+
+static void sub_810A1A8(struct Sprite *);
+static void sub_810A1F8(struct Sprite *);
+static void sub_810A214(struct Sprite *);
+static void sub_810A258(struct Sprite *);
+static void sub_810A274(struct Sprite *);
+static void sub_810A308(struct Sprite *);
+static void sub_810A46C(struct Sprite *);
+static void sub_810A4F4(struct Sprite *);
+static void sub_810A56C(struct Sprite *);
+static void sub_810A5BC(struct Sprite *);
+static void sub_810A628(struct Sprite *);
+static void sub_810A6EC(struct Sprite *);
+static void sub_810A75C(struct Sprite *);
+static void sub_810A834(u8 taskId);
+static void sub_810A9DC(struct Sprite *);
+static void sub_810AA2C(struct Sprite *);
+static void sub_810AAB0(struct Sprite *);
+static void sub_810AB78(u8 taskId);
+static void sub_810AC8C(struct Sprite *);
+static void sub_810ACC0(struct Sprite *);
+static void sub_810ACD8(struct Sprite *);
+static void sub_810AD30(struct Sprite *);
+static void sub_810AD98(struct Sprite *);
+static void sub_810ADF8(struct Sprite *);
+static bool8 sub_810B154(struct Task *task, u8 taskId);
+static void sub_810B1F0(struct Sprite *);
+static void sub_810B23C(struct Sprite *);
+static bool8 sub_810B430(struct Task *task, u8 taskId);
+static void sub_810B51C(struct Sprite *);
const union AnimCmd gUnknown_085956A4[] =
{
@@ -436,3 +455,1041 @@ const struct SpriteTemplate gUnknown_08595A30 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810B51C,
};
+
+static void sub_810A1A8(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->callback = sub_810A1F8;
+}
+
+static void sub_810A1F8(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_810A214(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->callback = sub_810A258;
+}
+
+static void sub_810A258(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ DestroySpriteAndMatrix(sprite);
+}
+
+static void sub_810A274(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->pos1.y -= gBattleAnimArgs[1];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = TranslateSpriteInCircleOverDuration;
+}
+
+static void sub_810A308(struct Sprite *sprite)
+{
+ u8 battler;
+ u32 matrixNum;
+ s16 sineVal;
+
+ switch (gBattleAnimArgs[4])
+ {
+ case 0:
+ battler = gBattleAnimAttacker;
+ break;
+ case 1:
+ default:
+ battler = gBattleAnimTarget;
+ break;
+ case 2:
+ if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
+ battler = gBattleAnimAttacker;
+ else
+ battler = BATTLE_PARTNER(gBattleAnimAttacker);
+ break;
+ case 3:
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
+ battler = BATTLE_PARTNER(gBattleAnimTarget);
+ else
+ battler = gBattleAnimTarget;
+ break;
+ }
+
+ if (gBattleAnimArgs[5] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X);
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+
+ sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
+ sprite->pos2.y = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8;
+
+ if (gBattleAnimArgs[6] & 1)
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
+
+ matrixNum = sprite->oam.matrixNum;
+ sineVal = gSineTable[gBattleAnimArgs[2]];
+
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[gBattleAnimArgs[2] + 64];
+ gOamMatrices[matrixNum].b = sineVal;
+ gOamMatrices[matrixNum].c = -sineVal;
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->callback = sub_810E2C8;
+}
+
+static void sub_810A46C(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5] = gBattleAnimArgs[2];
+ sprite->data[6] = gBattleAnimArgs[5];
+ sprite->data[7] = gBattleAnimArgs[4];
+ sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
+ sprite->callback = sub_810A4F4;
+ sub_810A4F4(sprite);
+}
+
+static void sub_810A4F4(struct Sprite *sprite)
+{
+ if (!AnimTranslateLinear(sprite))
+ {
+ sprite->pos2.x += Sin(sprite->data[7], sprite->data[5]);
+ sprite->pos2.y += Cos(sprite->data[7], sprite->data[5]);
+ sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
+ if(!(sprite->data[7] % 3))
+ sprite->invisible ^= 1;
+ }
+ else
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_810A56C(struct Sprite *sprite)
+{
+ if (--sprite->data[5] == -1)
+ {
+ sprite->invisible ^= 1;
+ sprite->data[5] = sprite->data[4];
+ }
+ if (sprite->data[3]-- <= 0)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_810A5BC(struct Sprite *sprite)
+{
+ if (IsContest() || GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
+ sprite->data[3] = gBattleAnimArgs[0];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_810A56C;
+}
+
+static void sub_810A628(struct Sprite *sprite)
+{
+ u8 battler;
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ if (gBattleAnimArgs[7] & 0x8000)
+ battler = gBattleAnimTarget;
+ else
+ battler = gBattleAnimAttacker;
+
+ if (IsContest() || GetBattlerSide(battler) == B_SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
+
+ sprite->data[4] = gBattleAnimArgs[7] & 0x7FFF;
+ sprite->data[5] = gBattleAnimArgs[2];
+ sprite->data[6] = gBattleAnimArgs[5];
+ sprite->data[7] = gBattleAnimArgs[4];
+
+ sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
+ sprite->callback = sub_810A6EC;
+ sprite->callback(sprite);
+}
+
+static void sub_810A6EC(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[7], sprite->data[5]);
+ sprite->pos2.y = Cos(sprite->data[7], sprite->data[5]);
+
+ sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
+ if (sprite->data[7] % sprite->data[4] == 0)
+ sprite->invisible ^= 1;
+
+ if (sprite->data[0]-- <= 0)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_810A75C(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->oam.tileNum += gBattleAnimArgs[3] * 4;
+
+ if (gBattleAnimArgs[3] == 1)
+ sprite->oam.matrixNum = 8;
+ else if (gBattleAnimArgs[3] == 2)
+ sprite->oam.matrixNum = 16;
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_810A7DC(u8 taskId)
+{
+ gTasks[taskId].data[0] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].func = sub_810A834;
+}
+
+#ifdef NONMATCHING // couldn't get the proper tail merging in the "CreateSprite" switch cases.(ported from ruby)
+static void sub_810A834(u8 taskId)
+{
+ u16 r8;
+ s16 r12;
+ s16 r2;
+ u8 spriteId = 0;
+ u8 r7 = 0;
+ u8 sp = gTasks[taskId].data[2];
+ s16 r4 = gTasks[taskId].data[0];
+ s16 r6 = gTasks[taskId].data[1];
+
+ if (!gTasks[taskId].data[2])
+ {
+ r8 = 0;
+ r2 = 1;
+ r12 = 16;
+ }
+ else
+ {
+ r12 = 16;
+ r8 = 8;
+ r2 = 4;
+ }
+
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ r8 += r2 * 0;
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 1), 2);
+ r7++;
+ break;
+ case 2:
+ r8 += r2;
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 2), 2);
+ r7++;
+ break;
+ case 4:
+ r8 += r2 * 2;
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 3), 2);
+ r7++;
+ break;
+ case 6:
+ r8 += r2 * 3;
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 4), 2);
+ r7++;
+ break;
+ case 8:
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 5), 2);
+ r7++;
+ break;
+ case 10:
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ if (r7)
+ {
+ gSprites[spriteId].oam.tileNum += r8;
+ gSprites[spriteId].data[0] = sp;
+ gSprites[spriteId].callback(&gSprites[spriteId]);
+ }
+
+ gTasks[taskId].data[10]++;
+}
+#else
+NAKED
+static void sub_810A834(u8 taskId)
+{
+ asm_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\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ movs r5, 0\n\
+ movs r7, 0\n\
+ ldr r1, =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r9\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrb r2, [r0, 0xC]\n\
+ str r2, [sp]\n\
+ ldrh r4, [r0, 0x8]\n\
+ ldrh r6, [r0, 0xA]\n\
+ movs r3, 0xC\n\
+ ldrsh r0, [r0, r3]\n\
+ mov r10, r1\n\
+ cmp r0, 0\n\
+ bne _0810A878\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ movs r2, 0x1\n\
+ movs r1, 0x10\n\
+ mov r12, r1\n\
+ b _0810A882\n\
+ .pool\n\
+_0810A878:\n\
+ movs r2, 0x10\n\
+ mov r12, r2\n\
+ movs r3, 0x8\n\
+ mov r8, r3\n\
+ movs r2, 0x4\n\
+_0810A882:\n\
+ mov r0, r9\n\
+ lsls r1, r0, 2\n\
+ adds r0, r1, r0\n\
+ lsls r0, 3\n\
+ add r0, r10\n\
+ movs r3, 0x1C\n\
+ ldrsh r0, [r0, r3]\n\
+ mov r10, r1\n\
+ cmp r0, 0xA\n\
+ bhi _0810A978\n\
+ lsls r0, 2\n\
+ ldr r1, =_0810A8A4\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .pool\n\
+ .align 2, 0\n\
+_0810A8A4:\n\
+ .4byte _0810A8D0\n\
+ .4byte _0810A978\n\
+ .4byte _0810A8E4\n\
+ .4byte _0810A978\n\
+ .4byte _0810A904\n\
+ .4byte _0810A978\n\
+ .4byte _0810A91A\n\
+ .4byte _0810A978\n\
+ .4byte _0810A93C\n\
+ .4byte _0810A978\n\
+ .4byte _0810A970\n\
+_0810A8D0:\n\
+ ldr r0, =gUnknown_08595828\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ mov r4, r12\n\
+ lsls r3, r4, 16\n\
+ b _0810A952\n\
+ .pool\n\
+_0810A8E4:\n\
+ mov r0, r12\n\
+ lsls r3, r0, 17\n\
+ mov r1, r8\n\
+ adds r0, r1, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ ldr r0, =gUnknown_08595828\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ b _0810A952\n\
+ .pool\n\
+_0810A904:\n\
+ mov r3, r12\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r3, r0, 1\n\
+ adds r3, r0\n\
+ lsls r0, r2, 1\n\
+ add r0, r8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ b _0810A946\n\
+_0810A91A:\n\
+ mov r0, r12\n\
+ lsls r3, r0, 18\n\
+ lsls r0, r2, 1\n\
+ adds r0, r2\n\
+ add r0, r8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ ldr r0, =gUnknown_08595828\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ b _0810A952\n\
+ .pool\n\
+_0810A93C:\n\
+ mov r1, r12\n\
+ lsls r0, r1, 16\n\
+ asrs r0, 16\n\
+ lsls r3, r0, 2\n\
+ adds r3, r0\n\
+_0810A946:\n\
+ ldr r0, =gUnknown_08595828\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ lsls r3, 16\n\
+_0810A952:\n\
+ asrs r3, 16\n\
+ adds r2, r3\n\
+ lsls r2, 16\n\
+ asrs r2, 16\n\
+ movs r3, 0x2\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ b _0810A978\n\
+ .pool\n\
+_0810A970:\n\
+ mov r0, r9\n\
+ bl DestroyAnimVisualTask\n\
+ b _0810A9BC\n\
+_0810A978:\n\
+ cmp r7, 0\n\
+ beq _0810A9AC\n\
+ ldr r4, =gSprites\n\
+ lsls r3, r5, 4\n\
+ adds r3, r5\n\
+ lsls r3, 2\n\
+ adds r0, r3, r4\n\
+ ldrh r5, [r0, 0x4]\n\
+ lsls r2, r5, 22\n\
+ lsrs r2, 22\n\
+ add r2, r8\n\
+ ldr r6, =0x000003ff\n\
+ adds r1, r6, 0\n\
+ ands r2, r1\n\
+ ldr r1, =0xfffffc00\n\
+ ands r1, r5\n\
+ orrs r1, r2\n\
+ strh r1, [r0, 0x4]\n\
+ mov r1, sp\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0, 0x2E]\n\
+ adds r4, 0x1C\n\
+ adds r3, r4\n\
+ ldr r1, [r3]\n\
+ bl _call_via_r1\n\
+_0810A9AC:\n\
+ ldr r0, =gTasks\n\
+ mov r1, r10\n\
+ add r1, r9\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldrh r0, [r1, 0x1C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x1C]\n\
+_0810A9BC:\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\
+ .pool\n\
+ ");
+}
+#endif
+
+static void sub_810A9DC(struct Sprite *sprite)
+{
+ if (!sprite->data[0])
+ {
+ sprite->oam.shape = 2;
+ sprite->oam.size = 0;
+ }
+ else
+ {
+ sprite->oam.shape = 0;
+ sprite->oam.size = 1;
+ }
+ if (++sprite->data[1] == 15)
+ DestroySprite(sprite);
+}
+
+static void sub_810AA2C(struct Sprite *sprite)
+{
+ u8 spriteId;
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ spriteId = CreateSprite(&gUnknown_08595840, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority);
+ gSprites[spriteId].oam.tileNum += 8;
+ gAnimVisualTaskCount++;
+ gSprites[spriteId].callback = sub_810AAB0;
+ sprite->callback = sub_810AAB0;
+}
+
+static void sub_810AAB0(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 3)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ }
+
+ if (++sprite->data[1] == 51)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810AAFC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (!gBattleAnimArgs[0])
+ {
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+ else
+ {
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ task->data[15] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+
+ task->data[6] = gBattleAnimArgs[1];
+ task->data[7] = 0;
+ task->data[8] = 0;
+ task->data[9] = 0;
+ task->data[10] = 0;
+ task->data[11] = gBattleAnimArgs[3];
+ task->data[12] = 0;
+ task->data[13] = gBattleAnimArgs[2];
+ task->func = sub_810AB78;
+}
+
+void sub_810AB78(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (task->data[6])
+ {
+ if (++task->data[12] > task->data[13])
+ {
+ u8 spriteId;
+ task->data[12] = 0;
+ spriteId = CreateSprite(&gUnknown_085958A8, task->data[14], task->data[15], 2);
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->pos1.x += gUnknown_08595858[task->data[9]][0];
+ sprite->pos1.y += gUnknown_08595858[task->data[9]][1];
+
+ sprite->data[0] = 40 - task->data[8] * 5;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = task->data[14];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = task->data[15];
+ sprite->data[5] = taskId;
+
+ InitAnimLinearTranslation(sprite);
+ StoreSpriteCallbackInData6(sprite, sub_810ACC0);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+
+ if (++task->data[9] > 15)
+ task->data[9] = 0;
+
+ if (++task->data[10] >= task->data[11])
+ {
+ task->data[10] = 0;
+ if (task->data[8] <= 5)
+ task->data[8]++;
+ }
+
+ task->data[7]++;
+ task->data[6]--;
+ }
+ }
+ }
+ else if(task->data[7] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_810AC8C(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ {
+ gTasks[sprite->data[5]].data[7]--;
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_810ACC0(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, 1);
+ sprite->callback = sub_810AC8C;
+}
+
+static void sub_810ACD8(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[0])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+}
+
+static void sub_810AD30(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[0])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+
+ sprite->pos2.x = gBattleAnimArgs[1];
+ sprite->pos2.y = gBattleAnimArgs[2];
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+}
+
+static void sub_810AD98(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->data[6] = GetAnimBattlerSpriteId(0);
+ sprite->data[7] = 16;
+
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ sprite->data[7] *= -1;
+
+ sprite->callback = sub_810ADF8;
+}
+
+static void sub_810ADF8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 40)
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos1.x += sprite->data[7];
+ gSprites[sprite->data[6]].pos2.x += sprite->data[7];
+ if ((u16)(sprite->pos1.x + 80) > 400)
+ DestroySpriteAndMatrix(sprite);
+ }
+}
+
+void sub_810AE5C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[15] = GetAnimBattlerSpriteId(0);
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ task->data[14] = -32;
+ task->data[13] = 2;
+ }
+ else
+ {
+ task->data[14] = 32;
+ task->data[13] = -2;
+ }
+
+ gSprites[task->data[15]].pos2.x = task->data[14];
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ gSprites[task->data[15]].invisible ^= 1;
+
+ if (task->data[14])
+ {
+ task->data[14] += task->data[13];
+ gSprites[task->data[15]].pos2.x = task->data[14];
+ }
+ else
+ task->data[0]++;
+
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ gSprites[task->data[15]].invisible ^= 1;
+
+ if (++task->data[2] == 8)
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ gSprites[task->data[15]].invisible = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_810AFCC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch(task->data[0])
+ {
+ case 0:
+ task->data[1] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1;
+
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ task->data[5] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ task->data[4] = (task->data[1] * 128) + 120;
+ break;
+ case 4:
+ task->data[3] = 120 - (task->data[1] * 128);
+ task->data[5] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ task->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - (task->data[1] * 32);
+ break;
+ default:
+ if ((gBattleAnimArgs[0] & 1) != 0)
+ {
+ task->data[3] = 256;
+ task->data[4] = -16;
+ }
+ else
+ {
+ task->data[3] = -16;
+ task->data[4] = 256;
+ }
+
+ if (task->data[1] == 1)
+ {
+ task->data[5] = 80 - gBattleAnimArgs[0] * 10;
+ }
+ else
+ {
+ u16 temp;
+ task->data[5] = gBattleAnimArgs[0] * 10 + 40;
+ temp = task->data[3];
+ task->data[3] = task->data[4];
+ task->data[4] = temp;
+ }
+ }
+
+ if (task->data[3] < task->data[4])
+ {
+ task->data[1] = 1;
+ task->data[6] = 0;
+ }
+ else
+ {
+ task->data[1] = -1;
+ task->data[6] = 3;
+ }
+
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[2] > 0)
+ {
+ task->data[2] = 0;
+ if (sub_810B154(task, taskId) || sub_810B154(task, taskId))
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (task->data[7] == 0)
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static bool8 sub_810B154(struct Task *task, u8 taskId)
+{
+ u8 spriteId = CreateSprite(&gUnknown_08595A00, task->data[3], task->data[5], 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 7;
+ task->data[7]++;
+ }
+
+ task->data[6] += task->data[1];
+ if (task->data[6] < 0)
+ task->data[6] = 3;
+
+ if (task->data[6] > 3)
+ task->data[6] = 0;
+
+ task->data[3] += task->data[1] * 16;
+
+ if ((task->data[1] == 1 && task->data[3] >= task->data[4])
+ || (task->data[1] == -1 && task->data[3] <= task->data[4]))
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_810B1F0(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 12)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_810B23C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ StartSpriteAffineAnim(sprite, 2);
+ sprite->data[0]++;
+ break;
+ case 1:
+ if (sprite->affineAnimEnded)
+ DestroySpriteAndMatrix(sprite);
+ }
+}
+
+void sub_810B29C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[6] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ task->data[7] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ task->data[8] = 4;
+ task->data[10] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ task->data[9] = (task->data[10] - task->data[6]) / 5;
+ task->data[4] = 7;
+ task->data[5] = -1;
+ task->data[11] = 12;
+ task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76);
+ task->data[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
+ task->data[14] = task->data[12];
+ task->data[15] = (task->data[13] - task->data[12]) / 3;
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 0)
+ {
+ task->data[1] = 0;
+ if (sub_810B430(task, taskId))
+ {
+ if (task->data[2] == 5)
+ task->data[0] = 3;
+ else
+ task->data[0]++;
+ }
+ }
+
+ if (task->data[11])
+ task->data[11]--;
+ break;
+ case 2:
+ if (task->data[11])
+ task->data[11]--;
+
+ if (++task->data[1] > 4)
+ {
+ task->data[1] = 0;
+ if (task->data[2] & 1)
+ {
+ task->data[7] = 4;
+ task->data[8] = 68;
+ task->data[4] = 0;
+ task->data[5] = 1;
+ }
+ else
+ {
+ task->data[7] = 68;
+ task->data[8] = 4;
+ task->data[4] = 7;
+ task->data[5] = -1;
+ }
+
+ if (task->data[11])
+ task->data[0] = 4;
+ else
+ task->data[0] = 1;
+ }
+ break;
+ case 3:
+ if (task->data[3] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ case 4:
+ if (task->data[11])
+ task->data[11]--;
+ else
+ task->data[0] = 1;
+ break;
+ }
+}
+
+static bool8 sub_810B430(struct Task *task, u8 taskId)
+{
+ u8 spriteId = CreateSprite(&gUnknown_08595A30, task->data[6], task->data[7], 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.tileNum += task->data[4];
+ task->data[4] += task->data[5];
+ if (task->data[4] < 0)
+ task->data[4] = 7;
+ if (task->data[4] > 7)
+ task->data[4] = 0;
+
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 3;
+ task->data[3]++;
+ }
+
+ if (task->data[4] == 0 && task->data[5] > 0)
+ {
+ task->data[14] += task->data[15];
+ PlaySE12WithPanning(SE_W085, task->data[14]);
+ }
+
+ if ((task->data[5] < 0 && task->data[7] <= task->data[8])
+ || (task->data[5] > 0 && task->data[7] >= task->data[8]))
+ {
+ task->data[2]++;
+ task->data[6] += task->data[9];
+ return TRUE;
+ }
+ else
+ {
+ task->data[7] += task->data[5] * 8;
+ return FALSE;
+ }
+}
+
+static void sub_810B51C(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 12)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_810B55C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[15] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 32;
+ task->data[14] = task->data[15];
+ while (task->data[14] > 16)
+ {
+ task->data[14] -= 32;
+ }
+
+ task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ task->data[12] = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 2;
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if (sub_810B614(task, taskId))
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (task->data[10] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
diff --git a/src/event_data.c b/src/event_data.c
index 8a998fe26..f6a1cde78 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "event_data.h"
+#include "pokedex.h"
#define TEMP_FLAGS_SIZE 0x4
#define TEMP_UPPER_FLAGS_SIZE 0x8
@@ -67,7 +68,7 @@ void EnableNationalPokedex(void)
gSaveBlock2Ptr->pokedex.nationalMagic = 0xDA;
*nationalDexVar = 0x302;
FlagSet(FLAG_SYS_NATIONAL_DEX);
- gSaveBlock2Ptr->pokedex.unknown1 = 1;
+ gSaveBlock2Ptr->pokedex.mode = DEX_MODE_NATIONAL;
gSaveBlock2Ptr->pokedex.order = 0;
sub_80BB358();
}
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index ef125e564..ffa8f53c9 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -1144,7 +1144,7 @@ u8 GetFirstInactiveEventObjectId(void)
u8 GetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId)
{
- if (localId < 0xFF)
+ if (localId < EVENT_OBJ_ID_PLAYER)
{
return GetEventObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId);
}
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index c52f5190f..3774ef2b3 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -8,12 +8,11 @@
#include "event_scripts.h"
#include "fieldmap.h"
#include "field_control_avatar.h"
-#include "field_fadetransition.h"
#include "field_player_avatar.h"
#include "field_poison.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "field_specials.h"
-#include "fldeff_80F9BCC.h"
+#include "fldeff_misc.h"
#include "item_menu.h"
#include "link.h"
#include "metatile_behavior.h"
@@ -522,13 +521,13 @@ static bool8 TryStartMiscWalkingScripts(u16 metatileBehavior)
}
else if (MetatileBehavior_IsSecretBaseGlitterMat(metatileBehavior) == TRUE)
{
- sub_80FA9D0();
+ DoSecretBaseGlitterMatSparkle();
return FALSE;
}
else if (MetatileBehavior_IsSecretBaseSoundMat(metatileBehavior) == TRUE)
{
PlayerGetDestCoords(&x, &y);
- sub_80FA970(MapGridGetMetatileIdAt(x, y));
+ PlaySecretBaseMusicNoteMatSound(MapGridGetMetatileIdAt(x, y));
return FALSE;
}
return FALSE;
diff --git a/src/field_effect.c b/src/field_effect.c
index 9d3eb2377..e1850d001 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -6,7 +6,7 @@
#include "field_effect.h"
#include "field_effect_helpers.h"
#include "field_player_avatar.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "field_weather.h"
#include "fieldmap.h"
#include "fldeff_groundshake.h"
@@ -244,7 +244,7 @@ extern void pal_fill_for_maplights(void);
extern void sub_80E1558(u8);
extern void sub_80E1570(void);
extern bool8 sub_80E1584(void);
-extern void sub_80AF0B4(void);
+extern void WarpFadeScreen(void);
// .rodata
const u32 gNewGameBirchPic[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
@@ -1593,8 +1593,8 @@ static void sub_80B7004(struct Task *task)
static void sub_80B7050(void)
{
- music_something();
- sub_80AF0B4();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
}
static void sub_80B7060(void)
@@ -1943,8 +1943,8 @@ static bool8 sub_80B7704(struct Task *task, struct EventObject *eventObject, str
static bool8 sub_80B77F8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- music_something();
- sub_80AF0B4();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
task->data[0]++;
return FALSE;
}
@@ -2099,8 +2099,8 @@ static bool8 sub_80B7BCC(struct Task *task, struct EventObject *eventObject, str
{
if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
{
- music_something();
- sub_80AF0B4();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
task->data[0]++;
}
return FALSE;
@@ -2161,8 +2161,8 @@ static void EscapeRopeFieldEffect_Step1(struct Task *task)
u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
if (task->data[14] != 0 && (--task->data[14]) == 0)
{
- music_something();
- sub_80AF0B4();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
}
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
@@ -2314,8 +2314,8 @@ static void TeleportFieldEffectTask3(struct Task *task)
if (task->data[4] >= 0xa8)
{
task->data[0]++;
- music_something();
- sub_80AF0B4();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
}
}
@@ -3123,7 +3123,7 @@ static void sub_80B9474(struct Task *task)
{
if (sub_80B9508(task->data[1]))
{
- sub_80AF0B4();
+ WarpFadeScreen();
task->data[0]++;
}
}
diff --git a/src/field_poison.c b/src/field_poison.c
index de05bc407..fac17dea9 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -4,7 +4,7 @@
#include "event_data.h"
#include "field_message_box.h"
#include "field_poison.h"
-#include "fldeff_80F9BCC.h"
+#include "fldeff_misc.h"
#include "frontier_util.h"
#include "party_menu.h"
#include "pokenav.h"
@@ -136,7 +136,7 @@ s32 DoPoisonFieldEffect(void)
}
if (numFainted != 0 || numPoisoned != 0)
{
- FldeffPoison_Start();
+ FldEffPoison_Start();
}
if (numFainted != 0)
{
diff --git a/src/field_screen.c b/src/field_screen.c
deleted file mode 100644
index 2d33d237f..000000000
--- a/src/field_screen.c
+++ /dev/null
@@ -1,15 +0,0 @@
-
-// Includes
-#include "global.h"
-
-// Static type declarations
-
-// Static RAM declarations
-IWRAM_DATA u8 *gUnknown_03000F50;
-IWRAM_DATA u32 filler_03000f54;
-
-// Static ROM declarations
-
-// .rodata
-
-// .text
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
new file mode 100644
index 000000000..b0572b393
--- /dev/null
+++ b/src/field_screen_effect.c
@@ -0,0 +1,1261 @@
+#include "global.h"
+#include "cable_club.h"
+#include "event_data.h"
+#include "fieldmap.h"
+#include "field_camera.h"
+#include "field_door.h"
+#include "field_effect.h"
+#include "event_object_movement.h"
+#include "field_player_avatar.h"
+#include "field_screen_effect.h"
+#include "field_special_scene.h"
+#include "field_weather.h"
+// #include "fldeff_flash.h"
+#include "gpu_regs.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "load_save.h"
+#include "main.h"
+#include "menu.h"
+#include "event_obj_lock.h"
+#include "metatile_behavior.h"
+#include "palette.h"
+#include "overworld.h"
+#include "scanline_effect.h"
+#include "script.h"
+#include "sound.h"
+#include "start_menu.h"
+#include "task.h"
+#include "text.h"
+#include "constants/event_object_movement_constants.h"
+#include "constants/songs.h"
+#include "constants/rgb.h"
+
+extern bool32 sub_81D6534(void);
+extern bool8 walkrun_is_standing_still(void);
+extern void ScriptUnfreezeEventObjects(void);
+extern void sub_81BE72C(void);
+extern void sub_80FB768(void);
+extern void sub_808D194(void);
+extern void sub_808D1C8(void);
+extern bool32 sub_808D1B4(void);
+extern bool32 sub_808D1E8(void);
+extern void sub_80B6B68(void);
+extern void sub_80B6E4C(u8, u8);
+extern void sub_80B75D8(u8);
+extern void sub_80B7A74(u8);
+extern void sub_808C0A8(u8);
+extern u8 GetMapPairFadeToType(u8, u8);
+extern u8 GetMapPairFadeFromType(u8, u8);
+
+extern const u16 gUnknown_82EC7CC[];
+
+// This file's functions.
+static void sub_8080B9C(u8);
+static void task_map_chg_seq_0807E20C(u8);
+static void task_map_chg_seq_0807E2CC(u8);
+static void task0A_fade_n_map_maybe(u8);
+static void sub_808115C(u8);
+static void palette_bg_faded_fill_white(void);
+static void sub_80AF438(u8);
+static bool32 sub_80AF71C(void);
+static void task0A_mpl_807E31C(u8 taskId);
+static void sub_80AFA0C(u8 taskId);
+static void sub_80AFA88(u8 taskId);
+static void task50_0807F0C8(u8);
+
+// const
+const u16 sFlashLevelPixelRadii[] = { 200, 72, 64, 56, 48, 40, 32, 24, 0 };
+const s32 gMaxFlashLevel = 8;
+
+const struct ScanlineEffectParams sFlashEffectParams =
+{
+ (void *)REG_ADDR_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
+ 1
+};
+
+// code
+static void palette_bg_faded_fill_white(void)
+{
+ CpuFastFill16(RGB_WHITE, gPlttBufferFaded, PLTT_SIZE);
+}
+
+static void palette_bg_faded_fill_black(void)
+{
+ CpuFastFill16(RGB_BLACK, gPlttBufferFaded, PLTT_SIZE);
+}
+
+void pal_fill_for_maplights(void)
+{
+ u8 previousMapType = GetLastUsedWarpMapType();
+ switch (GetMapPairFadeFromType(previousMapType, Overworld_GetMapTypeOfSaveblockLocation()))
+ {
+ case 0:
+ palette_bg_faded_fill_black();
+ FadeScreen(FADE_FROM_BLACK, 0);
+ break;
+ case 1:
+ palette_bg_faded_fill_white();
+ FadeScreen(FADE_FROM_WHITE, 0);
+ }
+}
+
+static void sub_80AF08C(void)
+{
+ palette_bg_faded_fill_white();
+ FadeScreen(FADE_FROM_WHITE, 8);
+}
+
+void pal_fill_black(void)
+{
+ palette_bg_faded_fill_black();
+ FadeScreen(FADE_FROM_BLACK, 0);
+}
+
+void WarpFadeScreen(void)
+{
+ u8 currentMapType = Overworld_GetMapTypeOfSaveblockLocation();
+ switch (GetMapPairFadeToType(currentMapType, GetDestinationWarpMapHeader()->mapType))
+ {
+ case 0:
+ FadeScreen(FADE_TO_BLACK, 0);
+ break;
+ case 1:
+ FadeScreen(FADE_TO_WHITE, 0);
+ }
+}
+
+static void sub_80AF0F4(u8 arg)
+{
+ sub_808C0A8(!arg);
+}
+
+static void task0A_nop_for_a_while(u8 taskId)
+{
+ if (sub_80AF71C() == TRUE)
+ DestroyTask(taskId);
+}
+
+void sub_80AF128(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_black();
+ CreateTask(task0A_nop_for_a_while, 10);
+}
+
+static void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID)
+{
+ if (sub_80AF71C() == TRUE)
+ {
+ DestroyTask(taskID);
+ EnableBothScriptContexts();
+ }
+}
+
+void sub_80AF168(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_black();
+ CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
+}
+
+void sub_80AF188(void)
+{
+ ScriptContext2_Enable();
+ pal_fill_black();
+ CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
+}
+
+static void task_mpl_807DD60(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[1] = sub_80B3050();
+ task->data[0]++;
+ break;
+ case 1:
+ if (gTasks[task->data[1]].isActive != TRUE)
+ {
+ pal_fill_for_maplights();
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (sub_80AF71C() == TRUE)
+ {
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80AF214(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ palette_bg_faded_fill_black();
+ CreateTask(task_mpl_807DD60, 10);
+}
+
+static void sub_80AF234(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_800ADF8();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!sub_800A520())
+ {
+ if (++task->data[1] > 1800)
+ sub_8011170(0x6000);
+ }
+ else
+ {
+ pal_fill_for_maplights();
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (sub_80AF71C() == TRUE)
+ {
+ sub_8009F18();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80AF2B4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_800ADF8();
+ task->data[0]++;
+ break;
+ case 1:
+ if (sub_800A520())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ sub_8009F18();
+ sub_8086C2C();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80AF314(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ palette_bg_faded_fill_black();
+ CreateTask(sub_80AF234, 10);
+}
+
+static void sub_80AF334(void)
+{
+ s16 x, y;
+ u8 behavior;
+ TaskFunc func;
+
+ PlayerGetDestCoords(&x, &y);
+ behavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsDoor(behavior) == TRUE)
+ func = sub_80AF438;
+ 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_maplights();
+ sub_80AF334();
+ ScriptContext2_Enable();
+}
+
+void sub_80AF3B0(void)
+{
+ Overworld_PlaySpecialMapMusic();
+ sub_80AF08C();
+ sub_80AF334();
+ ScriptContext2_Enable();
+}
+
+void sub_80AF3C8(void)
+{
+ if (!sub_81D6534())
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_black();
+ sub_80AF334();
+ ScriptContext2_Enable();
+}
+
+void sub_80AF3E8(void)
+{
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_for_maplights();
+ PlaySE(SE_TK_WARPOUT);
+ CreateTask(task0A_mpl_807E31C, 10);
+ ScriptContext2_Enable();
+}
+
+void sub_80AF40C(void)
+{
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_for_maplights();
+ PlaySE(SE_TK_WARPOUT);
+ CreateTask(task_map_chg_seq_0807E2CC, 10);
+ ScriptContext2_Enable();
+ sub_8085540(0xE);
+}
+
+static void sub_80AF438(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s16 *x = &task->data[2];
+ s16 *y = &task->data[3];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_80AF0F4(0);
+ FreezeEventObjects();
+ PlayerGetDestCoords(x, y);
+ FieldSetDoorOpened(*x, *y);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (sub_80AF71C())
+ {
+ u8 eventObjId;
+ sub_80AF0F4(1);
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectSetHeldMovement(&gEventObjects[eventObjId], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ if (walkrun_is_standing_still())
+ {
+ u8 eventObjId;
+ task->data[1] = FieldAnimateDoorClose(*x, *y);
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]);
+ task->data[0] = 3;
+ }
+ break;
+ case 3:
+ if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
+ {
+ UnfreezeEventObjects();
+ task->data[0] = 4;
+ }
+ break;
+ case 4:
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static 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_80AF0F4(0);
+ FreezeEventObjects();
+ PlayerGetDestCoords(x, y);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (sub_80AF71C())
+ {
+ u8 eventObjId;
+ sub_80AF0F4(1);
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectSetHeldMovement(&gEventObjects[eventObjId], GetWalkNormalMovementAction(GetPlayerFacingDirection()));
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ if (walkrun_is_standing_still())
+ {
+ UnfreezeEventObjects();
+ task->data[0] = 3;
+ }
+ break;
+ case 3:
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void task_map_chg_seq_0807E2CC(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ FreezeEventObjects();
+ ScriptContext2_Enable();
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (sub_80AF71C())
+ {
+ UnfreezeEventObjects();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_80AF660(u8 taskId)
+{
+ if (sub_80AF71C() == TRUE)
+ {
+ DestroyTask(taskId);
+ CreateTask(sub_809FA34, 80);
+ }
+}
+
+void sub_80AF688(void)
+{
+ pal_fill_black();
+ CreateTask(sub_80AF660, 0x50);
+ ScriptContext2_Enable();
+}
+
+bool8 sub_80AF6A4(void)
+{
+ sub_809FA18();
+ return FALSE;
+}
+
+static void task_mpl_807E3C8(u8 taskId)
+{
+ if (sub_80AF71C() == 1)
+ {
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ ScriptUnfreezeEventObjects();
+ }
+}
+
+void sub_80AF6D4(void)
+{
+ ScriptContext2_Enable();
+ pal_fill_black();
+ CreateTask(task_mpl_807E3C8, 10);
+}
+
+void sub_80AF6F0(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_black();
+ CreateTask(task_mpl_807E3C8, 10);
+}
+
+static bool32 PaletteFadeActive(void)
+{
+ return gPaletteFade.active;
+}
+
+static bool32 sub_80AF71C(void)
+{
+ if (IsWeatherNotFadingIn() == TRUE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_80AF734(void)
+{
+ ScriptContext2_Enable();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
+ PlayRainSoundEffect();
+ PlaySE(SE_KAIDAN);
+ gFieldCallback = mapldr_default;
+ CreateTask(sub_80AFA0C, 10);
+}
+
+void sp13E_warp_to_last_warp(void)
+{
+ ScriptContext2_Enable();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
+ PlayRainSoundEffect();
+ gFieldCallback = mapldr_default;
+ CreateTask(sub_80AFA0C, 10);
+}
+
+void sub_80AF79C(void)
+{
+ ScriptContext2_Enable();
+ TryFadeOutOldMapMusic();
+ FadeScreen(FADE_TO_WHITE, 8);
+ PlayRainSoundEffect();
+ gFieldCallback = sub_80AF3B0;
+ CreateTask(sub_80AFA0C, 10);
+}
+
+void sub_80AF7D0(void)
+{
+ ScriptContext2_Enable();
+ gFieldCallback = mapldr_default;
+ CreateTask(sub_80AFA88, 10);
+}
+
+void sp13F_fall_to_last_warp(void)
+{
+ sp13E_warp_to_last_warp();
+ gFieldCallback = sub_80B6B68;
+}
+
+void sub_80AF80C(u8 metatileBehavior)
+{
+ ScriptContext2_Enable();
+ sub_80B6E4C(metatileBehavior, 10);
+}
+
+void sub_80AF828(void)
+{
+ ScriptContext2_Enable();
+ sub_80B75D8(10);
+}
+
+void sub_80AF838(void)
+{
+ ScriptContext2_Enable();
+ sub_80B7A74(10);
+}
+
+void sub_80AF848(void)
+{
+ ScriptContext2_Enable();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
+ PlaySE(SE_TK_WARPIN);
+ CreateTask(sub_80AFA0C, 10);
+ gFieldCallback = sub_80AF3E8;
+}
+
+void sub_80AF87C(void)
+{
+ sub_8085540(1);
+ ScriptContext2_Enable();
+ SaveEventObjects();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
+ PlaySE(SE_TK_WARPIN);
+ CreateTask(sub_80AFA0C, 10);
+ gFieldCallback = sub_80AF40C;
+}
+
+void sub_80AF8B8(void)
+{
+ ScriptContext2_Enable();
+ WarpFadeScreen();
+ CreateTask(sub_80AFA0C, 10);
+ gFieldCallback = sub_80FB768;
+}
+
+static void sub_80AF8E0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ ScriptContext2_Enable();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!PaletteFadeActive() && BGMusicStopped())
+ task->data[0]++;
+ break;
+ case 2:
+ WarpIntoMap();
+ SetMainCallback2(sub_8086074);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80AF948(void)
+{
+ ScriptContext2_Enable();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
+ PlaySE(SE_KAIDAN);
+ CreateTask(sub_80AF8E0, 10);
+}
+
+static void sub_80AF96C(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ ClearLinkCallback_2();
+ FadeScreen(FADE_TO_BLACK, 0);
+ TryFadeOutOldMapMusic();
+ PlaySE(SE_KAIDAN);
+ data[0]++;
+ break;
+ case 1:
+ if (!PaletteFadeActive() && BGMusicStopped())
+ {
+ sub_800AC34();
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ WarpIntoMap();
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80AF9F8(void)
+{
+ CreateTask(sub_80AF96C, 10);
+}
+
+static void sub_80AFA0C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeEventObjects();
+ ScriptContext2_Enable();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!PaletteFadeActive())
+ {
+ if (task->data[1] == 0)
+ {
+ sub_81BE72C();
+ task->data[1] = 1;
+ }
+ if (BGMusicStopped())
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ WarpIntoMap();
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_80AFA88(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s16 *x = &task->data[2];
+ s16 *y = &task->data[3];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeEventObjects();
+ 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 eventObjId;
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfActive(&gEventObjects[eventObjId]);
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectSetHeldMovement(&gEventObjects[eventObjId], MOVEMENT_ACTION_WALK_NORMAL_UP);
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ if (walkrun_is_standing_still())
+ {
+ u8 eventObjId;
+ task->data[1] = FieldAnimateDoorClose(*x, *y - 1);
+ eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]);
+ sub_80AF0F4(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:
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
+ PlayRainSoundEffect();
+ task->data[0] = 0;
+ task->func = sub_80AFA0C;
+ break;
+ }
+}
+
+static void task0A_fade_n_map_maybe(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeEventObjects();
+ ScriptContext2_Enable();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!PaletteFadeActive() && BGMusicStopped())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ WarpIntoMap();
+ SetMainCallback2(sub_8086024);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80AFC60(void)
+{
+ ScriptContext2_Enable();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
+ PlayRainSoundEffect();
+ PlaySE(SE_KAIDAN);
+ gFieldCallback = sub_80AF3C8;
+ CreateTask(task0A_fade_n_map_maybe, 10);
+}
+
+static void SetFlashScanlineEffectWindowBoundary(u16 *dest, u32 y, s32 left, s32 right)
+{
+ if (y <= 160)
+ {
+ if (left < 0)
+ left = 0;
+ if (left > 255)
+ left = 255;
+ if (right < 0)
+ right = 0;
+ if (right > 255)
+ right = 255;
+ dest[y] = (left << 8) | right;
+ }
+}
+
+static void SetFlashScanlineEffectWindowBoundaries(u16 *dest, s32 centerX, s32 centerY, s32 radius)
+{
+ s32 r = radius;
+ s32 v2 = radius;
+ s32 v3 = 0;
+ while (r >= v3)
+ {
+ SetFlashScanlineEffectWindowBoundary(dest, centerY - v3, centerX - r, centerX + r);
+ SetFlashScanlineEffectWindowBoundary(dest, centerY + v3, centerX - r, centerX + r);
+ SetFlashScanlineEffectWindowBoundary(dest, centerY - r, centerX - v3, centerX + v3);
+ SetFlashScanlineEffectWindowBoundary(dest, centerY + r, centerX - v3, centerX + v3);
+ v2 -= (v3 * 2) - 1;
+ v3++;
+ if (v2 < 0)
+ {
+ v2 += 2 * (r - 1);
+ r--;
+ }
+ }
+}
+
+static void SetFlash2ScanlineEffectWindowBoundary(u16 *dest, u32 y, s32 left, s32 right)
+{
+ if (y <= 160)
+ {
+ if (left < 0)
+ left = 0;
+ if (left > 240)
+ left = 240;
+ if (right < 0)
+ right = 0;
+ if (right > 240)
+ right = 240;
+ dest[y] = (left << 8) | right;
+ }
+}
+
+static void SetFlash2ScanlineEffectWindowBoundaries(u16 *dest, s32 centerX, s32 centerY, s32 radius)
+{
+ s32 r = radius;
+ s32 v2 = radius;
+ s32 v3 = 0;
+ while (r >= v3)
+ {
+ SetFlash2ScanlineEffectWindowBoundary(dest, centerY - v3, centerX - r, centerX + r);
+ SetFlash2ScanlineEffectWindowBoundary(dest, centerY + v3, centerX - r, centerX + r);
+ SetFlash2ScanlineEffectWindowBoundary(dest, centerY - r, centerX - v3, centerX + v3);
+ SetFlash2ScanlineEffectWindowBoundary(dest, centerY + r, centerX - v3, centerX + v3);
+ v2 -= (v3 * 2) - 1;
+ v3++;
+ if (v2 < 0)
+ {
+ v2 += 2 * (r - 1);
+ r--;
+ }
+ }
+}
+
+#define tFlashCenterX data[1]
+#define tFlashCenterY data[2]
+#define tCurFlashRadius data[3]
+#define tDestFlashRadius data[4]
+#define tFlashRadiusDelta data[5]
+#define tClearScanlineEffect data[6]
+
+static void UpdateFlashLevelEffect(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
+ data[0] = 1;
+ break;
+ case 1:
+ SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
+ data[0] = 0;
+ tCurFlashRadius += tFlashRadiusDelta;
+ if (tCurFlashRadius > tDestFlashRadius)
+ {
+ if (tClearScanlineEffect == 1)
+ {
+ ScanlineEffect_Stop();
+ data[0] = 2;
+ }
+ else
+ {
+ DestroyTask(taskId);
+ }
+ }
+ break;
+ case 2:
+ ScanlineEffect_Clear();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void UpdateFlash2LevelEffect(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ SetFlash2ScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
+ data[0] = 1;
+ break;
+ case 1:
+ SetFlash2ScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
+ data[0] = 0;
+ tCurFlashRadius += tFlashRadiusDelta;
+ if (tCurFlashRadius > tDestFlashRadius)
+ {
+ if (tClearScanlineEffect == 1)
+ {
+ ScanlineEffect_Stop();
+ data[0] = 2;
+ }
+ else
+ {
+ DestroyTask(taskId);
+ }
+ }
+ break;
+ case 2:
+ ScanlineEffect_Clear();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_80AFF90(u8 taskId)
+{
+ if (!FuncIsActiveTask(UpdateFlashLevelEffect))
+ {
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_80AFFB8(void)
+{
+ if (!FuncIsActiveTask(sub_80AFF90))
+ CreateTask(sub_80AFF90, 80);
+}
+
+static u8 sub_80AFFDC(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 destFlashRadius, s32 clearScanlineEffect, u8 delta)
+{
+ u8 taskId = CreateTask(UpdateFlashLevelEffect, 80);
+ s16 *data = gTasks[taskId].data;
+
+ tCurFlashRadius = initialFlashRadius;
+ tDestFlashRadius = destFlashRadius;
+ tFlashCenterX = centerX;
+ tFlashCenterY = centerY;
+ tClearScanlineEffect = clearScanlineEffect;
+
+ if (initialFlashRadius < destFlashRadius)
+ tFlashRadiusDelta = delta;
+ else
+ tFlashRadiusDelta = -delta;
+
+ return taskId;
+}
+
+static u8 sub_80B003C(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 destFlashRadius, s32 clearScanlineEffect, u8 delta)
+{
+ u8 taskId = CreateTask(UpdateFlash2LevelEffect, 80);
+ s16 *data = gTasks[taskId].data;
+
+ tCurFlashRadius = initialFlashRadius;
+ tDestFlashRadius = destFlashRadius;
+ tFlashCenterX = centerX;
+ tFlashCenterY = centerY;
+ tClearScanlineEffect = clearScanlineEffect;
+
+ if (initialFlashRadius < destFlashRadius)
+ tFlashRadiusDelta = delta;
+ else
+ tFlashRadiusDelta = -delta;
+
+ return taskId;
+}
+
+#undef tCurFlashRadius
+#undef tDestFlashRadius
+#undef tFlashRadiusDelta
+#undef tClearScanlineEffect
+
+void sub_80B009C(u8 flashLevel)
+{
+ u8 curFlashLevel = Overworld_GetFlashLevel();
+ u8 value = 0;
+ if (!flashLevel)
+ value = 1;
+ sub_80AFFDC(120, 80, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], value, 1);
+ sub_80AFFB8();
+ ScriptContext2_Enable();
+}
+
+void WriteFlashScanlineEffectBuffer(u8 flashLevel)
+{
+ if (flashLevel)
+ {
+ SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], 120, 80, sFlashLevelPixelRadii[flashLevel]);
+ CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
+ }
+}
+
+void door_upload_tiles(void)
+{
+ SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], 120, 80, gSaveBlock2Ptr->frontier.field_E68);
+ CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
+}
+
+static void task0A_mpl_807E31C(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ FreezeEventObjects();
+ ScriptContext2_Enable();
+ sub_808D194();
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (sub_80AF71C() && sub_808D1B4() != TRUE)
+ {
+ UnfreezeEventObjects();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_80B01BC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeEventObjects();
+ ScriptContext2_Enable();
+ PlaySE(SE_TK_WARPIN);
+ sub_808D1C8();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!sub_808D1E8())
+ {
+ WarpFadeScreen();
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (!PaletteFadeActive() && BGMusicStopped())
+ task->data[0]++;
+ break;
+ case 3:
+ WarpIntoMap();
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80B0244(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(sub_80AFA0C, 10);
+ gFieldCallback = sub_80AF3E8;
+}
+
+void sub_80B0268(void)
+{
+ ScriptContext2_Enable();
+ gFieldCallback = mapldr_default;
+ CreateTask(sub_80B01BC, 10);
+}
+
+static void sub_80B028C(u8 a1)
+{
+ int i;
+ u16 color[1];
+
+ if (!a1)
+ color[0] = RGB_RED;
+ else
+ color[0] = RGB_BLUE;
+
+ for (i = 0; i < 16; i++)
+ {
+ LoadPalette(color, 0xF0 + i, 2);
+ }
+}
+
+static bool8 sub_80B02C8(u16 a1)
+{
+ u8 lo = REG_BLDALPHA & 0xFF;
+ u8 hi = REG_BLDALPHA >> 8;
+
+ if (a1)
+ {
+ if (lo)
+ {
+ lo--;
+ }
+ }
+ else
+ {
+ if (hi < 0x10)
+ {
+ hi++;
+ }
+ }
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(lo, hi));
+
+ if (lo == 0 && hi == 0x10)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_80B0318(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[6] = REG_DISPCNT;
+ data[7] = REG_BLDCNT;
+ data[8] = REG_BLDALPHA;
+ data[9] = REG_WININ;
+ data[10] = REG_WINOUT;
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON);
+ SetGpuRegBits(REG_OFFSET_BLDCNT, gUnknown_82EC7CC[0]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 7));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ);
+ sub_8199C30(0, 0, 0, 0x1E, 0x14, 0xF);
+ schedule_bg_copy_tilemap_to_vram(0);
+ SetFlash2ScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1);
+ CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
+ ScanlineEffect_SetParams(sFlashEffectParams);
+ data[0] = 1;
+ break;
+ case 1:
+ sub_8199DF0(0, 17, 0, 1);
+ sub_80B028C(data[1]);
+ sub_80B003C(data[2], data[3], 1, 160, 1, 2);
+ data[0] = 2;
+ break;
+ case 2:
+ if (!FuncIsActiveTask(UpdateFlash2LevelEffect))
+ {
+ EnableBothScriptContexts();
+ data[0] = 3;
+ }
+ break;
+ case 3:
+ InstallCameraPanAheadCallback();
+ SetCameraPanningCallback(NULL);
+ data[5] = 0;
+ data[4] = 4;
+ data[0] = 4;
+ break;
+ case 4:
+ data[4]--;
+ if (!data[4])
+ {
+ s32 panning;
+ data[4] = 4;
+ data[5] ^= 1;
+ if (data[5])
+ panning = 4;
+ else
+ panning = -4;
+ SetCameraPanning(0, panning);
+ }
+ break;
+ case 6:
+ InstallCameraPanAheadCallback();
+ data[4] = 8;
+ data[0] = 7;
+ break;
+ case 7:
+ data[4]--;
+ if (!data[4])
+ {
+ data[4] = 8;
+ data[5] ^= 1;
+ if (sub_80B02C8(data[5]) == TRUE)
+ {
+ data[0] = 5;
+ sub_8199DF0(0, 0, 0, 1);
+ }
+ }
+ break;
+ case 5:
+ SetGpuReg(REG_OFFSET_WIN0H, 255);
+ SetGpuReg(REG_OFFSET_DISPCNT, data[6]);
+ SetGpuReg(REG_OFFSET_BLDCNT, data[7]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, data[8]);
+ SetGpuReg(REG_OFFSET_WININ, data[9]);
+ SetGpuReg(REG_OFFSET_WINOUT, data[10]);
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80B0534(void)
+{
+ u8 taskId = CreateTask(sub_80B0318, 80);
+ s16 *data = gTasks[taskId].data;
+
+ if (gSpecialVar_Result == 0)
+ {
+ data[1] = 0;
+ data[2] = 104;
+ }
+ else if (gSpecialVar_Result == 1)
+ {
+ data[1] = 1;
+ data[2] = 136;
+ }
+ else if (gSpecialVar_Result == 2)
+ {
+ data[1] = 0;
+ data[2] = 120;
+ }
+ else
+ {
+ data[1] = 1;
+ data[2] = 120;
+ }
+
+ data[3] = 80;
+}
+
+void sub_80B058C(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80B0318);
+ gTasks[taskId].data[0] = 6;
+}
+
+void sub_80B05B4(void)
+{
+ Overworld_FadeOutMapMusic();
+ CreateTask(task50_0807F0C8, 80);
+}
+
+static void task50_0807F0C8(u8 taskId)
+{
+ if (BGMusicStopped() == TRUE)
+ {
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+}
diff --git a/src/field_specials.c b/src/field_specials.c
index 34be71f30..64ff46ce2 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -12,7 +12,7 @@
#include "field_effect.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "field_specials.h"
#include "field_weather.h"
#include "international_string_util.h"
@@ -1279,17 +1279,17 @@ void IsGrassTypeInParty(void)
gSpecialVar_Result = FALSE;
}
-void SpawnScriptEventObject(void)
+void SpawnCameraObject(void)
{
- u8 obj = SpawnSpecialEventObjectParameterized(EVENT_OBJ_GFX_BOY_1, 8, 0x7F, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3);
+ u8 obj = SpawnSpecialEventObjectParameterized(EVENT_OBJ_GFX_BOY_1, 8, EVENT_OBJ_ID_CAMERA, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3);
gEventObjects[obj].invisible = TRUE;
CameraObjectSetFollowedObjectId(gEventObjects[obj].spriteId);
}
-void RemoveScriptEventObject(void)
+void RemoveCameraObject(void)
{
CameraObjectSetFollowedObjectId(GetPlayerAvatarObjectId());
- RemoveEventObjectByLocalIdAndMap(0x7F, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ RemoveEventObjectByLocalIdAndMap(EVENT_OBJ_ID_CAMERA, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
u8 GetPokeblockNameByMonNature(void)
diff --git a/src/field_weather.c b/src/field_weather.c
new file mode 100644
index 000000000..f0615dabf
--- /dev/null
+++ b/src/field_weather.c
@@ -0,0 +1,1095 @@
+#include "global.h"
+#include "constants/songs.h"
+#include "constants/weather.h"
+#include "constants/rgb.h"
+#include "util.h"
+#include "event_object_movement.h"
+#include "field_weather.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "random.h"
+#include "script.h"
+#include "start_menu.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "gpu_regs.h"
+
+#define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00))
+
+enum
+{
+ GAMMA_NONE,
+ GAMMA_NORMAL,
+ GAMMA_ALT,
+};
+
+struct RGBColor
+{
+ u16 r:5;
+ u16 g:5;
+ u16 b:5;
+};
+
+struct WeatherPaletteData
+{
+ u16 gammaShiftColors[8][0x1000]; // 0x1000 is the number of bytes that make up all palettes.
+};
+
+struct WeatherCallbacks
+{
+ void (*initVars)(void);
+ void (*main)(void);
+ void (*initAll)(void);
+ bool8 (*finish)(void);
+};
+
+// This file's functions.
+static bool8 LightenSpritePaletteInFog(u8);
+static void BuildGammaShiftTables(void);
+static void UpdateWeatherGammaShift(void);
+static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex);
+static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor);
+static void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 blendColor);
+static void ApplyFogBlend(u8 blendCoeff, u16 blendColor);
+static bool8 FadeInScreen_RainShowShade(void);
+static bool8 FadeInScreen_Drought(void);
+static bool8 FadeInScreen_Fog1(void);
+static void FadeInScreenWithWeather(void);
+static void DoNothing(void);
+static void Task_WeatherInit(u8 taskId);
+static void Task_WeatherMain(u8 taskId);
+static void None_Init(void);
+static void None_Main(void);
+static u8 None_Finish(void);
+
+// EWRAM
+EWRAM_DATA struct Weather gWeather = {0};
+EWRAM_DATA static u8 sFieldEffectPaletteGammaTypes[32] = {0};
+
+// IWRAM bss
+IWRAM_DATA static const u8 *sPaletteGammaTypes;
+
+// CONST
+extern const u16 gUnknown_0854014C[][4096];
+
+// This is a pointer to gWeather. All code in this file accesses gWeather directly,
+// while code in other field weather files accesses gWeather through this pointer.
+// This is likely the result of compiler optimization, since using the pointer in
+// this file produces the same result as accessing gWeather directly.
+struct Weather *const gWeatherPtr = &gWeather;
+
+static const struct WeatherCallbacks sWeatherFuncs[] =
+{
+ {None_Init, None_Main, None_Init, None_Finish},
+ {Clouds_InitVars, Clouds_Main, Clouds_InitAll, Clouds_Finish},
+ {Weather2_InitVars, Weather2_Main, Weather2_InitAll, Weather2_Finish},
+ {LightRain_InitVars, LightRain_Main, LightRain_InitAll, LightRain_Finish},
+ {Snow_InitVars, Snow_Main, Snow_InitAll, Snow_Finish},
+ {MedRain_InitVars, Rain_Main, MedRain_InitAll, Rain_Finish},
+ {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish},
+ {Ash_InitVars, Ash_Main, Ash_InitAll, Ash_Finish},
+ {Sandstorm_InitVars, Sandstorm_Main, Sandstorm_InitAll, Sandstorm_Finish},
+ {Fog2_InitVars, Fog2_Main, Fog2_InitAll, Fog2_Finish},
+ {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish},
+ {Shade_InitVars, Shade_Main, Shade_InitAll, Shade_Finish},
+ {Drought_InitVars, Drought_Main, Drought_InitAll, Drought_Finish},
+ {HeavyRain_InitVars, Rain_Main, HeavyRain_InitAll, Rain_Finish},
+ {Bubbles_InitVars, Bubbles_Main, Bubbles_InitAll, Bubbles_Finish},
+};
+
+void (*const gWeatherPalStateFuncs[])(void) =
+{
+ UpdateWeatherGammaShift, // WEATHER_PAL_STATE_CHANGING_WEATHER
+ FadeInScreenWithWeather, // WEATHER_PAL_STATE_SCREEN_FADING_IN
+ DoNothing, // WEATHER_PAL_STATE_SCREEN_FADING_OUT
+ DoNothing, // WEATHER_PAL_STATE_IDLE
+};
+
+// This table specifies which of the gamma shift tables should be
+// applied to each of the background and sprite palettes.
+static const u8 sBasePaletteGammaTypes[32] =
+{
+ // background palettes
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NONE,
+ GAMMA_NONE,
+ // sprite palettes
+ GAMMA_ALT,
+ GAMMA_NORMAL,
+ GAMMA_ALT,
+ GAMMA_ALT,
+ GAMMA_ALT,
+ GAMMA_ALT,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_ALT,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+ GAMMA_NORMAL,
+};
+
+const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal");
+
+// code
+void StartWeather(void)
+{
+ if (!FuncIsActiveTask(Task_WeatherMain))
+ {
+ u8 index = AllocSpritePalette(0x1200);
+ CpuCopy32(gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32);
+ BuildGammaShiftTables();
+ gWeatherPtr->altGammaSpritePalIndex = index;
+ gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(0x1201);
+ gWeatherPtr->rainSpriteCount = 0;
+ gWeatherPtr->unknown_6D8 = 0;
+ gWeatherPtr->cloudSpritesCreated = 0;
+ gWeatherPtr->snowflakeSpriteCount = 0;
+ gWeatherPtr->ashSpritesCreated = 0;
+ gWeatherPtr->fog1SpritesCreated = 0;
+ gWeatherPtr->fog2SpritesCreated = 0;
+ gWeatherPtr->sandstormSprites1Created = 0;
+ gWeatherPtr->sandstormSprites2Created = 0;
+ gWeatherPtr->unknown_72E = 0;
+ gWeatherPtr->lightenedFogSpritePalsCount = 0;
+ Weather_SetBlendCoeffs(16, 0);
+ gWeatherPtr->currWeather = 0;
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE;
+ gWeatherPtr->readyForInit = FALSE;
+ gWeatherPtr->weatherChangeComplete = TRUE;
+ gWeatherPtr->taskId = CreateTask(Task_WeatherInit, 80);
+ }
+}
+
+void ChangeWeather(u8 weather)
+{
+ if (weather != WEATHER_RAIN_LIGHT && weather != WEATHER_RAIN_MED && weather != WEATHER_RAIN_HEAVY)
+ {
+ PlayRainSoundEffect();
+ }
+
+ if (gWeatherPtr->nextWeather != weather && gWeatherPtr->currWeather == weather)
+ {
+ sWeatherFuncs[weather].initVars();
+ }
+
+ gWeatherPtr->weatherChangeComplete = FALSE;
+ gWeatherPtr->nextWeather = weather;
+ gWeatherPtr->finishStep = 0;
+}
+
+void sub_80AB104(u8 weather)
+{
+ PlayRainSoundEffect();
+ gWeatherPtr->currWeather = weather;
+ gWeatherPtr->nextWeather = weather;
+}
+
+void sub_80AB130(u8 weather)
+{
+ PlayRainSoundEffect();
+ gWeatherPtr->currWeather = weather;
+ gWeatherPtr->nextWeather = weather;
+ gWeatherPtr->readyForInit = TRUE;
+}
+
+static void Task_WeatherInit(u8 taskId)
+{
+ // Waits until it's ok to initialize weather.
+ // When the screen fades in, this is set to TRUE.
+ if (gWeatherPtr->readyForInit)
+ {
+ sWeatherFuncs[gWeatherPtr->currWeather].initAll();
+ gTasks[taskId].func = Task_WeatherMain;
+ }
+}
+
+static void Task_WeatherMain(u8 taskId)
+{
+ if (gWeatherPtr->currWeather != gWeatherPtr->nextWeather)
+ {
+ if (!sWeatherFuncs[gWeatherPtr->currWeather].finish() && gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_OUT)
+ {
+ // Finished cleaning up previous weather. Now transition to next weather.
+ sWeatherFuncs[gWeatherPtr->nextWeather].initVars();
+ gWeatherPtr->gammaStepFrameCounter = 0;
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_CHANGING_WEATHER;
+ gWeatherPtr->currWeather = gWeatherPtr->nextWeather;
+ gWeatherPtr->weatherChangeComplete = TRUE;
+ }
+ }
+ else
+ {
+ sWeatherFuncs[gWeatherPtr->currWeather].main();
+ }
+
+ gWeatherPalStateFuncs[gWeatherPtr->palProcessingState]();
+}
+
+static void None_Init(void)
+{
+ gWeatherPtr->gammaTargetIndex = 0;
+ gWeatherPtr->gammaStepDelay = 0;
+}
+
+static void None_Main(void)
+{
+}
+
+static u8 None_Finish(void)
+{
+ return 0;
+}
+
+// Builds two tables that contain gamma shifts for palette colors.
+// It's unclear why the two tables aren't declared as const arrays, since
+// this function always builds the same two tables.
+static void BuildGammaShiftTables(void)
+{
+ u16 v0;
+ u8 (*gammaTable)[32];
+ u16 v2;
+ u16 v4;
+ u16 v5;
+ u16 gammaIndex;
+ u16 v9;
+ u32 v10;
+ u16 v11;
+ s16 dunno;
+
+ sPaletteGammaTypes = sBasePaletteGammaTypes;
+ for (v0 = 0; v0 <= 1; v0++)
+ {
+ if (v0 == 0)
+ gammaTable = gWeatherPtr->gammaShifts;
+ else
+ gammaTable = gWeatherPtr->altGammaShifts;
+
+ for (v2 = 0; v2 < 32; v2++)
+ {
+ v4 = v2 << 8;
+ if (v0 == 0)
+ v5 = (v2 << 8) / 16;
+ else
+ v5 = 0;
+ for (gammaIndex = 0; gammaIndex <= 2; gammaIndex++)
+ {
+ v4 = (v4 - v5);
+ gammaTable[gammaIndex][v2] = v4 >> 8;
+ }
+ v9 = v4;
+ v10 = 0x1f00 - v4;
+ if ((0x1f00 - v4) < 0)
+ {
+ v10 += 0xf;
+ }
+ v11 = v10 >> 4;
+ if (v2 < 12)
+ {
+ for (; gammaIndex < 19; gammaIndex++)
+ {
+ v4 += v11;
+ dunno = v4 - v9;
+ if (dunno > 0)
+ v4 -= (dunno + ((u16)dunno >> 15)) >> 1;
+ gammaTable[gammaIndex][v2] = v4 >> 8;
+ if (gammaTable[gammaIndex][v2] > 0x1f)
+ gammaTable[gammaIndex][v2] = 0x1f;
+ }
+ }
+ else
+ {
+ for (; gammaIndex < 19; gammaIndex++)
+ {
+ v4 += v11;
+ gammaTable[gammaIndex][v2] = v4 >> 8;
+ if (gammaTable[gammaIndex][v2] > 0x1f)
+ gammaTable[gammaIndex][v2] = 0x1f;
+ }
+ }
+ }
+ }
+}
+
+// When the weather is changing, it gradually updates the palettes
+// towards the desired gamma shift.
+static void UpdateWeatherGammaShift(void)
+{
+ if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_OUT)
+ {
+ if (gWeatherPtr->gammaIndex == gWeatherPtr->gammaTargetIndex)
+ {
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE;
+ }
+ else
+ {
+ if (++gWeatherPtr->gammaStepFrameCounter >= gWeatherPtr->gammaStepDelay)
+ {
+ gWeatherPtr->gammaStepFrameCounter = 0;
+ if (gWeatherPtr->gammaIndex < gWeatherPtr->gammaTargetIndex)
+ gWeatherPtr->gammaIndex++;
+ else
+ gWeatherPtr->gammaIndex--;
+
+ ApplyGammaShift(0, 32, gWeatherPtr->gammaIndex);
+ }
+ }
+ }
+}
+
+static void FadeInScreenWithWeather(void)
+{
+ if (++gWeatherPtr->unknown_6CB > 1)
+ gWeatherPtr->unknown_6CA = 0;
+
+ switch (gWeatherPtr->currWeather)
+ {
+ case WEATHER_RAIN_LIGHT:
+ case WEATHER_RAIN_MED:
+ case WEATHER_RAIN_HEAVY:
+ case WEATHER_SNOW:
+ case WEATHER_SHADE:
+ if (FadeInScreen_RainShowShade() == FALSE)
+ {
+ gWeatherPtr->gammaIndex = 3;
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE;
+ }
+ break;
+ case WEATHER_DROUGHT:
+ if (FadeInScreen_Drought() == FALSE)
+ {
+ gWeatherPtr->gammaIndex = -6;
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE;
+ }
+ break;
+ case WEATHER_FOG_1:
+ if (FadeInScreen_Fog1() == FALSE)
+ {
+ gWeatherPtr->gammaIndex = 0;
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE;
+ }
+ break;
+ case WEATHER_ASH:
+ case WEATHER_SANDSTORM:
+ case WEATHER_FOG_2:
+ case WEATHER_FOG_3:
+ default:
+ if (!gPaletteFade.active)
+ {
+ gWeatherPtr->gammaIndex = gWeatherPtr->gammaTargetIndex;
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE;
+ }
+ break;
+ }
+}
+
+static bool8 FadeInScreen_RainShowShade(void)
+{
+ if (gWeatherPtr->fadeScreenCounter == 16)
+ return FALSE;
+
+ if (++gWeatherPtr->fadeScreenCounter >= 16)
+ {
+ ApplyGammaShift(0, 32, 3);
+ gWeatherPtr->fadeScreenCounter = 16;
+ return FALSE;
+ }
+
+ ApplyGammaShiftWithBlend(0, 32, 3, 16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor);
+ return TRUE;
+}
+
+static bool8 FadeInScreen_Drought(void)
+{
+ if (gWeatherPtr->fadeScreenCounter == 16)
+ return FALSE;
+
+ if (++gWeatherPtr->fadeScreenCounter >= 16)
+ {
+ ApplyGammaShift(0, 32, -6);
+ gWeatherPtr->fadeScreenCounter = 16;
+ return FALSE;
+ }
+
+ ApplyDroughtGammaShiftWithBlend(-6, 16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor);
+ return TRUE;
+}
+
+static bool8 FadeInScreen_Fog1(void)
+{
+ if (gWeatherPtr->fadeScreenCounter == 16)
+ return FALSE;
+
+ gWeatherPtr->fadeScreenCounter++;
+ ApplyFogBlend(16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor);
+ return TRUE;
+}
+
+static void DoNothing(void)
+{ }
+
+static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex)
+{
+ u16 curPalIndex;
+ u16 palOffset;
+ u8 *gammaTable;
+ u16 i;
+
+ if (gammaIndex > 0)
+ {
+ gammaIndex--;
+ palOffset = startPalIndex * 16;
+ numPalettes += startPalIndex;
+ curPalIndex = startPalIndex;
+
+ // Loop through the speficied palette range and apply necessary gamma shifts to the colors.
+ while (curPalIndex < numPalettes)
+ {
+ if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE)
+ {
+ // No palette change.
+ CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16));
+ palOffset += 16;
+ }
+ else
+ {
+ u8 r, g, b;
+
+ if (sPaletteGammaTypes[curPalIndex] == GAMMA_ALT || curPalIndex - 16 == gWeatherPtr->altGammaSpritePalIndex)
+ gammaTable = gWeatherPtr->altGammaShifts[gammaIndex];
+ else
+ gammaTable = gWeatherPtr->gammaShifts[gammaIndex];
+
+ for (i = 0; i < 16; i++)
+ {
+ // Apply gamma shift to the original color.
+ struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset];
+ r = gammaTable[baseColor.r];
+ g = gammaTable[baseColor.g];
+ b = gammaTable[baseColor.b];
+ gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r;
+ }
+ }
+
+ curPalIndex++;
+ }
+ }
+ else if (gammaIndex < 0)
+ {
+ // A negative gammIndex value means that the blending will come from the special Drought weather's palette tables.
+ gammaIndex = -gammaIndex - 1;
+ palOffset = startPalIndex * 16;
+ numPalettes += startPalIndex;
+ curPalIndex = startPalIndex;
+
+ while (curPalIndex < numPalettes)
+ {
+ if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE)
+ {
+ // No palette change.
+ CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16));
+ palOffset += 16;
+ }
+ else
+ {
+ for (i = 0; i < 16; i++)
+ {
+ gPlttBufferFaded[palOffset] = gUnknown_0854014C[gammaIndex][MACRO1(gPlttBufferUnfaded[palOffset])];
+ palOffset++;
+ }
+ }
+
+ curPalIndex++;
+ }
+ }
+ else
+ {
+ // No palette blending.
+ CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16));
+ }
+}
+
+static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor)
+{
+ u16 palOffset;
+ u16 curPalIndex;
+ u16 i;
+ struct RGBColor color = *(struct RGBColor *)&blendColor;
+ u8 rBlend = color.r;
+ u8 gBlend = color.g;
+ u8 bBlend = color.b;
+
+ palOffset = startPalIndex * 16;
+ numPalettes += startPalIndex;
+ gammaIndex--;
+ curPalIndex = startPalIndex;
+
+ while (curPalIndex < numPalettes)
+ {
+ if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE)
+ {
+ // No gamma shift. Simply blend the colors.
+ BlendPalette(palOffset, 16, blendCoeff, blendColor);
+ palOffset += 16;
+ }
+ else
+ {
+ u8 *gammaTable;
+
+ if (sPaletteGammaTypes[curPalIndex] == GAMMA_NORMAL)
+ gammaTable = gWeatherPtr->gammaShifts[gammaIndex];
+ else
+ gammaTable = gWeatherPtr->altGammaShifts[gammaIndex];
+
+ for (i = 0; i < 16; i++)
+ {
+ struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset];
+ u8 r = gammaTable[baseColor.r];
+ u8 g = gammaTable[baseColor.g];
+ u8 b = gammaTable[baseColor.b];
+
+ // Apply gamma shift and target blend color to the original color.
+ r += ((rBlend - r) * blendCoeff) >> 4;
+ g += ((gBlend - g) * blendCoeff) >> 4;
+ b += ((bBlend - b) * blendCoeff) >> 4;
+ gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r;
+ }
+ }
+
+ curPalIndex++;
+ }
+}
+
+static void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 blendColor)
+{
+ struct RGBColor color;
+ u8 rBlend;
+ u8 gBlend;
+ u8 bBlend;
+ u16 curPalIndex;
+ u16 palOffset;
+ u16 i;
+
+ gammaIndex = -gammaIndex - 1;
+ color = *(struct RGBColor *)&blendColor;
+ rBlend = color.r;
+ gBlend = color.g;
+ bBlend = color.b;
+ palOffset = 0;
+ for (curPalIndex = 0; curPalIndex < 32; curPalIndex++)
+ {
+ if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE)
+ {
+ // No gamma shift. Simply blend the colors.
+ BlendPalette(palOffset, 16, blendCoeff, blendColor);
+ palOffset += 16;
+ }
+ else
+ {
+ for (i = 0; i < 16; i++)
+ {
+ u32 offset;
+ struct RGBColor color1;
+ struct RGBColor color2;
+ u8 r1, g1, b1;
+ u8 r2, g2, b2;
+
+ color1 = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset];
+ r1 = color1.r;
+ g1 = color1.g;
+ b1 = color1.b;
+
+ offset = ((b1 & 0x1E) << 7) | ((g1 & 0x1E) << 3) | ((r1 & 0x1E) >> 1);
+ color2 = *(struct RGBColor *)&gUnknown_0854014C[gammaIndex][offset];
+ r2 = color2.r;
+ g2 = color2.g;
+ b2 = color2.b;
+
+ r2 += ((rBlend - r2) * blendCoeff) >> 4;
+ g2 += ((gBlend - g2) * blendCoeff) >> 4;
+ b2 += ((bBlend - b2) * blendCoeff) >> 4;
+
+ gPlttBufferFaded[palOffset++] = (b2 << 10) | (g2 << 5) | r2;
+ }
+ }
+ }
+}
+
+static void ApplyFogBlend(u8 blendCoeff, u16 blendColor)
+{
+ struct RGBColor color;
+ u8 rBlend;
+ u8 gBlend;
+ u8 bBlend;
+ u16 curPalIndex;
+
+ BlendPalette(0, 256, blendCoeff, blendColor);
+ color = *(struct RGBColor *)&blendColor;
+ rBlend = color.r;
+ gBlend = color.g;
+ bBlend = color.b;
+
+ for (curPalIndex = 16; curPalIndex < 32; curPalIndex++)
+ {
+ if (LightenSpritePaletteInFog(curPalIndex))
+ {
+ u16 palEnd = (curPalIndex + 1) * 16;
+ u16 palOffset = curPalIndex * 16;
+
+ while (palOffset < palEnd)
+ {
+ struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset];
+ u8 r = color.r;
+ u8 g = color.g;
+ u8 b = color.b;
+
+ r += ((28 - r) * 3) >> 2;
+ g += ((31 - g) * 3) >> 2;
+ b += ((28 - b) * 3) >> 2;
+
+ r += ((rBlend - r) * blendCoeff) >> 4;
+ g += ((gBlend - g) * blendCoeff) >> 4;
+ b += ((bBlend - b) * blendCoeff) >> 4;
+
+ gPlttBufferFaded[palOffset] = (b << 10) | (g << 5) | r;
+ palOffset++;
+ }
+ }
+ else
+ {
+ BlendPalette(curPalIndex * 16, 16, blendCoeff, blendColor);
+ }
+ }
+}
+
+static void MarkFogSpritePalToLighten(u8 paletteIndex)
+{
+ if (gWeatherPtr->lightenedFogSpritePalsCount < 6)
+ {
+ gWeatherPtr->lightenedFogSpritePals[gWeatherPtr->lightenedFogSpritePalsCount] = paletteIndex;
+ gWeatherPtr->lightenedFogSpritePalsCount++;
+ }
+}
+
+static bool8 LightenSpritePaletteInFog(u8 paletteIndex)
+{
+ u16 i;
+
+ for (i = 0; i < gWeatherPtr->lightenedFogSpritePalsCount; i++)
+ {
+ if (gWeatherPtr->lightenedFogSpritePals[i] == paletteIndex)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_80ABC48(s8 gammaIndex)
+{
+ if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE)
+ {
+ ApplyGammaShift(0, 32, gammaIndex);
+ gWeatherPtr->gammaIndex = gammaIndex;
+ }
+}
+
+void sub_80ABC7C(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay)
+{
+ if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE)
+ {
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_CHANGING_WEATHER;
+ gWeatherPtr->gammaIndex = gammaIndex;
+ gWeatherPtr->gammaTargetIndex = gammaTargetIndex;
+ gWeatherPtr->gammaStepFrameCounter = 0;
+ gWeatherPtr->gammaStepDelay = gammaStepDelay;
+ sub_80ABC48(gammaIndex);
+ }
+}
+
+void FadeScreen(u8 mode, s8 delay)
+{
+ u32 fadeColor;
+ bool8 fadeOut;
+ bool8 useWeatherPal;
+
+ switch (mode)
+ {
+ case FADE_FROM_BLACK:
+ fadeColor = RGB_BLACK;
+ fadeOut = FALSE;
+ break;
+ case FADE_FROM_WHITE:
+ fadeColor = RGB_WHITEALPHA;
+ fadeOut = FALSE;
+ break;
+ case FADE_TO_BLACK:
+ fadeColor = RGB_BLACK;
+ fadeOut = TRUE;
+ break;
+ case FADE_TO_WHITE:
+ fadeColor = RGB_WHITEALPHA;
+ fadeOut = TRUE;
+ break;
+ default:
+ return;
+ }
+
+ switch (gWeatherPtr->currWeather)
+ {
+ case WEATHER_RAIN_LIGHT:
+ case WEATHER_RAIN_MED:
+ case WEATHER_RAIN_HEAVY:
+ case WEATHER_SNOW:
+ case WEATHER_FOG_1:
+ case WEATHER_SHADE:
+ case WEATHER_DROUGHT:
+ useWeatherPal = TRUE;
+ break;
+ default:
+ useWeatherPal = FALSE;
+ break;
+ }
+
+ if (fadeOut)
+ {
+ if (useWeatherPal)
+ CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
+
+ BeginNormalPaletteFade(0xFFFFFFFF, delay, 0, 16, fadeColor);
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT;
+ }
+ else
+ {
+ gWeatherPtr->fadeDestColor = fadeColor;
+ if (useWeatherPal)
+ gWeatherPtr->fadeScreenCounter = 0;
+ else
+ BeginNormalPaletteFade(0xFFFFFFFF, delay, 16, 0, fadeColor);
+
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN;
+ gWeatherPtr->unknown_6CA = 1;
+ gWeatherPtr->unknown_6CB = 0;
+ Weather_SetBlendCoeffs(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB);
+ gWeatherPtr->readyForInit = TRUE;
+ }
+}
+
+bool8 IsWeatherNotFadingIn(void)
+{
+ return (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_IN);
+}
+
+void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex)
+{
+ u16 paletteIndex = 16 + spritePaletteIndex;
+ u16 i;
+
+ switch (gWeatherPtr->palProcessingState)
+ {
+ case WEATHER_PAL_STATE_SCREEN_FADING_IN:
+ if (gWeatherPtr->unknown_6CA != 0)
+ {
+ if (gWeatherPtr->currWeather == WEATHER_FOG_1)
+ MarkFogSpritePalToLighten(paletteIndex);
+ paletteIndex *= 16;
+ for (i = 0; i < 16; i++)
+ gPlttBufferFaded[paletteIndex + i] = gWeatherPtr->fadeDestColor;
+ }
+ break;
+ case WEATHER_PAL_STATE_SCREEN_FADING_OUT:
+ paletteIndex *= 16;
+ CpuFastCopy(gPlttBufferFaded + paletteIndex, gPlttBufferUnfaded + paletteIndex, 32);
+ BlendPalette(paletteIndex, 16, gPaletteFade.y, gPaletteFade.blendColor);
+ break;
+ // WEATHER_PAL_STATE_CHANGING_WEATHER
+ // WEATHER_PAL_STATE_CHANGING_IDLE
+ default:
+ if (gWeatherPtr->currWeather != WEATHER_FOG_1)
+ {
+ ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex);
+ }
+ else
+ {
+ paletteIndex *= 16;
+ BlendPalette(paletteIndex, 16, 12, RGB(28, 31, 28));
+ }
+ break;
+ }
+}
+
+void ApplyWeatherGammaShiftToPal(u8 paletteIndex)
+{
+ ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex);
+}
+
+u8 sub_80ABF20(void)
+{
+ if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_SCREEN_FADING_IN)
+ return gWeatherPtr->unknown_6CA;
+ else
+ return 0;
+}
+
+void LoadCustomWeatherSpritePalette(const u16 *palette)
+{
+ LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32);
+ UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex);
+}
+
+static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1)
+{
+ *gammaIndexPtr = 0x20;
+ *a1 = 0x20;
+}
+
+void ResetDroughtWeatherPaletteLoading(void)
+{
+ gWeatherPtr->loadDroughtPalsIndex = 1;
+ gWeatherPtr->loadDroughtPalsOffset = 1;
+}
+
+bool8 LoadDroughtWeatherPalettes(void)
+{
+ if (gWeatherPtr->loadDroughtPalsIndex < 32)
+ {
+ LoadDroughtWeatherPalette(&gWeatherPtr->loadDroughtPalsIndex, &gWeatherPtr->loadDroughtPalsOffset);
+ if (gWeatherPtr->loadDroughtPalsIndex < 32)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_80ABFE0(s8 gammaIndex)
+{
+ sub_80ABC48(-gammaIndex - 1);
+}
+
+void sub_80ABFF0(void)
+{
+ gWeatherPtr->unknown_73C = 0;
+ gWeatherPtr->unknown_740 = 0;
+ gWeatherPtr->unknown_742 = 0;
+ gWeatherPtr->unknown_73E = 0;
+}
+
+void sub_80AC01C(void)
+{
+ switch (gWeatherPtr->unknown_742)
+ {
+ case 0:
+ if (++gWeatherPtr->unknown_740 > 5)
+ {
+ gWeatherPtr->unknown_740 = 0;
+ sub_80ABFE0(gWeatherPtr->unknown_73C++);
+ if (gWeatherPtr->unknown_73C > 5)
+ {
+ gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C;
+ gWeatherPtr->unknown_742 = 1;
+ gWeatherPtr->unknown_740 = 0x3C;
+ }
+ }
+ break;
+ case 1:
+ gWeatherPtr->unknown_740 = (gWeatherPtr->unknown_740 + 3) & 0x7F;
+ gWeatherPtr->unknown_73C = ((gSineTable[gWeatherPtr->unknown_740] - 1) >> 6) + 2;
+ if (gWeatherPtr->unknown_73C != gWeatherPtr->unknown_73E)
+ sub_80ABFE0(gWeatherPtr->unknown_73C);
+ gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C;
+ break;
+ case 2:
+ if (++gWeatherPtr->unknown_740 > 5)
+ {
+ gWeatherPtr->unknown_740 = 0;
+ sub_80ABFE0(--gWeatherPtr->unknown_73C);
+ if (gWeatherPtr->unknown_73C == 3)
+ gWeatherPtr->unknown_742 = 0;
+ }
+ break;
+ }
+}
+
+void Weather_SetBlendCoeffs(u8 eva, u8 evb)
+{
+ gWeatherPtr->currBlendEVA = eva;
+ gWeatherPtr->currBlendEVB = evb;
+ gWeatherPtr->targetBlendEVA = eva;
+ gWeatherPtr->targetBlendEVB = evb;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(eva, evb));
+}
+
+void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay)
+{
+ gWeatherPtr->targetBlendEVA = eva;
+ gWeatherPtr->targetBlendEVB = evb;
+ gWeatherPtr->blendDelay = delay;
+ gWeatherPtr->blendFrameCounter = 0;
+ gWeatherPtr->blendUpdateCounter = 0;
+}
+
+bool8 Weather_UpdateBlend(void)
+{
+ if (gWeatherPtr->currBlendEVA == gWeatherPtr->targetBlendEVA
+ && gWeatherPtr->currBlendEVB == gWeatherPtr->targetBlendEVB)
+ return TRUE;
+
+ if (++gWeatherPtr->blendFrameCounter > gWeatherPtr->blendDelay)
+ {
+ gWeatherPtr->blendFrameCounter = 0;
+ gWeatherPtr->blendUpdateCounter++;
+
+ // Update currBlendEVA and currBlendEVB on alternate frames
+ if (gWeatherPtr->blendUpdateCounter & 1)
+ {
+ if (gWeatherPtr->currBlendEVA < gWeatherPtr->targetBlendEVA)
+ gWeatherPtr->currBlendEVA++;
+ else if (gWeatherPtr->currBlendEVA > gWeatherPtr->targetBlendEVA)
+ gWeatherPtr->currBlendEVA--;
+ }
+ else
+ {
+ if (gWeatherPtr->currBlendEVB < gWeatherPtr->targetBlendEVB)
+ gWeatherPtr->currBlendEVB++;
+ else if (gWeatherPtr->currBlendEVB > gWeatherPtr->targetBlendEVB)
+ gWeatherPtr->currBlendEVB--;
+ }
+ }
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB));
+
+ if (gWeatherPtr->currBlendEVA == gWeatherPtr->targetBlendEVA
+ && gWeatherPtr->currBlendEVB == gWeatherPtr->targetBlendEVB)
+ return TRUE;
+
+ return FALSE;
+}
+
+void sub_80AC274(u8 a)
+{
+ switch (a)
+ {
+ case 1:
+ SetWeather(WEATHER_CLOUDS);
+ break;
+ case 2:
+ SetWeather(WEATHER_SUNNY);
+ break;
+ case 3:
+ SetWeather(WEATHER_RAIN_LIGHT);
+ break;
+ case 4:
+ SetWeather(WEATHER_SNOW);
+ break;
+ case 5:
+ SetWeather(WEATHER_RAIN_MED);
+ break;
+ case 6:
+ SetWeather(WEATHER_FOG_1);
+ break;
+ case 7:
+ SetWeather(WEATHER_FOG_2);
+ break;
+ case 8:
+ SetWeather(WEATHER_ASH);
+ break;
+ case 9:
+ SetWeather(WEATHER_SANDSTORM);
+ break;
+ case 10:
+ SetWeather(WEATHER_SHADE);
+ break;
+ }
+}
+
+u8 GetCurrentWeather(void)
+{
+ return gWeatherPtr->currWeather;
+}
+
+void SetRainStrengthFromSoundEffect(u16 soundEffect)
+{
+ if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_OUT)
+ {
+ switch (soundEffect)
+ {
+ case SE_T_KOAME:
+ gWeatherPtr->rainStrength = 0;
+ break;
+ case SE_T_OOAME:
+ gWeatherPtr->rainStrength = 1;
+ break;
+ case SE_T_AME:
+ gWeatherPtr->rainStrength = 2;
+ break;
+ default:
+ return;
+ }
+
+ PlaySE(soundEffect);
+ }
+}
+
+void PlayRainSoundEffect(void)
+{
+ if (IsSpecialSEPlaying())
+ {
+ switch (gWeatherPtr->rainStrength)
+ {
+ case 0:
+ PlaySE(SE_T_KOAME_E);
+ break;
+ case 1:
+ PlaySE(SE_T_OOAME_E);
+ break;
+ case 2:
+ default:
+ PlaySE(SE_T_AME_E);
+ break;
+ }
+ }
+}
+
+u8 IsWeatherChangeComplete(void)
+{
+ return gWeatherPtr->weatherChangeComplete;
+}
+
+void SetWeatherScreenFadeOut(void)
+{
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT;
+}
+
+void sub_80AC3E4(void)
+{
+ gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE;
+}
+
+void PreservePaletteInWeather(u8 preservedPalIndex)
+{
+ CpuCopy16(sBasePaletteGammaTypes, sFieldEffectPaletteGammaTypes, 32);
+ sFieldEffectPaletteGammaTypes[preservedPalIndex] = GAMMA_NONE;
+ sPaletteGammaTypes = sFieldEffectPaletteGammaTypes;
+}
+
+void ResetPreservedPalettesInWeather(void)
+{
+ sPaletteGammaTypes = sBasePaletteGammaTypes;
+}
diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c
new file mode 100644
index 000000000..2ec51a722
--- /dev/null
+++ b/src/field_weather_effect.c
@@ -0,0 +1,2471 @@
+#include "global.h"
+#include "event_object_movement.h"
+#include "field_weather.h"
+#include "overworld.h"
+#include "random.h"
+#include "script.h"
+#include "constants/weather.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "gpu_regs.h"
+
+// This file's functions.
+void sub_80AC6B4(struct Sprite *);
+
+// EWRAM
+EWRAM_DATA static u8 gUnknown_02038BC4 = 0;
+EWRAM_DATA static u16 gUnknown_02038BC6 = 0;
+
+// CONST
+const u16 gUnknown_0854C290[] = INCBIN_U16("graphics/weather/1.gbapal");
+const u16 gUnknown_0854C2B0[] = INCBIN_U16("graphics/weather/2.gbapal");
+const u8 gWeatherFog2Tiles[] = INCBIN_U8("graphics/weather/fog2.4bpp");
+const u8 gWeatherFog1Tiles[] = INCBIN_U8("graphics/weather/fog1.4bpp");
+const u8 gWeatherCloudTiles[] = INCBIN_U8("graphics/weather/cloud.4bpp");
+const u8 gWeatherSnow1Tiles[] = INCBIN_U8("graphics/weather/snow0.4bpp");
+const u8 gWeatherSnow2Tiles[] = INCBIN_U8("graphics/weather/snow1.4bpp");
+const u8 gWeatherBubbleTiles[] = INCBIN_U8("graphics/weather/bubble.4bpp");
+const u8 gWeatherAshTiles[] = INCBIN_U8("graphics/weather/ash.4bpp");
+const u8 gWeatherRainTiles[] = INCBIN_U8("graphics/weather/rain.4bpp");
+const u8 gWeatherSandstormTiles[] = INCBIN_U8("graphics/weather/sandstorm.4bpp");
+
+static const struct Coords16 gUnknown_0854FB50[] =
+{
+ { 0, 66},
+ { 5, 73},
+ {10, 78},
+};
+
+static const struct SpriteSheet sCloudSpriteSheet = {gWeatherCloudTiles, sizeof(gWeatherCloudTiles), 0x1200};
+
+static const struct OamData gOamData_839A9DC =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 1,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd gSpriteAnim_839A9E4[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gSpriteAnimTable_839A9EC[] =
+{
+ gSpriteAnim_839A9E4,
+};
+
+static const struct SpriteTemplate sCloudSpriteTemplate =
+{
+ .tileTag = 4608,
+ .paletteTag = 4609,
+ .oam = &gOamData_839A9DC,
+ .anims = gSpriteAnimTable_839A9EC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80AC6B4,
+};
+
+//------------------------------------------------------------------------------
+// Clouds
+//------------------------------------------------------------------------------
+
+void Clouds_InitVars(void)
+{
+ gWeatherPtr->gammaTargetIndex = 0;
+ gWeatherPtr->gammaStepDelay = 20;
+ gWeatherPtr->weatherGfxLoaded = FALSE;
+ gWeatherPtr->initStep = 0;
+ if (gWeatherPtr->cloudSpritesCreated == FALSE)
+ Weather_SetBlendCoeffs(0, 16);
+}
+
+void Clouds_InitAll(void)
+{
+ Clouds_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ Clouds_Main();
+}
+
+void CreateCloudSprites(void);
+
+void Clouds_Main(void)
+{
+ switch (gWeatherPtr->initStep)
+ {
+ case 0:
+ CreateCloudSprites();
+ gWeatherPtr->initStep++;
+ break;
+ case 1:
+ Weather_SetTargetBlendCoeffs(12, 8, 1);
+ gWeatherPtr->initStep++;
+ break;
+ case 2:
+ if (Weather_UpdateBlend())
+ {
+ gWeatherPtr->weatherGfxLoaded = TRUE;
+ gWeatherPtr->initStep++;
+ }
+ break;
+ }
+}
+
+void sub_807E0A0(void);
+
+bool8 Clouds_Finish(void)
+{
+ switch (gWeatherPtr->finishStep)
+ {
+ case 0:
+ Weather_SetTargetBlendCoeffs(0, 16, 1);
+ gWeatherPtr->finishStep++;
+ return TRUE;
+ case 1:
+ if (Weather_UpdateBlend())
+ {
+ sub_807E0A0();
+ gWeatherPtr->finishStep++;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+//------------------------------------------------------------------------------
+// Weather 2
+//------------------------------------------------------------------------------
+
+void Weather2_InitVars(void)
+{
+ gWeatherPtr->gammaTargetIndex = 0;
+ gWeatherPtr->gammaStepDelay = 20;
+}
+
+void Weather2_InitAll(void)
+{
+ Weather2_InitVars();
+}
+
+void Weather2_Main(void)
+{
+}
+
+bool8 Weather2_Finish(void)
+{
+ return 0;
+}
+
+void CreateCloudSprites(void)
+{
+ u16 i;
+
+ if (gWeatherPtr->cloudSpritesCreated == TRUE)
+ return;
+ LoadSpriteSheet(&sCloudSpriteSheet);
+ LoadCustomWeatherSpritePalette(gUnknown_0854C290);
+ for (i = 0; i < 3; i++)
+ {
+ u8 spriteId = CreateSprite(&sCloudSpriteTemplate, 0, 0, 0xFF);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite;
+
+ gWeatherPtr->sprites.s1.cloudSprites[i] = &gSprites[spriteId];
+ sprite = gWeatherPtr->sprites.s1.cloudSprites[i];
+ sub_8093038(gUnknown_0854FB50[i].x + 7, gUnknown_0854FB50[i].y + 7, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->coordOffsetEnabled = TRUE;
+ }
+ else
+ {
+ gWeatherPtr->sprites.s1.cloudSprites[i] = NULL;
+ }
+ }
+ gWeatherPtr->cloudSpritesCreated = TRUE;
+}
+
+void sub_807E0A0(void)
+{
+ u16 i;
+
+ if (gWeatherPtr->cloudSpritesCreated == FALSE)
+ return;
+ for (i = 0; i < 3; i++)
+ {
+ if (gWeatherPtr->sprites.s1.cloudSprites[i] != NULL)
+ DestroySprite(gWeatherPtr->sprites.s1.cloudSprites[i]);
+ }
+ FreeSpriteTilesByTag(0x1200);
+ gWeatherPtr->cloudSpritesCreated = FALSE;
+}
+
+void sub_80AC6B4(struct Sprite *sprite)
+{
+ sprite->data[0] = (sprite->data[0] + 1) & 1;
+ if (sprite->data[0] != 0)
+ sprite->pos1.x--;
+}
+
+//------------------------------------------------------------------------------
+// Drought
+//------------------------------------------------------------------------------
+
+void Drought_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->weatherGfxLoaded = FALSE;
+ gWeatherPtr->gammaTargetIndex = 0;
+ gWeatherPtr->gammaStepDelay = 0;
+}
+
+void Drought_InitAll(void)
+{
+ Drought_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ Drought_Main();
+}
+
+void Drought_Main(void)
+{
+ switch (gWeatherPtr->initStep)
+ {
+ case 0:
+ if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_CHANGING_WEATHER)
+ gWeatherPtr->initStep++;
+ break;
+ case 1:
+ ResetDroughtWeatherPaletteLoading();
+ gWeatherPtr->initStep++;
+ break;
+ case 2:
+ if (LoadDroughtWeatherPalettes() == FALSE)
+ gWeatherPtr->initStep++;
+ break;
+ case 3:
+ sub_80ABFF0();
+ gWeatherPtr->initStep++;
+ break;
+ case 4:
+ sub_80AC01C();
+ if (gWeatherPtr->unknown_73C == 6)
+ {
+ gWeatherPtr->weatherGfxLoaded = TRUE;
+ gWeatherPtr->initStep++;
+ }
+ break;
+ default:
+ sub_80AC01C();
+ break;
+ }
+}
+
+bool8 Drought_Finish(void)
+{
+ return 0;
+}
+
+void task50_0807B6D4(u8);
+
+void sub_80AC81C(void)
+{
+ CreateTask(task50_0807B6D4, 0x50);
+}
+
+#define tState data[0]
+#define tBlendY data[1]
+#define tBlendDelay data[2]
+#define tWinRange data[3]
+
+void task50_0807B6D4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->tState)
+ {
+ case 0:
+ task->tBlendY = 0;
+ task->tBlendDelay = 0;
+ task->tWinRange = REG_WININ;
+ SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(63, 63));
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_LIGHTEN);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ task->tState++;
+ // fall through
+ case 1:
+ task->tBlendY += 3;
+ if (task->tBlendY > 16)
+ task->tBlendY = 16;
+ SetGpuReg(REG_OFFSET_BLDY, task->tBlendY);
+ if (task->tBlendY >= 16)
+ task->tState++;
+ break;
+ case 2:
+ task->tBlendDelay++;
+ if (task->tBlendDelay > 9)
+ {
+ task->tBlendDelay = 0;
+ task->tBlendY--;
+ if (task->tBlendY <= 0)
+ {
+ task->tBlendY = 0;
+ task->tState++;
+ }
+ SetGpuReg(REG_OFFSET_BLDY, task->tBlendY);
+ }
+ break;
+ case 3:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_WININ, task->tWinRange);
+ task->tState++;
+ break;
+ case 4:
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+#undef tState
+#undef tBlendY
+#undef tBlendDelay
+#undef tWinRange
+
+//------------------------------------------------------------------------------
+// Light Rain
+//------------------------------------------------------------------------------
+
+void LightRain_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->weatherGfxLoaded = FALSE;
+ gWeatherPtr->unknown_6D6 = 0;
+ gWeatherPtr->unknown_6DB = 8;
+ gWeatherPtr->unknown_6DC = 0;
+ gWeatherPtr->unknown_6D9 = 10;
+ gWeatherPtr->gammaTargetIndex = 3;
+ gWeatherPtr->gammaStepDelay = 20;
+ SetRainStrengthFromSoundEffect(SE_T_KOAME);
+}
+
+void LightRain_InitAll(void)
+{
+ LightRain_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ LightRain_Main();
+}
+
+void LoadRainSpriteSheet(void);
+u8 CreateRainSprite(void);
+u8 sub_807E8E8(void);
+
+void LightRain_Main(void)
+{
+ switch (gWeatherPtr->initStep)
+ {
+ case 0:
+ LoadRainSpriteSheet();
+ gWeatherPtr->initStep++;
+ break;
+ case 1:
+ if (CreateRainSprite() == 0)
+ gWeatherPtr->initStep++;
+ break;
+ case 2:
+ if (sub_807E8E8() == FALSE)
+ {
+ gWeatherPtr->weatherGfxLoaded = TRUE;
+ gWeatherPtr->initStep++;
+ }
+ break;
+ }
+}
+
+void DestroyRainSprites(void);
+
+bool8 LightRain_Finish(void)
+{
+ switch (gWeatherPtr->finishStep)
+ {
+ case 0:
+ if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT
+ || gWeatherPtr->nextWeather == WEATHER_RAIN_MED
+ || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY)
+ {
+ gWeatherPtr->finishStep = 0xFF;
+ return FALSE;
+ }
+ else
+ {
+ gWeatherPtr->unknown_6D9 = 0;
+ gWeatherPtr->finishStep++;
+ }
+ // fall through
+ case 1:
+ if (sub_807E8E8() == FALSE)
+ {
+ DestroyRainSprites();
+ gWeatherPtr->finishStep++;
+ return FALSE;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+// defined below
+extern const s16 gUnknown_0839AABC[][2];
+extern const u16 gUnknown_0839AAC4[][2];
+
+void sub_807E4EC(struct Sprite *sprite)
+{
+ u32 randVal;
+ u16 r6;
+ s32 r4;
+ s32 r0;
+
+ if (sprite->data[1] == 0)
+ sprite->data[1] = 361;
+ randVal = sprite->data[1] * 1103515245 + 12345;
+ sprite->data[1] = ((randVal & 0x7FFF0000) >> 16) % 600;
+
+ r6 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0];
+
+ r4 = sprite->data[1] % 30;
+ sprite->data[2] = r4 * 8; // useless assignment
+
+ r0 = sprite->data[1] / 30;
+ sprite->data[3] = r0 * 8; // useless assignment
+
+ sprite->data[2] = r4;
+ sprite->data[2] <<= 7;
+
+ sprite->data[3] = r0;
+ sprite->data[3] <<= 7;
+
+ sprite->data[2] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0] * r6;
+ sprite->data[3] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1] * r6;
+
+ StartSpriteAnim(sprite, 0);
+ sprite->data[4] = 0;
+ sprite->coordOffsetEnabled = FALSE;
+ sprite->data[0] = r6;
+}
+
+void sub_807E5C0(struct Sprite *sprite)
+{
+ if (sprite->data[4] == 0)
+ {
+ sprite->data[2] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0];
+ sprite->data[3] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1];
+ sprite->pos1.x = sprite->data[2] >> 4;
+ sprite->pos1.y = sprite->data[3] >> 4;
+
+ if (sprite->data[5] != 0
+ && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248)
+ && sprite->pos1.y >= -16 && sprite->pos1.y <= 176)
+ sprite->invisible = FALSE;
+ else
+ sprite->invisible = TRUE;
+
+ sprite->data[0]--;
+ if (sprite->data[0] == 0)
+ {
+ StartSpriteAnim(sprite, gWeatherPtr->unknown_6DC + 1);
+ sprite->data[4] = 1;
+ sprite->pos1.x -= gSpriteCoordOffsetX;
+ sprite->pos1.y -= gSpriteCoordOffsetY;
+ sprite->coordOffsetEnabled = TRUE;
+ }
+ }
+ else if (sprite->animEnded)
+ {
+ sprite->invisible = TRUE;
+ sub_807E4EC(sprite);
+ }
+}
+
+void sub_807E6C4(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sub_807E4EC(sprite);
+ sprite->callback = sub_807E5C0;
+ }
+ else
+ {
+ sprite->data[0]--;
+ }
+}
+
+void sub_807E6F0(struct Sprite *sprite, u16 b)
+{
+ u16 r8 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0];
+ u16 r6 = b / (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8);
+ u16 r4 = b % (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8);
+
+ while (--r6 != 0xFFFF)
+ sub_807E4EC(sprite);
+ if (r4 < r8)
+ {
+ while (--r4 != 0xFFFF)
+ sub_807E5C0(sprite);
+ sprite->data[6] = 0;
+ }
+ else
+ {
+ sprite->data[0] = r4 - r8;
+ sprite->invisible = TRUE;
+ sprite->data[6] = 1;
+ }
+}
+
+extern const struct SpriteSheet sRainSpriteSheet; // defined below
+
+void LoadRainSpriteSheet(void)
+{
+ LoadSpriteSheet(&sRainSpriteSheet);
+}
+
+static const struct Coords16 sRainSpriteCoords[] =
+{
+ { 0, 0},
+ { 0, 160},
+ { 0, 64},
+ {144, 224},
+ {144, 128},
+ { 32, 32},
+ { 32, 192},
+ { 32, 96},
+ { 72, 128},
+ { 72, 32},
+ { 72, 192},
+ {216, 96},
+ {216, 0},
+ {104, 160},
+ {104, 64},
+ {104, 224},
+ {144, 0},
+ {144, 160},
+ {144, 64},
+ { 32, 224},
+ { 32, 128},
+ { 72, 32},
+ { 72, 192},
+ { 48, 96},
+};
+
+static const struct OamData gOamData_839AA68 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 2,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 2,
+ .affineParam = 0,
+};
+
+static const union AnimCmd gSpriteAnim_839AA70[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd gSpriteAnim_839AA78[] =
+{
+ ANIMCMD_FRAME(8, 3),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(40, 2),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_839AA88[] =
+{
+ ANIMCMD_FRAME(8, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gSpriteAnimTable_839AA98[] =
+{
+ gSpriteAnim_839AA70,
+ gSpriteAnim_839AA78,
+ gSpriteAnim_839AA88,
+};
+
+static const struct SpriteTemplate sRainSpriteTemplate =
+{
+ .tileTag = 4614,
+ .paletteTag = 4608,
+ .oam = &gOamData_839AA68,
+ .anims = gSpriteAnimTable_839AA98,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807E5C0,
+};
+
+const s16 gUnknown_0839AABC[][2] =
+{
+ {-104, 208},
+ {-160, 320},
+};
+
+const u16 gUnknown_0839AAC4[][2] =
+{
+ {18, 7},
+ {12, 10},
+};
+
+static const struct SpriteSheet sRainSpriteSheet = {gWeatherRainTiles, sizeof(gWeatherRainTiles), 0x1206};
+
+static const struct OamData gOamData_839AAD4 =
+{
+ .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 struct SpriteFrameImage gSpriteImageTable_839AADC[] =
+{
+ {gWeatherSnow1Tiles, sizeof(gWeatherSnow1Tiles)},
+ {gWeatherSnow2Tiles, sizeof(gWeatherSnow2Tiles)},
+};
+
+static const union AnimCmd gSpriteAnim_839AAEC[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_839AAF4[] =
+{
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gSpriteAnimTable_839AAFC[] =
+{
+ gSpriteAnim_839AAEC,
+ gSpriteAnim_839AAF4,
+};
+
+void sub_807ED48(struct Sprite *);
+static const struct SpriteTemplate sSnowflakeSpriteTemplate =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 4608,
+ .oam = &gOamData_839AAD4,
+ .anims = gSpriteAnimTable_839AAFC,
+ .images = gSpriteImageTable_839AADC,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807ED48,
+};
+
+// unused data
+static const u16 unusedData_839AB1C[] = {0, 6, 6, 12, 18, 42, 300, 300};
+
+static const struct OamData gOamData_839AB2C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 1,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd gSpriteAnim_839AB34[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_839AB3C[] =
+{
+ ANIMCMD_FRAME(32, 16),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_839AB44[] =
+{
+ ANIMCMD_FRAME(64, 16),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_839AB4C[] =
+{
+ ANIMCMD_FRAME(96, 16),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_839AB54[] =
+{
+ ANIMCMD_FRAME(128, 16),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_839AB5C[] =
+{
+ ANIMCMD_FRAME(160, 16),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gSpriteAnimTable_839AB64[] =
+{
+ gSpriteAnim_839AB34,
+ gSpriteAnim_839AB3C,
+ gSpriteAnim_839AB44,
+ gSpriteAnim_839AB4C,
+ gSpriteAnim_839AB54,
+ gSpriteAnim_839AB5C,
+};
+
+static const union AffineAnimCmd gSpriteAffineAnim_839AB7C[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_839AB8C[] =
+{
+ gSpriteAffineAnim_839AB7C,
+};
+
+static void Fog1SpriteCallback(struct Sprite *);
+static const struct SpriteTemplate sFog1SpriteTemplate =
+{
+ .tileTag = 4609,
+ .paletteTag = 4608,
+ .oam = &gOamData_839AB2C,
+ .anims = gSpriteAnimTable_839AB64,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_839AB8C,
+ .callback = Fog1SpriteCallback,
+};
+
+bool8 CreateRainSprite(void)
+{
+ u8 spriteNum;
+ u8 spriteId;
+
+ if (gWeatherPtr->rainSpriteCount == 24)
+ return FALSE;
+
+ spriteNum = gWeatherPtr->rainSpriteCount;
+ spriteId = CreateSpriteAtEnd(&sRainSpriteTemplate,
+ sRainSpriteCoords[spriteNum].x, sRainSpriteCoords[spriteNum].y, 78);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[5] = 0;
+ gSprites[spriteId].data[1] = spriteNum * 145;
+ while (gSprites[spriteId].data[1] >= 600)
+ gSprites[spriteId].data[1] -= 600;
+ sub_807E4EC(&gSprites[spriteId]);
+ sub_807E6F0(&gSprites[spriteId], spriteNum * 9);
+ gSprites[spriteId].invisible = TRUE;
+ gWeatherPtr->sprites.s1.rainSprites[spriteNum] = &gSprites[spriteId];
+ }
+ else
+ {
+ gWeatherPtr->sprites.s1.rainSprites[spriteNum] = NULL;
+ }
+
+ if (++gWeatherPtr->rainSpriteCount == 24)
+ {
+ u16 i;
+
+ for (i = 0; i < 24; i++)
+ {
+ if (gWeatherPtr->sprites.s1.rainSprites[i] != NULL)
+ {
+ if (gWeatherPtr->sprites.s1.rainSprites[i]->data[6] == 0)
+ gWeatherPtr->sprites.s1.rainSprites[i]->callback = sub_807E5C0;
+ else
+ gWeatherPtr->sprites.s1.rainSprites[i]->callback = sub_807E6C4;
+ }
+ }
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_807E8E8(void)
+{
+ if (gWeatherPtr->unknown_6D8 == gWeatherPtr->unknown_6D9)
+ return FALSE;
+
+ if (++gWeatherPtr->unknown_6D6 > gWeatherPtr->unknown_6DB)
+ {
+ gWeatherPtr->unknown_6D6 = 0;
+ if (gWeatherPtr->unknown_6D8 < gWeatherPtr->unknown_6D9)
+ {
+ gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->unknown_6D8++]->data[5] = 1;
+ }
+ else
+ {
+ gWeatherPtr->unknown_6D8--;
+ gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->unknown_6D8]->data[5] = 0;
+ gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->unknown_6D8]->invisible = TRUE;
+ }
+ }
+ return TRUE;
+}
+
+void DestroyRainSprites(void)
+{
+ u16 i;
+
+ for (i = 0; i < gWeatherPtr->rainSpriteCount; i++)
+ {
+ if (gWeatherPtr->sprites.s1.rainSprites[i] != NULL)
+ DestroySprite(gWeatherPtr->sprites.s1.rainSprites[i]);
+ }
+ gWeatherPtr->rainSpriteCount = 0;
+ FreeSpriteTilesByTag(0x1206);
+}
+
+//------------------------------------------------------------------------------
+// Snow
+//------------------------------------------------------------------------------
+
+void Snow_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->weatherGfxLoaded = FALSE;
+ gWeatherPtr->gammaTargetIndex = 3;
+ gWeatherPtr->gammaStepDelay = 20;
+ gWeatherPtr->unknown_6E5 = 16;
+ gWeatherPtr->unknown_6E0 = 0;
+}
+
+void Snow_Main(void);
+void sub_807ED48(struct Sprite *);
+
+void Snow_InitAll(void)
+{
+ Snow_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ {
+ u16 i;
+
+ Snow_Main();
+ for (i = 0; i < gWeatherPtr->snowflakeSpriteCount; i++)
+ {
+ sub_807ED48(gWeatherPtr->sprites.s1.snowflakeSprites[i]);
+ }
+ }
+}
+
+u8 snowflakes_progress(void);
+
+void Snow_Main(void)
+{
+ if (gWeatherPtr->initStep == 0 && snowflakes_progress() == FALSE)
+ {
+ gWeatherPtr->weatherGfxLoaded = TRUE;
+ gWeatherPtr->initStep++;
+ }
+}
+
+bool8 Snow_Finish(void)
+{
+ switch (gWeatherPtr->finishStep)
+ {
+ case 0:
+ gWeatherPtr->unknown_6E5 = 0;
+ gWeatherPtr->unknown_6E0 = 0;
+ gWeatherPtr->finishStep++;
+ // fall through
+ case 1:
+ if (snowflakes_progress() == FALSE)
+ {
+ gWeatherPtr->finishStep++;
+ return FALSE;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 CreateSnowflakeSprite(void);
+bool8 RemoveSnowflakeSprite(void);
+
+bool8 snowflakes_progress(void)
+{
+ if (gWeatherPtr->snowflakeSpriteCount == gWeatherPtr->unknown_6E5)
+ return FALSE;
+
+ gWeatherPtr->unknown_6E0++;
+ if (gWeatherPtr->unknown_6E0 > 36)
+ {
+ gWeatherPtr->unknown_6E0 = 0;
+ if (gWeatherPtr->snowflakeSpriteCount < gWeatherPtr->unknown_6E5)
+ CreateSnowflakeSprite();
+ else
+ RemoveSnowflakeSprite();
+ }
+ return (gWeatherPtr->snowflakeSpriteCount != gWeatherPtr->unknown_6E5);
+}
+
+void sub_807EC40(struct Sprite *);
+
+bool8 CreateSnowflakeSprite(void)
+{
+ u8 spriteId = CreateSpriteAtEnd(&sSnowflakeSpriteTemplate, 0, 0, 78);
+
+ if (spriteId == MAX_SPRITES)
+ return FALSE;
+ gSprites[spriteId].data[4] = gWeatherPtr->snowflakeSpriteCount;
+ sub_807EC40(&gSprites[spriteId]);
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ gWeatherPtr->sprites.s1.snowflakeSprites[gWeatherPtr->snowflakeSpriteCount++] = &gSprites[spriteId];
+ return TRUE;
+}
+
+bool8 RemoveSnowflakeSprite(void)
+{
+ if (gWeatherPtr->snowflakeSpriteCount != 0)
+ {
+ DestroySprite(gWeatherPtr->sprites.s1.snowflakeSprites[--gWeatherPtr->snowflakeSpriteCount]);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_807EC40(struct Sprite *sprite)
+{
+ u16 r4 = ((sprite->data[4] * 5) & 7) * 30 + (Random() % 30);
+ u16 r6;
+
+ sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
+ sprite->pos1.x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
+ sprite->data[0] = sprite->pos1.y * 128;
+ sprite->pos2.x = 0;
+ r6 = Random();
+ sprite->data[1] = (r6 & 3) * 5 + 64;
+ sprite->data[7] = (r6 & 3) * 5 + 64;
+ StartSpriteAnim(sprite, (r6 & 1) ? 0 : 1);
+ sprite->data[3] = 0;
+ sprite->data[2] = ((r6 & 3) == 0) ? 2 : 1;
+ sprite->data[6] = (r6 & 0x1F) + 210;
+ sprite->data[5] = 0;
+}
+
+void sub_807ECEC(struct Sprite *sprite)
+{
+ if (gWeatherPtr->unknown_6E2 > 18)
+ {
+ sprite->invisible = FALSE;
+ sprite->callback = sub_807ED48;
+ sprite->pos1.y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
+ sprite->data[0] = sprite->pos1.y * 128;
+ gWeatherPtr->unknown_6E2 = 0;
+ }
+}
+
+void sub_807ED48(struct Sprite *sprite)
+{
+ s16 r3;
+ s16 r2;
+
+ sprite->data[0] += sprite->data[1];
+ sprite->pos1.y = sprite->data[0] >> 7;
+ sprite->data[3] = (sprite->data[3] + sprite->data[2]) & 0xFF;
+ sprite->pos2.x = gSineTable[sprite->data[3]] / 64;
+
+ r3 = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF;
+ if (r3 & 0x100)
+ r3 |= -0x100; // hmm... what is this?
+ if (r3 < -3)
+ sprite->pos1.x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
+ else if (r3 > 242)
+ sprite->pos1.x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
+
+ r2 = (sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF;
+ if (r2 > 163 && r2 < 171)
+ {
+ sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
+ sprite->data[0] = sprite->pos1.y * 128;
+ sprite->data[5] = 0;
+ sprite->data[6] = 220;
+ }
+ else if (r2 > 242 && r2 < 250)
+ {
+ sprite->pos1.y = 163;
+ sprite->data[0] = sprite->pos1.y * 128;
+ sprite->data[5] = 0;
+ sprite->data[6] = 220;
+ sprite->invisible = TRUE;
+ sprite->callback = sub_807ECEC;
+ }
+
+ sprite->data[5]++;
+ if (sprite->data[5] == sprite->data[6])
+ {
+ sub_807EC40(sprite);
+ sprite->pos1.y = 250;
+ sprite->invisible = TRUE;
+ sprite->callback = sub_807ECEC;
+ }
+}
+
+//------------------------------------------------------------------------------
+// Medium Rain
+//------------------------------------------------------------------------------
+
+void MedRain_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->weatherGfxLoaded = FALSE;
+ gWeatherPtr->unknown_6D6 = 0;
+ gWeatherPtr->unknown_6DB = 4;
+ gWeatherPtr->unknown_6DC = 0;
+ gWeatherPtr->unknown_6D9 = 16;
+ gWeatherPtr->gammaTargetIndex = 3;
+ gWeatherPtr->gammaStepDelay = 20;
+ gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment
+ gWeatherPtr->unknown_6ED = 0;
+ SetRainStrengthFromSoundEffect(SE_T_AME);
+}
+
+void Rain_Main(void);
+
+void MedRain_InitAll(void)
+{
+ MedRain_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ Rain_Main();
+}
+
+//------------------------------------------------------------------------------
+// Heavy Rain
+//------------------------------------------------------------------------------
+
+void HeavyRain_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->weatherGfxLoaded = FALSE;
+ gWeatherPtr->unknown_6D6 = 0;
+ gWeatherPtr->unknown_6DB = 4;
+ gWeatherPtr->unknown_6DC = 1;
+ gWeatherPtr->unknown_6D9 = 24;
+ gWeatherPtr->gammaTargetIndex = 3;
+ gWeatherPtr->gammaStepDelay = 20;
+ gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment
+ SetRainStrengthFromSoundEffect(SE_T_OOAME);
+}
+
+void HeavyRain_InitAll(void)
+{
+ HeavyRain_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ Rain_Main();
+}
+
+void UpdateThunderSound(void);
+void SetThunderCounter(u16);
+
+void Rain_Main(void)
+{
+ UpdateThunderSound();
+ switch (gWeatherPtr->initStep)
+ {
+ case 0:
+ LoadRainSpriteSheet();
+ gWeatherPtr->initStep++;
+ break;
+ case 1:
+ if (CreateRainSprite())
+ break;
+ gWeatherPtr->initStep++;
+ break;
+ case 2:
+ if (sub_807E8E8())
+ break;
+ gWeatherPtr->weatherGfxLoaded = TRUE;
+ gWeatherPtr->initStep++;
+ break;
+ case 3:
+ if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_CHANGING_WEATHER)
+ break;
+ gWeatherPtr->initStep = 6;
+ break;
+ case 4:
+ gWeatherPtr->unknown_6EA = 1;
+ gWeatherPtr->unknown_6E6 = (Random() % 360) + 360;
+ gWeatherPtr->initStep++;
+ // fall through
+ case 5:
+ if (--gWeatherPtr->unknown_6E6 != 0)
+ break;
+ gWeatherPtr->initStep++;
+ break;
+ case 6:
+ gWeatherPtr->unknown_6EA = 1;
+ gWeatherPtr->unknown_6EB = Random() % 2;
+ gWeatherPtr->initStep++;
+ break;
+ case 7:
+ gWeatherPtr->unknown_6EC = (Random() & 1) + 1;
+ gWeatherPtr->initStep++;
+ // fall through
+ case 8:
+ sub_80ABC48(19);
+ if (gWeatherPtr->unknown_6EB == 0 && gWeatherPtr->unknown_6EC == 1)
+ SetThunderCounter(20);
+ gWeatherPtr->unknown_6E6 = (Random() % 3) + 6;
+ gWeatherPtr->initStep++;
+ break;
+ case 9:
+ if (--gWeatherPtr->unknown_6E6 != 0)
+ break;
+ sub_80ABC48(3);
+ gWeatherPtr->unknown_6EA = 1;
+ if (--gWeatherPtr->unknown_6EC != 0)
+ {
+ gWeatherPtr->unknown_6E6 = (Random() % 16) + 60;
+ gWeatherPtr->initStep = 10;
+ }
+ else if (gWeatherPtr->unknown_6EB == 0)
+ {
+ gWeatherPtr->initStep = 4;
+ }
+ else
+ {
+ gWeatherPtr->initStep = 11;
+ }
+ break;
+ case 10:
+ if (--gWeatherPtr->unknown_6E6 != 0)
+ break;
+ gWeatherPtr->initStep = 8;
+ break;
+ case 11:
+ gWeatherPtr->unknown_6E6 = (Random() % 16) + 60;
+ gWeatherPtr->initStep++;
+ break;
+ case 12:
+ if (--gWeatherPtr->unknown_6E6 != 0)
+ break;
+ SetThunderCounter(100);
+ sub_80ABC48(19);
+ // Why use "% 16" everywhere else and "& 0xF" here. So dumb.
+ gWeatherPtr->unknown_6E6 = (Random() & 0xF) + 30;
+ gWeatherPtr->initStep++;
+ break;
+ case 13:
+ if (--gWeatherPtr->unknown_6E6 != 0)
+ break;
+ sub_80ABC7C(19, 3, 5);
+ gWeatherPtr->initStep++;
+ break;
+ case 14:
+ if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_IDLE)
+ break;
+ gWeatherPtr->unknown_6EA = 1;
+ gWeatherPtr->initStep = 4;
+ break;
+ }
+}
+
+bool8 Rain_Finish(void)
+{
+ switch (gWeatherPtr->finishStep)
+ {
+ case 0:
+ gWeatherPtr->unknown_6EA = 0;
+ gWeatherPtr->finishStep++;
+ // fall through
+ case 1:
+ Rain_Main();
+ if (gWeatherPtr->unknown_6EA != 0)
+ {
+ if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT
+ || gWeatherPtr->nextWeather == WEATHER_RAIN_MED
+ || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY)
+ return FALSE;
+ gWeatherPtr->unknown_6D9 = 0;
+ gWeatherPtr->finishStep++;
+ }
+ break;
+ case 2:
+ if (sub_807E8E8())
+ break;
+ DestroyRainSprites();
+ gWeatherPtr->unknown_6ED = 0;
+ gWeatherPtr->finishStep++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void SetThunderCounter(u16 max)
+{
+ if (gWeatherPtr->unknown_6ED == 0)
+ {
+ gWeatherPtr->thunderCounter = Random() % max;
+ gWeatherPtr->unknown_6ED = 1;
+ }
+}
+
+void UpdateThunderSound(void)
+{
+ if (gWeatherPtr->unknown_6ED == 1)
+ {
+ if (gWeatherPtr->thunderCounter == 0)
+ {
+ if (IsSEPlaying())
+ return;
+ if (Random() & 1)
+ PlaySE(SE_T_KAMI);
+ else
+ PlaySE(SE_T_KAMI2);
+ gWeatherPtr->unknown_6ED = 0;
+ }
+ else
+ {
+ gWeatherPtr->thunderCounter--;
+ }
+ }
+}
+
+//------------------------------------------------------------------------------
+// Fog 1
+//------------------------------------------------------------------------------
+
+void Fog1_Main(void);
+static void CreateFog1Sprites(void);
+static void DestroyFog1Sprites(void);
+
+void Fog1_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->weatherGfxLoaded = FALSE;
+ gWeatherPtr->gammaTargetIndex = 0;
+ gWeatherPtr->gammaStepDelay = 20;
+ if (gWeatherPtr->fog1SpritesCreated == 0)
+ {
+ gWeatherPtr->unknown_6F0 = 0;
+ gWeatherPtr->unknown_6F2 = 0;
+ gWeatherPtr->fog1ScrollPosX = 0;
+ Weather_SetBlendCoeffs(0, 16);
+ }
+}
+
+void Fog1_InitAll(void)
+{
+ Fog1_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ Fog1_Main();
+}
+
+void Fog1_Main(void)
+{
+ gWeatherPtr->fog1ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF;
+ if (++gWeatherPtr->unknown_6F0 > 3)
+ {
+ gWeatherPtr->unknown_6F0 = 0;
+ gWeatherPtr->unknown_6F2++;
+ }
+ switch (gWeatherPtr->initStep)
+ {
+ case 0:
+ CreateFog1Sprites();
+ if (gWeatherPtr->currWeather == WEATHER_FOG_1)
+ Weather_SetTargetBlendCoeffs(12, 8, 3);
+ else
+ Weather_SetTargetBlendCoeffs(4, 16, 0);
+ gWeatherPtr->initStep++;
+ break;
+ case 1:
+ if (Weather_UpdateBlend())
+ {
+ gWeatherPtr->weatherGfxLoaded = TRUE;
+ gWeatherPtr->initStep++;
+ }
+ break;
+ }
+}
+
+bool8 Fog1_Finish(void)
+{
+ gWeatherPtr->fog1ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF;
+ if (++gWeatherPtr->unknown_6F0 > 3)
+ {
+ gWeatherPtr->unknown_6F0 = 0;
+ gWeatherPtr->unknown_6F2++;
+ }
+ switch (gWeatherPtr->finishStep)
+ {
+ case 0:
+ Weather_SetTargetBlendCoeffs(0, 16, 3);
+ gWeatherPtr->finishStep++;
+ break;
+ case 1:
+ if (!Weather_UpdateBlend())
+ break;
+ gWeatherPtr->finishStep++;
+ break;
+ case 2:
+ DestroyFog1Sprites();
+ gWeatherPtr->finishStep++;
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+#define sprColumn data[0]
+
+static void Fog1SpriteCallback(struct Sprite *sprite)
+{
+ sprite->pos2.y = (u8)gSpriteCoordOffsetY;
+ sprite->pos1.x = gWeatherPtr->fog1ScrollPosX + 32 + sprite->sprColumn * 64;
+ if (sprite->pos1.x > 0x10F)
+ {
+ sprite->pos1.x = 480 + gWeatherPtr->fog1ScrollPosX - (4 - sprite->sprColumn) * 64;
+ sprite->pos1.x &= 0x1FF;
+ }
+}
+
+static void CreateFog1Sprites(void)
+{
+ u16 i;
+
+ if (!gWeatherPtr->fog1SpritesCreated)
+ {
+ struct SpriteSheet fog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1201};
+
+ LoadSpriteSheet(&fog1SpriteSheet);
+ for (i = 0; i < 20; i++)
+ {
+ u8 spriteId = CreateSpriteAtEnd(&sFog1SpriteTemplate, 0, 0, 0xFF);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+
+ sprite->sprColumn = i % 5;
+ sprite->pos1.x = (i % 5) * 64 + 32;
+ sprite->pos1.y = (i / 5) * 64 + 32;
+ gWeatherPtr->sprites.s2.fog1Sprites[i] = sprite;
+ }
+ else
+ {
+ gWeatherPtr->sprites.s2.fog1Sprites[i] = NULL;
+ }
+ }
+ gWeatherPtr->fog1SpritesCreated = TRUE;
+ }
+}
+
+#undef sprColumn
+
+static void DestroyFog1Sprites(void)
+{
+ u16 i;
+
+ if (gWeatherPtr->fog1SpritesCreated)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ if (gWeatherPtr->sprites.s2.fog1Sprites[i] != NULL)
+ DestroySprite(gWeatherPtr->sprites.s2.fog1Sprites[i]);
+ }
+ FreeSpriteTilesByTag(0x1201);
+ gWeatherPtr->fog1SpritesCreated = 0;
+ }
+}
+
+//------------------------------------------------------------------------------
+// Volcanic ash
+//------------------------------------------------------------------------------
+
+void Ash_Main(void);
+void LoadAshSpriteSheet(void);
+void CreateAshSprites(void);
+void DestroyAshSprites(void);
+
+void Ash_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->weatherGfxLoaded = FALSE;
+ gWeatherPtr->gammaTargetIndex = 0;
+ gWeatherPtr->gammaStepDelay = 20;
+ gWeatherPtr->unknown_6FE = 20;
+ if (!gWeatherPtr->ashSpritesCreated)
+ {
+ Weather_SetBlendCoeffs(0, 16);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(64, 63)); // Those aren't even valid coefficients!
+ }
+}
+
+void Ash_InitAll(void)
+{
+ Ash_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ Ash_Main();
+}
+
+void Ash_Main(void)
+{
+ gWeatherPtr->unknown_6FC = gSpriteCoordOffsetX & 0x1FF;
+ while (gWeatherPtr->unknown_6FC > 0xEF)
+ gWeatherPtr->unknown_6FC -= 0xF0;
+ switch (gWeatherPtr->initStep)
+ {
+ case 0:
+ LoadAshSpriteSheet();
+ gWeatherPtr->initStep++;
+ break;
+ case 1:
+ if (!gWeatherPtr->ashSpritesCreated)
+ CreateAshSprites();
+ Weather_SetTargetBlendCoeffs(16, 0, 1);
+ gWeatherPtr->initStep++;
+ break;
+ case 2:
+ if (!Weather_UpdateBlend())
+ break;
+ gWeatherPtr->weatherGfxLoaded = TRUE;
+ gWeatherPtr->initStep++;
+ break;
+ default:
+ Weather_UpdateBlend();
+ break;
+ }
+}
+
+bool8 Ash_Finish(void)
+{
+ switch (gWeatherPtr->finishStep)
+ {
+ case 0:
+ Weather_SetTargetBlendCoeffs(0, 16, 1);
+ gWeatherPtr->finishStep++;
+ break;
+ case 1:
+ if (!Weather_UpdateBlend())
+ break;
+ DestroyAshSprites();
+ gWeatherPtr->finishStep++;
+ break;
+ case 2:
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ gWeatherPtr->finishStep++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static const struct SpriteSheet sAshSpriteSheet = {gWeatherAshTiles, sizeof(gWeatherAshTiles), 0x1202};
+
+void LoadAshSpriteSheet(void)
+{
+ LoadSpriteSheet(&sAshSpriteSheet);
+}
+
+const struct OamData gOamData_839ABB8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 1,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 15,
+ .affineParam = 0,
+};
+
+const union AnimCmd gSpriteAnim_839ABC0[] =
+{
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(64, 60),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_839ABCC[] =
+{
+ gSpriteAnim_839ABC0,
+};
+
+void sub_807FAA8(struct Sprite *);
+static const struct SpriteTemplate sAshSpriteTemplate =
+{
+ .tileTag = 4610,
+ .paletteTag = 4608,
+ .oam = &gOamData_839ABB8,
+ .anims = gSpriteAnimTable_839ABCC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807FAA8,
+};
+
+void CreateAshSprites(void)
+{
+ u8 i;
+
+ if (!gWeatherPtr->ashSpritesCreated)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ u8 spriteId = CreateSpriteAtEnd(&sAshSpriteTemplate, 0, 0, 0x4E);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+
+ sprite->data[1] = 0;
+ sprite->data[2] = (u8)(i % 5);
+ sprite->data[3] = (u8)(i / 5);
+ sprite->data[0] = sprite->data[3] * 64 + 32;
+ gWeatherPtr->sprites.s2.ashSprites[i] = sprite;
+ }
+ else
+ {
+ gWeatherPtr->sprites.s2.ashSprites[i] = NULL;
+ }
+ }
+ gWeatherPtr->ashSpritesCreated = TRUE;
+ }
+}
+
+void DestroyAshSprites(void)
+{
+ u16 i;
+
+ if (gWeatherPtr->ashSpritesCreated)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL)
+ DestroySprite(gWeatherPtr->sprites.s2.ashSprites[i]);
+ }
+ FreeSpriteTilesByTag(0x1202);
+ gWeatherPtr->ashSpritesCreated = FALSE;
+ }
+}
+
+void sub_807FAA8(struct Sprite *sprite)
+{
+ sprite->data[1]++;
+ if (sprite->data[1] > 5)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ sprite->pos1.y = gSpriteCoordOffsetY + sprite->data[0];
+ sprite->pos1.x = gWeatherPtr->unknown_6FC + 32 + sprite->data[2] * 64;
+ if (sprite->pos1.x > 271)
+ {
+ sprite->pos1.x = gWeatherPtr->unknown_6FC + 0x1E0 - (4 - sprite->data[2]) * 64;
+ sprite->pos1.x &= 0x1FF;
+ }
+}
+
+//------------------------------------------------------------------------------
+// Fog 2
+//------------------------------------------------------------------------------
+
+void Fog2_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->weatherGfxLoaded = 0;
+ gWeatherPtr->gammaTargetIndex = 0;
+ gWeatherPtr->gammaStepDelay = 20;
+ gWeatherPtr->unknown_6F0 = 0;
+ gWeatherPtr->unknown_6F2 = 1;
+ if (gWeatherPtr->fog2SpritesCreated == 0)
+ {
+ gWeatherPtr->unknown_71C = 0;
+ gWeatherPtr->unknown_71E = 0;
+ gWeatherPtr->unknown_720 = 0;
+ gWeatherPtr->unknown_722 = 0;
+ gWeatherPtr->unknown_718 = 0;
+ gWeatherPtr->unknown_71A = 0;
+ Weather_SetBlendCoeffs(0, 16);
+ }
+}
+
+void Fog2_Main(void);
+
+void Fog2_InitAll(void)
+{
+ Fog2_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ Fog2_Main();
+}
+
+void sub_807FC9C(void);
+void CreateFog2Sprites(void);
+
+void Fog2_Main(void)
+{
+ sub_807FC9C();
+ switch (gWeatherPtr->initStep)
+ {
+ case 0:
+ CreateFog2Sprites();
+ gWeatherPtr->initStep++;
+ break;
+ case 1:
+ Weather_SetTargetBlendCoeffs(12, 8, 8);
+ gWeatherPtr->initStep++;
+ break;
+ case 2:
+ if (!Weather_UpdateBlend())
+ break;
+ gWeatherPtr->weatherGfxLoaded = TRUE;
+ gWeatherPtr->initStep++;
+ break;
+ }
+}
+
+void DestroyFog2Sprites(void);
+
+bool8 Fog2_Finish(void)
+{
+ sub_807FC9C();
+ switch (gWeatherPtr->finishStep)
+ {
+ case 0:
+ Weather_SetTargetBlendCoeffs(0, 16, 1);
+ gWeatherPtr->finishStep++;
+ break;
+ case 1:
+ if (!Weather_UpdateBlend())
+ break;
+ gWeatherPtr->finishStep++;
+ break;
+ case 2:
+ DestroyFog2Sprites();
+ gWeatherPtr->finishStep++;
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_807FC9C(void)
+{
+ if (++gWeatherPtr->unknown_71C > 2)
+ {
+ gWeatherPtr->unknown_720++;
+ gWeatherPtr->unknown_71C = 0;
+ }
+
+ if (++gWeatherPtr->unknown_71E > 4)
+ {
+ gWeatherPtr->unknown_722++;
+ gWeatherPtr->unknown_71E = 0;
+ }
+
+ gWeatherPtr->unknown_718 = (gSpriteCoordOffsetX - gWeatherPtr->unknown_720) & 0xFF;
+ gWeatherPtr->unknown_71A = gSpriteCoordOffsetY + gWeatherPtr->unknown_722;
+}
+
+extern const struct SpriteTemplate sFog2SpriteTemplate; // defined below
+
+void CreateFog2Sprites(void)
+{
+ u16 i;
+
+ if (!gWeatherPtr->fog2SpritesCreated)
+ {
+ struct SpriteSheet fog2SpriteSheet = {gWeatherFog2Tiles, sizeof(gWeatherFog2Tiles), 0x1203};
+
+ LoadSpriteSheet(&fog2SpriteSheet);
+ for (i = 0; i < 20; i++)
+ {
+ u8 spriteId = CreateSpriteAtEnd(&sFog2SpriteTemplate, 0, (i / 5) * 64, 0xFF);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+
+ sprite->data[0] = i % 5;
+ sprite->data[1] = i / 5;
+ gWeatherPtr->sprites.s2.fog2Sprites[i] = sprite;
+ }
+ else
+ {
+ gWeatherPtr->sprites.s2.fog2Sprites[i] = NULL;
+ }
+ }
+ gWeatherPtr->fog2SpritesCreated = TRUE;
+ }
+}
+
+const struct OamData gOamData_839ABF0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 1,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const union AnimCmd gSpriteAnim_839ABF8[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_839AC00[] =
+{
+ gSpriteAnim_839ABF8,
+};
+
+void Fog2SpriteCallback(struct Sprite *);
+const struct SpriteTemplate sFog2SpriteTemplate =
+{
+ .tileTag = 4611,
+ .paletteTag = 4608,
+ .oam = &gOamData_839ABF0,
+ .anims = gSpriteAnimTable_839AC00,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = Fog2SpriteCallback,
+};
+
+void DestroyFog2Sprites(void)
+{
+ u16 i;
+
+ if (gWeatherPtr->fog2SpritesCreated)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ if (gWeatherPtr->sprites.s2.fog2Sprites[i] != NULL)
+ DestroySprite(gWeatherPtr->sprites.s2.fog2Sprites[i]);
+ }
+ FreeSpriteTilesByTag(0x1203);
+ gWeatherPtr->fog2SpritesCreated = FALSE;
+ }
+}
+
+void Fog2SpriteCallback(struct Sprite *sprite)
+{
+ sprite->pos2.y = gWeatherPtr->unknown_71A;
+ sprite->pos1.x = gWeatherPtr->unknown_718 + 32 + sprite->data[0] * 64;
+ if (sprite->pos1.x > 271)
+ {
+ sprite->pos1.x = gWeatherPtr->unknown_718 + 0x1E0 - (4 - sprite->data[0]) * 64;
+ sprite->pos1.x &= 0x1FF;
+ }
+}
+
+//------------------------------------------------------------------------------
+// Sandstorm
+//------------------------------------------------------------------------------
+
+void Sandstorm_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->weatherGfxLoaded = 0;
+ gWeatherPtr->gammaTargetIndex = 0;
+ gWeatherPtr->gammaStepDelay = 20;
+ if (gWeatherPtr->sandstormSprites1Created == 0)
+ {
+ gWeatherPtr->unknown_704 = gWeatherPtr->unknown_708 = 0;
+ gWeatherPtr->unknown_712 = 8;
+ gWeatherPtr->unknown_714 = 0;
+ // Dead code. How does the compiler not optimize this out?
+ if (gWeatherPtr->unknown_712 > 0x5F)
+ gWeatherPtr->unknown_712 = 0x80 - gWeatherPtr->unknown_712;
+ Weather_SetBlendCoeffs(0, 16);
+ }
+}
+
+void Sandstorm_Main(void);
+
+void Sandstorm_InitAll(void)
+{
+ Sandstorm_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ Sandstorm_Main();
+}
+
+void sub_808002C(void);
+void sub_8080064(void);
+void CreateSandstormSprites_1(void);
+void CreateSandstormSprites_2(void);
+
+void Sandstorm_Main(void)
+{
+ sub_8080064();
+ sub_808002C();
+ if (gWeatherPtr->unknown_712 > 0x5F)
+ gWeatherPtr->unknown_712 = 32;
+ switch (gWeatherPtr->initStep)
+ {
+ case 0:
+ CreateSandstormSprites_1();
+ CreateSandstormSprites_2();
+ gWeatherPtr->initStep++;
+ break;
+ case 1:
+ Weather_SetTargetBlendCoeffs(16, 0, 0);
+ gWeatherPtr->initStep++;
+ break;
+ case 2:
+ if (!Weather_UpdateBlend())
+ break;
+ gWeatherPtr->weatherGfxLoaded = TRUE;
+ gWeatherPtr->initStep++;
+ break;
+ }
+}
+
+void sub_80800E4(void);
+
+bool8 Sandstorm_Finish(void)
+{
+ sub_8080064();
+ sub_808002C();
+ switch (gWeatherPtr->finishStep)
+ {
+ case 0:
+ Weather_SetTargetBlendCoeffs(0, 16, 0);
+ gWeatherPtr->finishStep++;
+ break;
+ case 1:
+ if (!Weather_UpdateBlend())
+ break;
+ gWeatherPtr->finishStep++;
+ break;
+ case 2:
+ sub_80800E4();
+ gWeatherPtr->finishStep++;
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_808002C(void)
+{
+ if (gWeatherPtr->unknown_714++ > 4)
+ {
+ gWeatherPtr->unknown_712++;
+ gWeatherPtr->unknown_714 = 0;
+ }
+}
+
+void sub_8080064(void)
+{
+ gWeatherPtr->unknown_704 -= gSineTable[gWeatherPtr->unknown_712] * 4;
+ gWeatherPtr->unknown_708 -= gSineTable[gWeatherPtr->unknown_712];
+ gWeatherPtr->unknown_70E = (gSpriteCoordOffsetX + (gWeatherPtr->unknown_704 >> 8)) & 0xFF;
+ gWeatherPtr->unknown_710 = gSpriteCoordOffsetY + (gWeatherPtr->unknown_708 >> 8);
+}
+
+void sub_80800E4(void)
+{
+ u16 i;
+
+ if (gWeatherPtr->sandstormSprites1Created)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ if (gWeatherPtr->sprites.s2.sandstormSprites1[i] != NULL)
+ DestroySprite(gWeatherPtr->sprites.s2.sandstormSprites1[i]);
+ }
+ gWeatherPtr->sandstormSprites1Created = FALSE;
+ FreeSpriteTilesByTag(0x1204);
+ }
+
+ if (gWeatherPtr->sandstormSprites2Created)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (gWeatherPtr->sprites.s2.sandstormSprites2[i] != NULL)
+ DestroySprite(gWeatherPtr->sprites.s2.sandstormSprites2[i]);
+ }
+ gWeatherPtr->sandstormSprites2Created = FALSE;
+ }
+}
+
+const struct OamData gOamData_839AC1C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 1,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const union AnimCmd gSpriteAnim_839AC24[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_839AC2C[] =
+{
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_839AC34[] =
+{
+ gSpriteAnim_839AC24,
+ gSpriteAnim_839AC2C,
+};
+
+void SandstormSpriteCallback1(struct Sprite *);
+const struct SpriteTemplate sSandstormSpriteTemplate =
+{
+ .tileTag = 4612,
+ .paletteTag = 4609,
+ .oam = &gOamData_839AC1C,
+ .anims = gSpriteAnimTable_839AC34,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SandstormSpriteCallback1,
+};
+
+static const struct SpriteSheet sSandstormSpriteSheet = {gWeatherSandstormTiles, sizeof(gWeatherSandstormTiles), 0x1204};
+
+void CreateSandstormSprites_1(void)
+{
+ u16 i;
+
+ if (!gWeatherPtr->sandstormSprites1Created)
+ {
+ LoadSpriteSheet(&sSandstormSpriteSheet);
+ LoadCustomWeatherSpritePalette(gUnknown_0854C2B0);
+ for (i = 0; i < 20; i++)
+ {
+ u8 spriteId = CreateSpriteAtEnd(&sSandstormSpriteTemplate, 0, (i / 5) * 64, 1);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ gWeatherPtr->sprites.s2.sandstormSprites1[i] = &gSprites[spriteId];
+ gWeatherPtr->sprites.s2.sandstormSprites1[i]->data[0] = i % 5;
+ gWeatherPtr->sprites.s2.sandstormSprites1[i]->data[1] = i / 5;
+ }
+ else
+ {
+ gWeatherPtr->sprites.s2.sandstormSprites1[i] = NULL;
+ }
+ }
+ gWeatherPtr->sandstormSprites1Created = TRUE;
+ }
+}
+
+const u16 gUnknown_0839AC5C[] = {0, 120, 80, 160, 40, 0};
+
+void SandstormSpriteCallback2(struct Sprite *);
+
+void CreateSandstormSprites_2(void)
+{
+ u16 i;
+
+ if (!gWeatherPtr->sandstormSprites2Created)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ u8 spriteId = CreateSpriteAtEnd(&sSandstormSpriteTemplate, i * 48 + 24, 208, 1);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ gWeatherPtr->sprites.s2.sandstormSprites2[i] = &gSprites[spriteId];
+ gWeatherPtr->sprites.s2.sandstormSprites2[i]->oam.size = 2;
+ gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[1] = i * 51;
+ gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[0] = 8;
+ gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[2] = 0;
+ gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[4] = 0x6730;
+ gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[3] = gUnknown_0839AC5C[i];
+ StartSpriteAnim(gWeatherPtr->sprites.s2.sandstormSprites2[i], 1);
+ CalcCenterToCornerVec(gWeatherPtr->sprites.s2.sandstormSprites2[i], 0, 2, 0);
+ gWeatherPtr->sprites.s2.sandstormSprites2[i]->callback = SandstormSpriteCallback2;
+ }
+ else
+ {
+ gWeatherPtr->sprites.s2.sandstormSprites2[i] = NULL;
+ }
+ gWeatherPtr->sandstormSprites2Created = TRUE;
+ }
+ }
+}
+
+void SandstormSpriteCallback1(struct Sprite *sprite)
+{
+ sprite->pos2.y = gWeatherPtr->unknown_710;
+ sprite->pos1.x = gWeatherPtr->unknown_70E + 32 + sprite->data[0] * 64;
+ if (sprite->pos1.x > 271)
+ {
+ sprite->pos1.x = gWeatherPtr->unknown_70E + 0x1E0 - (4 - sprite->data[0]) * 64;
+ sprite->pos1.x &= 0x1FF;
+ }
+}
+
+void SandstormSpriteCallback3(struct Sprite *);
+
+void SandstormSpriteCallback2(struct Sprite *sprite)
+{
+ if (--sprite->data[3] == -1)
+ sprite->callback = SandstormSpriteCallback3;
+}
+
+void SandstormSpriteCallback3(struct Sprite *sprite)
+{
+ u32 x;
+ u32 y;
+
+ if (--sprite->pos1.y < -48)
+ {
+ sprite->pos1.y = 208;
+ sprite->data[0] = 4;
+ }
+ x = sprite->data[0] * gSineTable[sprite->data[1]];
+ y = sprite->data[0] * gSineTable[sprite->data[1] + 64];
+ sprite->pos2.x = x >> 8;
+ sprite->pos2.y = y >> 8;
+ sprite->data[1] = (sprite->data[1] + 10) & 0xFF;
+ if (++sprite->data[2] > 8)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+}
+
+//------------------------------------------------------------------------------
+// Shade
+//------------------------------------------------------------------------------
+
+void Shade_InitVars(void)
+{
+ gWeatherPtr->initStep = 0;
+ gWeatherPtr->gammaTargetIndex = 3;
+ gWeatherPtr->gammaStepDelay = 20;
+}
+
+void Shade_InitAll(void)
+{
+ Shade_InitVars();
+}
+
+void Shade_Main(void)
+{
+}
+
+bool8 Shade_Finish(void)
+{
+ return FALSE;
+}
+
+//------------------------------------------------------------------------------
+// Weather 14
+//------------------------------------------------------------------------------
+
+const u8 gUnknown_0839AC68[] = {40, 90, 60, 90, 2, 60, 40, 30};
+
+const struct SpriteSheet gWeatherBubbleSpriteSheet = {gWeatherBubbleTiles, sizeof(gWeatherBubbleTiles), 0x1205};
+
+void Bubbles_InitVars(void)
+{
+ Fog1_InitVars();
+ if (gWeatherPtr->unknown_72E == 0)
+ {
+ LoadSpriteSheet(&gWeatherBubbleSpriteSheet);
+ gWeatherPtr->unknown_728 = 0;
+ gWeatherPtr->unknown_726 = gUnknown_0839AC68[0];
+ gWeatherPtr->unknown_72A = 0;
+ gWeatherPtr->unknown_72C = 0;
+ }
+}
+
+void Bubbles_Main(void);
+
+void Bubbles_InitAll(void)
+{
+ Bubbles_InitVars();
+ while (gWeatherPtr->weatherGfxLoaded == FALSE)
+ Bubbles_Main();
+}
+
+void sub_8080588(u16);
+
+void Bubbles_Main(void)
+{
+ Fog1_Main();
+ if (++gWeatherPtr->unknown_726 > gUnknown_0839AC68[gWeatherPtr->unknown_728])
+ {
+ gWeatherPtr->unknown_726 = 0;
+ if (++gWeatherPtr->unknown_728 > 7)
+ gWeatherPtr->unknown_728 = 0;
+ sub_8080588(gWeatherPtr->unknown_72A);
+ if (++gWeatherPtr->unknown_72A > 12)
+ gWeatherPtr->unknown_72A = 0;
+ }
+}
+
+void sub_8080610(void);
+
+bool8 Bubbles_Finish(void)
+{
+ if (!Fog1_Finish())
+ {
+ sub_8080610();
+ return FALSE;
+ }
+ return TRUE;
+}
+
+const s16 gUnknown_0839AC78[][2] =
+{
+ {120, 160},
+ {376, 160},
+ { 40, 140},
+ {296, 140},
+ {180, 130},
+ {436, 130},
+ { 60, 160},
+ {436, 160},
+ {220, 180},
+ {476, 180},
+ { 10, 90},
+ {266, 90},
+ {256, 160},
+};
+
+const union AnimCmd gSpriteAnim_839ACAC[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_839ACB8[] =
+{
+ gSpriteAnim_839ACAC,
+};
+
+extern const struct OamData gUnknown_08524904;
+
+void unc_0807DAB4(struct Sprite *);
+const struct SpriteTemplate gSpriteTemplate_839ACBC =
+{
+ .tileTag = 4613,
+ .paletteTag = 4608,
+ .oam = &gUnknown_08524904,
+ .anims = gSpriteAnimTable_839ACB8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = unc_0807DAB4,
+};
+
+void sub_8080588(u16 a)
+{
+ s16 x = gUnknown_0839AC78[a][0];
+ s16 y = gUnknown_0839AC78[a][1] - gSpriteCoordOffsetY;
+ u8 spriteId = CreateSpriteAtEnd(
+ &gSpriteTemplate_839ACBC,
+ x,
+ y,
+ 0);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ gSprites[spriteId].data[0] = 0;
+ gSprites[spriteId].data[1] = 0;
+ gSprites[spriteId].data[2] = 0;
+ gWeatherPtr->unknown_72C++;
+ }
+}
+
+void sub_8080610(void)
+{
+ u16 i;
+
+ if (gWeatherPtr->unknown_72C != 0)
+ {
+ for (i = 0; i < 64; i++)
+ {
+ if (gSprites[i].template == &gSpriteTemplate_839ACBC)
+ DestroySprite(&gSprites[i]);
+ }
+ FreeSpriteTilesByTag(0x1205);
+ gWeatherPtr->unknown_72C = 0;
+ }
+}
+
+void unc_0807DAB4(struct Sprite *sprite)
+{
+ ++sprite->data[0];
+ if (++sprite->data[0] > 8) // double increment
+ {
+ sprite->data[0] = 0;
+ if (sprite->data[1] == 0)
+ {
+ if (++sprite->pos2.x > 4)
+ sprite->data[1] = 1;
+ }
+ else
+ {
+ if (--sprite->pos2.x <= 0)
+ sprite->data[1] = 0;
+ }
+ }
+ sprite->pos1.y -= 3;
+ if (++sprite->data[2] > 0x77)
+ DestroySprite(sprite);
+}
+
+//------------------------------------------------------------------------------
+
+static void sub_80AEC94(u32 a0, u32 a1)
+{
+ gUnknown_02038BC4 = a0;
+ gUnknown_02038BC6 = a1;
+}
+
+static void sub_80AECA8(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ if (data[15]-- <= 0)
+ {
+ ChangeWeather(data[1]);
+ gUnknown_02038BC4 = data[1];
+ data[15] = 600;
+ data[0]++;
+ }
+ break;
+ case 1:
+ if (data[15]-- <= 0)
+ {
+ ChangeWeather(data[2]);
+ gUnknown_02038BC4 = data[2];
+ data[15] = 600;
+ data[0] = 0;
+ }
+ break;
+ }
+}
+
+static void sub_80AED28(void)
+{
+ u8 taskId = CreateTask(sub_80AECA8, 0);
+ s16 *data = gTasks[taskId].data;
+
+ data[15] = 600;
+ if (gUnknown_02038BC4 == WEATHER_RAIN_HEAVY)
+ {
+ data[1] = WEATHER_DROUGHT;
+ data[2] = WEATHER_RAIN_HEAVY;
+ }
+ else if (gUnknown_02038BC4 == WEATHER_DROUGHT)
+ {
+ data[1] = WEATHER_RAIN_HEAVY;
+ data[2] = WEATHER_DROUGHT;
+ }
+ else
+ {
+ gUnknown_02038BC4 = WEATHER_RAIN_HEAVY;
+ data[1] = WEATHER_DROUGHT;
+ data[2] = WEATHER_RAIN_HEAVY;
+ }
+}
+
+static u8 TranslateWeatherNum(u8);
+static void UpdateRainCounter(u8, u8);
+
+void SetSav1Weather(u32 weather)
+{
+ u8 oldWeather = gSaveBlock1Ptr->weather;
+ gSaveBlock1Ptr->weather = TranslateWeatherNum(weather);
+ UpdateRainCounter(gSaveBlock1Ptr->weather, oldWeather);
+}
+
+u8 GetSav1Weather(void)
+{
+ return gSaveBlock1Ptr->weather;
+}
+
+void SetSav1WeatherFromCurrMapHeader(void)
+{
+ u8 oldWeather = gSaveBlock1Ptr->weather;
+ gSaveBlock1Ptr->weather = TranslateWeatherNum(gMapHeader.weather);
+ UpdateRainCounter(gSaveBlock1Ptr->weather, oldWeather);
+}
+
+void SetWeather(u32 weather)
+{
+ SetSav1Weather(weather);
+ ChangeWeather(GetSav1Weather());
+}
+
+void SetWeather_Unused(u32 weather)
+{
+ SetSav1Weather(weather);
+ sub_80AB104(GetSav1Weather());
+}
+
+void DoCurrentWeather(void)
+{
+ u8 weather = GetSav1Weather();
+
+ if (weather == WEATHER_15)
+ {
+ if (!FuncIsActiveTask(sub_80AECA8))
+ sub_80AED28();
+ weather = gUnknown_02038BC4;
+ }
+ else
+ {
+ if (FuncIsActiveTask(sub_80AECA8))
+ DestroyTask(FindTaskIdByFunc(sub_80AECA8));
+ gUnknown_02038BC4 = WEATHER_RAIN_HEAVY;
+ }
+ ChangeWeather(weather);
+}
+
+void sub_80AEE84(void)
+{
+ u8 weather = GetSav1Weather();
+
+ if (weather == WEATHER_15)
+ {
+ if (!FuncIsActiveTask(sub_80AECA8))
+ sub_80AED28();
+ weather = gUnknown_02038BC4;
+ }
+ else
+ {
+ if (FuncIsActiveTask(sub_80AECA8))
+ DestroyTask(FindTaskIdByFunc(sub_80AECA8));
+ gUnknown_02038BC4 = WEATHER_RAIN_HEAVY;
+ }
+ sub_80AB104(weather);
+}
+
+static const u8 sWeatherCycleRoute119[] =
+{
+ WEATHER_SUNNY,
+ WEATHER_RAIN_LIGHT,
+ WEATHER_RAIN_MED,
+ WEATHER_RAIN_LIGHT,
+};
+static const u8 sWeatherCycleRoute123[] =
+{
+ WEATHER_SUNNY,
+ WEATHER_SUNNY,
+ WEATHER_RAIN_LIGHT,
+ WEATHER_SUNNY,
+};
+
+static u8 TranslateWeatherNum(u8 weather)
+{
+ switch (weather)
+ {
+ case WEATHER_NONE: return WEATHER_NONE;
+ case WEATHER_CLOUDS: return WEATHER_CLOUDS;
+ case WEATHER_SUNNY: return WEATHER_SUNNY;
+ case WEATHER_RAIN_LIGHT: return WEATHER_RAIN_LIGHT;
+ case WEATHER_SNOW: return WEATHER_SNOW;
+ case WEATHER_RAIN_MED: return WEATHER_RAIN_MED;
+ case WEATHER_FOG_1: return WEATHER_FOG_1;
+ case WEATHER_ASH: return WEATHER_ASH;
+ case WEATHER_SANDSTORM: return WEATHER_SANDSTORM;
+ case WEATHER_FOG_2: return WEATHER_FOG_2;
+ case WEATHER_FOG_3: return WEATHER_FOG_3;
+ case WEATHER_SHADE: return WEATHER_SHADE;
+ case WEATHER_DROUGHT: return WEATHER_DROUGHT;
+ case WEATHER_RAIN_HEAVY: return WEATHER_RAIN_HEAVY;
+ case WEATHER_BUBBLES: return WEATHER_BUBBLES;
+ case WEATHER_15: return WEATHER_15;
+ case WEATHER_ROUTE119_CYCLE: return sWeatherCycleRoute119[gSaveBlock1Ptr->weatherCycleStage];
+ case WEATHER_ROUTE123_CYCLE: return sWeatherCycleRoute123[gSaveBlock1Ptr->weatherCycleStage];
+ default: return WEATHER_NONE;
+ }
+}
+
+void UpdateWeatherPerDay(u16 increment)
+{
+ u16 weatherStage = gSaveBlock1Ptr->weatherCycleStage + increment;
+ weatherStage %= 4;
+ gSaveBlock1Ptr->weatherCycleStage = weatherStage;
+}
+
+static void UpdateRainCounter(u8 newWeather, u8 oldWeather)
+{
+ if (newWeather != oldWeather
+ && (newWeather == WEATHER_RAIN_LIGHT || newWeather == WEATHER_RAIN_MED))
+ IncrementGameStat(GAME_STAT_GOT_RAINED_ON);
+}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 7e1fc03eb..11161b8df 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "bg.h"
#include "fieldmap.h"
-#include "fldeff_80F9BCC.h"
+#include "fldeff_misc.h"
#include "fldeff_cut.h"
#include "fldeff_groundshake.h"
#include "frontier_util.h"
diff --git a/src/fight.c b/src/fight.c
index c9000fae4..b7ca2e87a 100644
--- a/src/fight.c
+++ b/src/fight.c
@@ -416,7 +416,7 @@ const struct SpriteTemplate gUnknown_08596104 =
void unc_080B08A0(struct Sprite *sprite)
{
- sub_80A6864(sprite, gBattleAnimArgs[0]);
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
sprite->pos1.y += gBattleAnimArgs[1];
sprite->data[0] = 15;
sprite->callback = WaitAnimForDuration;
@@ -459,9 +459,9 @@ void AnimBasicFistOrFoot(struct Sprite *sprite)
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
if (gBattleAnimArgs[3] == 0)
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
else
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
sprite->callback = WaitAnimForDuration;
@@ -534,7 +534,7 @@ static void sub_810D0B8(struct Sprite *sprite)
void sub_810D10C(struct Sprite *sprite)
{
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[0] = 30;
if (gBattleAnimArgs[2] == 0)
@@ -574,7 +574,7 @@ void sub_810D1B4(struct Sprite *sprite)
if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT)
gBattleAnimArgs[0] *= -1;
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
@@ -596,7 +596,7 @@ void sub_810D1B4(struct Sprite *sprite)
static void sub_810D240(struct Sprite *sprite)
{
- if (!TranslateAnimLinear(sprite))
+ if (!AnimTranslateLinear(sprite))
{
sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]);
sprite->data[7] += sprite->data[6];
@@ -615,7 +615,7 @@ static void sub_810D240(struct Sprite *sprite)
// arg 3: spin duration
void AnimSpinningKickOrPunch(struct Sprite *sprite)
{
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->data[0] = gBattleAnimArgs[3];
@@ -639,7 +639,7 @@ static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite)
// arg 2: initial wait duration
void AnimStompFoot(struct Sprite *sprite)
{
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
sprite->callback = AnimStompFootStep;
@@ -670,7 +670,7 @@ void sub_810D37C(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[3];
sprite->data[0]++;
@@ -800,12 +800,12 @@ void sub_810D608(struct Sprite *sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
- sprite->oam.priority = sub_80A8328(gBattleAnimAttacker);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
sprite->data[7] = gBattleAnimTarget;
}
else
{
- sprite->oam.priority = sub_80A8328(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
sprite->data[7] = gBattleAnimAttacker;
}
@@ -828,7 +828,7 @@ static void sub_810D6A8(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
InitAnimLinearTranslation(sprite);
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80A6F98;
}
}
@@ -839,7 +839,7 @@ void sub_810D714(struct Sprite *sprite)
sprite->pos1.y = 120;
sprite->data[0] = gBattleAnimArgs[3];
- sub_80A8048(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8));
+ StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8));
sprite->data[6] = gBattleAnimArgs[1];
sprite->oam.tileNum += gBattleAnimArgs[2] * 4;
@@ -853,9 +853,9 @@ static void sub_810D770(struct Sprite *sprite)
if (sprite->data[0] != 0)
{
- var0 = sub_80A8050(sprite->data[4], sprite->data[5]);
+ var0 = LoadPointerFromVars(sprite->data[4], sprite->data[5]);
var0 -= sprite->data[6];
- sub_80A8048(&sprite->data[4], &sprite->data[5], var0);
+ StorePointerInVars(&sprite->data[4], &sprite->data[5], var0);
var0 = (void *)(((intptr_t)var0) >> 8);
sprite->pos1.y = (intptr_t)var0;
@@ -903,12 +903,12 @@ void sub_810D874(struct Sprite *sprite)
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
battler = gBattleAnimTarget;
- sprite->oam.priority = sub_80A8328(gBattleAnimAttacker);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
else
{
battler = gBattleAnimAttacker;
- sprite->oam.priority = sub_80A8328(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
}
if (IsContest())
@@ -965,9 +965,9 @@ void sub_810D984(struct Sprite *sprite)
void sub_810DA10(struct Sprite *sprite)
{
if (gBattleAnimArgs[2] == 0)
- InitAnimSpritePos(sprite, 0);
+ InitSpritePosToAnimAttacker(sprite, 0);
else
- sub_80A6980(sprite, FALSE);
+ InitSpritePosToAnimTarget(sprite, FALSE);
if (IsContest())
{
@@ -978,7 +978,7 @@ void sub_810DA10(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
}
- sprite->callback = sub_80A67D8;
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
diff --git a/src/fire.c b/src/fire.c
index c054f154e..5f501a340 100644
--- a/src/fire.c
+++ b/src/fire.c
@@ -466,26 +466,26 @@ static void sub_8108EC8(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->callback = sub_80A634C;
+ sprite->callback = TranslateSpriteInGrowingCircleOverDuration;
sprite->callback(sprite);
}
static void sub_8108F08(struct Sprite *sprite)
{
- sub_80A6864(sprite, gBattleAnimArgs[0]);
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
sprite->pos1.y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[3];
- sprite->callback = sub_80A656C;
+ sprite->callback = AnimTranslateLinearSimple;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
static void sub_8108F4C(struct Sprite *sprite)
{
- sub_80A6838(sprite);
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker))
{
@@ -538,12 +538,12 @@ static void sub_8109028(struct Sprite *sprite)
}
if (sprite->data[0] == sprite->data[1])
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
static void sub_8109064(struct Sprite *sprite)
{
- sub_80A6838(sprite);
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker))
{
@@ -588,7 +588,7 @@ static void sub_81090D8(struct Sprite *sprite)
}
else
{
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
}
@@ -644,7 +644,7 @@ static void sub_8109200(struct Sprite *sprite)
//void AnimFireRing(struct Sprite *sprite)
void AnimFireRing(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
sprite->data[7] = gBattleAnimArgs[2];
sprite->data[0] = 0;
@@ -672,7 +672,7 @@ static void AnimFireRingStep1(struct Sprite *sprite)
static void AnimFireRingStep2(struct Sprite *sprite)
{
- if (TranslateAnimLinear(sprite))
+ if (AnimTranslateLinear(sprite))
{
sprite->data[0] = 0;
@@ -726,12 +726,12 @@ static void AnimFireCross(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->callback = sub_80A653C; //TranslateSpriteOverDuration
+ sprite->callback = TranslateSpriteOverDuration;
}
static void sub_81093A4(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[3];
@@ -779,7 +779,7 @@ void sub_8109460(u8 taskId) // initialize animation task for Move_ERUPTION?
task->data[5] = GetBattlerSide(gBattleAnimAttacker);
task->data[6] = 0;
- sub_80A7270(task->data[15], 0);
+ PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
task->func = sub_81094D0;
}
@@ -816,7 +816,7 @@ static void sub_81094D0(u8 taskId) // animate Move_ERUPTION?
if(!sub_80A80C8(task))
{
- sub_80A7E6C(task->data[15]);
+ SetBattlerSpriteYOffsetFromYScale(task->data[15]);
gSprites[task->data[15]].pos2.x = 0;
task->data[1] = 0;
@@ -879,7 +879,7 @@ static void sub_81094D0(u8 taskId) // animate Move_ERUPTION?
if (!sub_80A80C8(task))
{
gSprites[task->data[15]].pos1.y = task->data[4];
- sub_80A7344(task->data[15]);
+ ResetSpriteRotScale(task->data[15]);
task->data[2] = 0;
task->data[0]++;
@@ -1054,7 +1054,7 @@ static void sub_8109AFC(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- InitAnimSpritePos(sprite, 0);
+ InitSpritePosToAnimAttacker(sprite, 0);
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->data[7] = gBattleAnimArgs[2];
@@ -1067,7 +1067,7 @@ static void sub_8109AFC(struct Sprite *sprite)
sprite->data[4] = -4;
}
- sprite->oam.priority = sub_80A8328(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
sprite->data[0]++;
break;
case 1:
@@ -1119,7 +1119,7 @@ static void sub_8109C4C(struct Sprite *sprite)
s16 initialData5;
s16 newData5;
- if (!TranslateAnimLinear(sprite))
+ if (!AnimTranslateLinear(sprite))
{
sprite->pos2.x += Sin(sprite->data[5], 16);
initialData5 = sprite->data[5];
@@ -1157,9 +1157,9 @@ void sub_8109CB0(struct Sprite *sprite)
if (!IsContest())
{
if (sprite->data[1] < 64 || sprite->data[1] > 195)
- sprite->oam.priority = sub_80A8328(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
else
- sprite->oam.priority = sub_80A8328(gBattleAnimTarget) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1;
}
else
{
@@ -1318,4 +1318,4 @@ void sub_810A094(u8 taskId)
gSprites[spriteId].pos2.y = 0;
DestroyAnimVisualTask(taskId);
}
-} \ No newline at end of file
+}
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index 9771232f2..8862caa9f 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -170,7 +170,7 @@ static bool8 sub_8137304(void)
return FALSE;
}
-bool8 sub_8137360(u8 a1, u8 a2)
+bool8 GetMapPairFadeToType(u8 a1, u8 a2)
{
u8 i;
u8 v0 = a1;
@@ -187,7 +187,7 @@ bool8 sub_8137360(u8 a1, u8 a2)
return FALSE;
}
-bool8 fade_type_for_given_maplight_pair(u8 a1, u8 a2)
+bool8 GetMapPairFadeFromType(u8 a1, u8 a2)
{
u8 i;
u8 v0 = a1;
diff --git a/src/fldeff_groundshake.c b/src/fldeff_groundshake.c
index 866606a06..44ffd60f9 100644
--- a/src/fldeff_groundshake.c
+++ b/src/fldeff_groundshake.c
@@ -73,7 +73,13 @@ static const struct OamData gUnknown_08617E2C =
};
static const struct SpriteTemplate gUnknown_08617E34 = {
- 0x0FA0, 0xFFFF, &gUnknown_08617E2C, gSpriteAnimTable_8617E28, NULL, gDummySpriteAffineAnimTable, sub_81BEAD8
+ .tileTag = 0x0FA0,
+ .paletteTag = 0xFFFF,
+ .oam = &gUnknown_08617E2C,
+ .anims = gSpriteAnimTable_8617E28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81BEAD8
};
static const union AnimCmd gSpriteAnim_8617E4C[] =
@@ -105,7 +111,13 @@ static const struct OamData gSpriteAnim_8617E58 =
};
static const struct SpriteTemplate gUnknown_08617E60 = {
- 0x0FA0, 0xFFFF, &gSpriteAnim_8617E58, gSpriteAnim_8617E54, NULL, gDummySpriteAffineAnimTable, sub_81BEAD8
+ .tileTag = 0x0FA0,
+ .paletteTag = 0xFFFF,
+ .oam = &gSpriteAnim_8617E58,
+ .anims = gSpriteAnim_8617E54,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81BEAD8
};
// ewram
diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c
new file mode 100644
index 000000000..79f0a8ede
--- /dev/null
+++ b/src/fldeff_misc.c
@@ -0,0 +1,1525 @@
+#include "global.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "script.h"
+#include "sound.h"
+#include "task.h"
+#include "rom6.h"
+#include "strings.h"
+#include "party_menu.h"
+#include "fieldmap.h"
+#include "field_effect.h"
+#include "field_camera.h"
+#include "field_player_avatar.h"
+#include "secret_base.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "metatile_behavior.h"
+#include "string_util.h"
+#include "constants/field_effects.h"
+#include "constants/metatile_behaviors.h"
+#include "constants/songs.h"
+#include "constants/vars.h"
+#include "fldeff_misc.h"
+
+void sub_80F9C90(u8);
+void sub_80F9DFC(u8);
+
+void Task_SecretBasePCTurnOn(u8);
+
+void Task_PopSecretBaseBalloon(u8);
+void DoBalloonSoundEffect(s16);
+
+void Task_WateringBerryTreeAnim_1(u8);
+void Task_WateringBerryTreeAnim_2(u8);
+void Task_WateringBerryTreeAnim_3(u8);
+
+void sub_80F9C44(TaskFunc, u16, u16, u8);
+
+void FieldCallback_SecretBaseCave(void);
+static void CaveEntranceSpriteCallback1(struct Sprite *);
+static void CaveEntranceSpriteCallback2(struct Sprite *);
+static void CaveEntranceSpriteCallbackEnd(struct Sprite *);
+static void StartSecretBaseCaveFieldEffect(void);
+
+void FieldCallback_SecretBaseTree(void);
+static void TreeEntranceSpriteCallback1(struct Sprite *);
+static void TreeEntranceSpriteCallback2(struct Sprite *);
+static void TreeEntranceSpriteCallbackEnd(struct Sprite *);
+static void StartSecretBaseTreeFieldEffect(void);
+
+void FieldCallback_SecretBaseShrub(void);
+static void ShrubEntranceSpriteCallback1(struct Sprite *);
+static void ShrubEntranceSpriteCallback2(struct Sprite *);
+static void ShrubEntranceSpriteCallbackEnd(struct Sprite *);
+static void StartSecretBaseShrubFieldEffect(void);
+
+void SpriteCB_SandPillar_0(struct Sprite *);
+void SpriteCB_SandPillar_1(struct Sprite *);
+void SpriteCB_SandPillar_2(struct Sprite *);
+
+const u8 gSpriteImage_858D978[] = INCBIN_U8("graphics/unknown/858E588/0.4bpp");
+const u8 gSpriteImage_858D9F8[] = INCBIN_U8("graphics/unknown/858E588/1.4bpp");
+const u8 gSpriteImage_858DA78[] = INCBIN_U8("graphics/unknown/858E588/2.4bpp");
+const u8 gSpriteImage_858DAF8[] = INCBIN_U8("graphics/unknown/858E588/3.4bpp");
+const u8 gSpriteImage_858DB78[] = INCBIN_U8("graphics/unknown/858E588/4.4bpp");
+
+const u8 gUnusedEmptySpace_858DBF8[32] = {0};
+
+const u16 gFieldEffectObjectPalette7[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_07.gbapal");
+const u8 gSpriteImage_858DC38[] = INCBIN_U8("graphics/unknown/858E5D8/0.4bpp");
+const u8 gSpriteImage_858DCB8[] = INCBIN_U8("graphics/unknown/858E5D8/1.4bpp");
+const u8 gSpriteImage_858DD38[] = INCBIN_U8("graphics/unknown/858E5D8/2.4bpp");
+const u8 gSpriteImage_858DDB8[] = INCBIN_U8("graphics/unknown/858E5D8/3.4bpp");
+const u8 gSpriteImage_858DE38[] = INCBIN_U8("graphics/unknown/858E5D8/4.4bpp");
+const u8 gSpriteImage_858DEB8[] = INCBIN_U8("graphics/unknown/858E5B0/0.4bpp");
+const u8 gSpriteImage_858DF38[] = INCBIN_U8("graphics/unknown/858E5B0/1.4bpp");
+const u8 gSpriteImage_858DFB8[] = INCBIN_U8("graphics/unknown/858E5B0/2.4bpp");
+const u8 gSpriteImage_858E038[] = INCBIN_U8("graphics/unknown/858E5B0/3.4bpp");
+const u8 gSpriteImage_858E0B8[] = INCBIN_U8("graphics/unknown/858E5B0/4.4bpp");
+const u8 gSpriteImage_858E138[] = INCBIN_U8("graphics/unknown/858E5B0/5.4bpp");
+const u16 gFieldEffectObjectPalette8[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_08.gbapal");
+const u8 gSpriteImage_858E1D8[] = INCBIN_U8("graphics/unknown/858E674/0.4bpp");
+const u8 gSpriteImage_858E2D8[] = INCBIN_U8("graphics/unknown/858E674/1.4bpp");
+const u8 gSpriteImage_858E3D8[] = INCBIN_U8("graphics/unknown/858E674/2.4bpp");
+
+const struct OamData gOamData_858E4D8 =
+{
+ .y = 0,
+ .x = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .size = 1,
+ .priority = 2,
+};
+
+const union AnimCmd gSpriteAnim_858E4E0[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E4F8[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E510[] =
+{
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E528[] =
+{
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 8, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E540[] =
+{
+ ANIMCMD_FRAME(4, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_858E558[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_858E570[] =
+{
+ gSpriteAnim_858E4E0,
+};
+
+const union AnimCmd *const gSpriteAnimTable_858E574[] =
+{
+ gSpriteAnim_858E4F8,
+ gSpriteAnim_858E510,
+ gSpriteAnim_858E528,
+ gSpriteAnim_858E540,
+};
+
+const union AnimCmd *const gSpriteAnimTable_858E584[] =
+{
+ gSpriteAnim_858E558,
+};
+
+const struct SpriteFrameImage gUnknown_858E588[] =
+{
+ {gSpriteImage_858D978, 0x80},
+ {gSpriteImage_858D9F8, 0x80},
+ {gSpriteImage_858DA78, 0x80},
+ {gSpriteImage_858DAF8, 0x80},
+ {gSpriteImage_858DB78, 0x80},
+};
+
+const struct SpriteFrameImage gUnknown_858E5B0[] =
+{
+ {gSpriteImage_858DEB8, 0x80},
+ {gSpriteImage_858DF38, 0x80},
+ {gSpriteImage_858DFB8, 0x80},
+ {gSpriteImage_858E038, 0x80},
+ {gSpriteImage_858E0B8, 0x80},
+};
+
+const struct SpriteFrameImage gUnknown_858E5D8[] =
+{
+ {gSpriteImage_858DC38, 0x80},
+ {gSpriteImage_858DCB8, 0x80},
+ {gSpriteImage_858DD38, 0x80},
+ {gSpriteImage_858DDB8, 0x80},
+ {gSpriteImage_858DE38, 0x80},
+};
+
+const struct SpriteTemplate gUnknown_0858E600 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1003,
+ .oam = &gOamData_858E4D8,
+ .anims = gSpriteAnimTable_858E570,
+ .images = gUnknown_858E588,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = CaveEntranceSpriteCallback1,
+};
+
+const struct SpriteTemplate gUnknown_0858E618 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1008,
+ .oam = &gOamData_858E4D8,
+ .anims = gSpriteAnimTable_858E574,
+ .images = gUnknown_858E5B0,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TreeEntranceSpriteCallback1,
+};
+
+const struct SpriteTemplate gUnknown_0858E630 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1008,
+ .oam = &gOamData_858E4D8,
+ .anims = gSpriteAnimTable_858E584,
+ .images = gUnknown_858E5D8,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = ShrubEntranceSpriteCallback1,
+};
+
+const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, 0x1003};
+const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, 0x1008};
+
+const struct OamData gOamData_858E658 =
+{
+ .x = 0,
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const union AnimCmd gSpriteAnim_858E660[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(1, 6),
+ ANIMCMD_FRAME(2, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_858E670[] =
+{
+ gSpriteAnim_858E660,
+};
+
+const struct SpriteFrameImage gUnknown_0858E674[] =
+{
+ {gSpriteImage_858E1D8, 0x100},
+ {gSpriteImage_858E2D8, 0x100},
+ {gSpriteImage_858E3D8, 0x100},
+};
+
+const struct SpriteTemplate gUnknown_0858E68C =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x100E,
+ .oam = &gOamData_858E658,
+ .anims = gSpriteAnimTable_858E670,
+ .images = gUnknown_0858E674,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_SandPillar_0,
+};
+
+// This uses one of the secret base palettes, so there is no "field_effect_object_palette_09.pal" file.
+const struct SpritePalette gFieldEffectObjectPaletteInfo9 = {gTilesetPalettes_SecretBase[5], 0x100E};
+
+static const u8 gSpriteImage_858E6AC[] = INCBIN_U8("graphics/unknown/858E84C/0.4bpp");
+static const u8 gSpriteImage_858E72C[] = INCBIN_U8("graphics/unknown/858E84C/1.4bpp");
+static const u8 gSpriteImage_858E7AC[] = INCBIN_U8("graphics/unknown/858E84C/2.4bpp");
+static const u16 gUnknown_0858E82C[] = INCBIN_U16("graphics/unknown/unknown_58E82C.gbapal");
+
+static const struct SpriteFrameImage gUnknown_0858E84C[] =
+{
+ {gSpriteImage_858E6AC, sizeof(gSpriteImage_858E6AC)},
+ {gSpriteImage_858E72C, sizeof(gSpriteImage_858E72C)},
+ {gSpriteImage_858E7AC, sizeof(gSpriteImage_858E7AC)},
+};
+
+static const struct SpritePalette gUnknown_0858E864 = {gUnknown_0858E82C, 0x1000};
+
+static const union AnimCmd gSpriteAnim_858E86C[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_FRAME(2, 30),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gSpriteAnimTable_858E87C[] =
+{
+ gSpriteAnim_858E86C,
+};
+
+static const struct SpriteTemplate gUnknown_0858E880 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1000,
+ .oam = &gEventObjectBaseOam_32x8,
+ .anims = gSpriteAnimTable_858E87C,
+ .images = gUnknown_0858E84C,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+void sub_80F9BCC(u16 a0, u16 a1, u8 a2)
+{
+ sub_80F9C44(sub_80F9C90, a0, a1, a2);
+}
+
+void sub_80F9BF4(u16 a0, u16 a1, u8 a2)
+{
+ sub_80F9C44(sub_80F9DFC, a0, a1, a2);
+}
+
+bool8 sub_80F9C1C(void)
+{
+ return FuncIsActiveTask(sub_80F9C90);
+}
+
+bool8 sub_80F9C30(void)
+{
+ return FuncIsActiveTask(sub_80F9DFC);
+}
+
+void sub_80F9C44(void (*taskfunc) (u8), u16 a1, u16 a2, u8 a3)
+{
+ u8 taskId = CreateTask(taskfunc, a3);
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = a1 == 0 ? 16 : a1;
+ gTasks[taskId].data[2] = a1 == 0 ? 20 : a1;
+ gTasks[taskId].func(taskId);
+}
+
+#ifdef NONMATCHING
+void sub_80F9C90(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch(task->data[0])
+ {
+ case 0:
+ task->data[3] = 0x78;
+ task->data[4] = 0x78;
+ task->data[5] = 0x50;
+ task->data[6] = 0x51;
+
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[5], task->data[6]));
+ SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+
+ break;
+ case 1:
+ task->data[7] = GetGpuReg(REG_OFFSET_BLDCNT);
+ task->data[8] = GetGpuReg(REG_OFFSET_BLDY);
+
+ SetGpuReg(REG_OFFSET_BLDCNT, 0xBF);
+ SetGpuReg(REG_OFFSET_BLDY, 0x10);
+
+ break;
+ case 2:
+ task->data[3] -= task->data[1];
+ task->data[4] += task->data[1];
+
+ if (task->data[3] < 1 || task->data[4] > 0xEF)
+ {
+ task->data[3] = 0;
+ task->data[4] = 0xF0;
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
+ BlendPalettes(0xFFFFFFFF, 0, 0);
+ gPlttBufferFaded[0] = 0;
+ }
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+
+ if (task->data[3] != 0)
+ return;
+ break;
+ case 3:
+ task->data[5] -= task->data[2];
+ task->data[6] += task->data[2];
+
+ if (task->data[5] < 1 || task->data[2] > 0x9F)
+ {
+ task->data[5] = 0;
+ task->data[6] = 0xA0;
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+
+ if (task->data[5] != 0)
+ return;
+ break;
+ default:
+ SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
+ DestroyTask(taskId);
+ return;
+ }
+ task->data[0] += 1;
+}
+#else
+NAKED
+void sub_80F9C90(u8 taskId)
+{
+ asm_unified("\tpush {r4,r5,lr}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tlsls r0, r5, 2\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 3\n"
+ "\tldr r1, =gTasks\n"
+ "\tadds r4, r0, r1\n"
+ "\tmovs r1, 0x8\n"
+ "\tldrsh r0, [r4, r1]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _080F9D10\n"
+ "\tcmp r0, 0x1\n"
+ "\tbgt _080F9CB8\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080F9CC2\n"
+ "\tb _080F9DDE\n"
+ "\t.pool\n"
+ "_080F9CB8:\n"
+ "\tcmp r0, 0x2\n"
+ "\tbeq _080F9D32\n"
+ "\tcmp r0, 0x3\n"
+ "\tbeq _080F9D94\n"
+ "\tb _080F9DDE\n"
+ "_080F9CC2:\n"
+ "\tmovs r0, 0x78\n"
+ "\tstrh r0, [r4, 0xE]\n"
+ "\tstrh r0, [r4, 0x10]\n"
+ "\tmovs r0, 0x50\n"
+ "\tstrh r0, [r4, 0x12]\n"
+ "\tmovs r0, 0x51\n"
+ "\tstrh r0, [r4, 0x14]\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 6\n"
+ "\tmovs r0, 0\n"
+ "\tbl SetGpuRegBits\n"
+ "\tldrh r1, [r4, 0xE]\n"
+ "\tlsls r1, 8\n"
+ "\tldrh r0, [r4, 0x10]\n"
+ "\torrs r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tmovs r0, 0x40\n"
+ "\tbl SetGpuReg\n"
+ "\tldrh r1, [r4, 0x12]\n"
+ "\tlsls r1, 8\n"
+ "\tldrh r0, [r4, 0x14]\n"
+ "\torrs r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tmovs r0, 0x44\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r0, 0x48\n"
+ "\tmovs r1, 0x3F\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r0, 0x4A\n"
+ "\tmovs r1, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tb _080F9DEE\n"
+ "_080F9D10:\n"
+ "\tmovs r0, 0x50\n"
+ "\tbl GetGpuReg\n"
+ "\tstrh r0, [r4, 0x16]\n"
+ "\tmovs r0, 0x54\n"
+ "\tbl GetGpuReg\n"
+ "\tstrh r0, [r4, 0x18]\n"
+ "\tmovs r0, 0x50\n"
+ "\tmovs r1, 0xBF\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r0, 0x54\n"
+ "\tmovs r1, 0x10\n"
+ "\tbl SetGpuReg\n"
+ "\tb _080F9DEE\n"
+ "_080F9D32:\n"
+ "\tldrh r0, [r4, 0xE]\n"
+ "\tldrh r1, [r4, 0xA]\n"
+ "\tsubs r0, r1\n"
+ "\tmovs r5, 0\n"
+ "\tstrh r0, [r4, 0xE]\n"
+ "\tldrh r2, [r4, 0x10]\n"
+ "\tadds r1, r2\n"
+ "\tstrh r1, [r4, 0x10]\n"
+ "\tlsls r0, 16\n"
+ "\tcmp r0, 0\n"
+ "\tble _080F9D50\n"
+ "\tlsls r0, r1, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, 0xEF\n"
+ "\tble _080F9D76\n"
+ "_080F9D50:\n"
+ "\tstrh r5, [r4, 0xE]\n"
+ "\tmovs r0, 0xF0\n"
+ "\tstrh r0, [r4, 0x10]\n"
+ "\tmovs r0, 0x54\n"
+ "\tmovs r1, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tldrh r1, [r4, 0x16]\n"
+ "\tmovs r0, 0x50\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r0, 0x1\n"
+ "\tnegs r0, r0\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0\n"
+ "\tbl BlendPalettes\n"
+ "\tldr r0, =gPlttBufferFaded\n"
+ "\tstrh r5, [r0]\n"
+ "_080F9D76:\n"
+ "\tldrh r1, [r4, 0xE]\n"
+ "\tlsls r1, 8\n"
+ "\tldrh r0, [r4, 0x10]\n"
+ "\torrs r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tmovs r0, 0x40\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r1, 0xE\n"
+ "\tldrsh r0, [r4, r1]\n"
+ "\tb _080F9DD8\n"
+ "\t.pool\n"
+ "_080F9D94:\n"
+ "\tldrh r0, [r4, 0x12]\n"
+ "\tldrh r1, [r4, 0xC]\n"
+ "\tsubs r0, r1\n"
+ "\tstrh r0, [r4, 0x12]\n"
+ "\tldrh r2, [r4, 0x14]\n"
+ "\tadds r1, r2\n"
+ "\tstrh r1, [r4, 0x14]\n"
+ "\tlsls r0, 16\n"
+ "\tcmp r0, 0\n"
+ "\tble _080F9DB0\n"
+ "\tlsls r0, r1, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, 0x9F\n"
+ "\tble _080F9DC2\n"
+ "_080F9DB0:\n"
+ "\tmovs r0, 0\n"
+ "\tstrh r0, [r4, 0x12]\n"
+ "\tmovs r0, 0xA0\n"
+ "\tstrh r0, [r4, 0x14]\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 6\n"
+ "\tmovs r0, 0\n"
+ "\tbl ClearGpuRegBits\n"
+ "_080F9DC2:\n"
+ "\tldrh r1, [r4, 0x12]\n"
+ "\tlsls r1, 8\n"
+ "\tldrh r0, [r4, 0x14]\n"
+ "\torrs r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tmovs r0, 0x44\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r1, 0x12\n"
+ "\tldrsh r0, [r4, r1]\n"
+ "_080F9DD8:\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080F9DF4\n"
+ "\tb _080F9DEE\n"
+ "_080F9DDE:\n"
+ "\tldrh r1, [r4, 0x16]\n"
+ "\tmovs r0, 0x50\n"
+ "\tbl SetGpuReg\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl DestroyTask\n"
+ "\tb _080F9DF4\n"
+ "_080F9DEE:\n"
+ "\tldrh r0, [r4, 0x8]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r4, 0x8]\n"
+ "_080F9DF4:\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
+
+void sub_80F9DFC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ int temp = task->data[0];
+
+ switch (temp)
+ {
+ case 0:
+ gPlttBufferFaded[0] = temp;
+ break;
+ case 1:
+ task->data[3] = 0;
+ task->data[4] = 0xF0;
+ task->data[5] = 0;
+ task->data[6] = 0xA0;
+
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+ SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ break;
+ case 2:
+ task->data[5] += task->data[2];
+ task->data[6] -= task->data[2];
+
+ if (task->data[5] > 0x4F || task->data[6] < 0x52)
+ {
+ task->data[5] = 0x50;
+ task->data[6] = 0x51;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0xBF);
+ SetGpuReg(REG_OFFSET_BLDY, 0x10);
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+
+ if (task->data[5] != 0x50)
+ return;
+ break;
+ case 3:
+ task->data[3] += task->data[1];
+ task->data[4] -= task->data[1];
+
+ if (task->data[3] > 0x77 || task->data[4] < 0x79)
+ {
+ task->data[3] = 0x78;
+ task->data[4] = 0x78;
+ BlendPalettes(-1, 0x10, 0);
+ gPlttBufferFaded[0] = 0;
+ }
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+
+ if (task->data[3] != 0x78)
+ return;
+ break;
+ default:
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ DestroyTask(taskId);
+ return;
+ }
+ task->data[0] += 1;
+}
+
+void SetCurrentSecretBase(void)
+{
+ sub_80E9608(&gPlayerFacingPosition, gMapHeader.events);
+ sub_80E8B6C();
+}
+
+void AdjustSecretPowerSpritePixelOffsets(void)
+{
+ if (gPlayerAvatar.flags & 0x6)
+ {
+ switch (gFieldEffectArguments[1])
+ {
+ case DIR_SOUTH:
+ gFieldEffectArguments[5] = 16;
+ gFieldEffectArguments[6] = 40;
+ break;
+ case DIR_NORTH:
+ gFieldEffectArguments[5] = 16;
+ gFieldEffectArguments[6] = 8;
+ break;
+ case DIR_WEST:
+ gFieldEffectArguments[5] = -8;
+ gFieldEffectArguments[6] = 24;
+ break;
+ case DIR_EAST:
+ gFieldEffectArguments[5] = 24;
+ gFieldEffectArguments[6] = 24;
+ break;
+ }
+ }
+ else
+ {
+ switch (gFieldEffectArguments[1])
+ {
+ case DIR_SOUTH:
+ gFieldEffectArguments[5] = 8;
+ gFieldEffectArguments[6] = 40;
+ break;
+ case DIR_NORTH:
+ gFieldEffectArguments[5] = 8;
+ gFieldEffectArguments[6] = 8;
+ break;
+ case DIR_WEST:
+ gFieldEffectArguments[5] = -8;
+ gFieldEffectArguments[6] = 24;
+ break;
+ case DIR_EAST:
+ gFieldEffectArguments[5] = 24;
+ gFieldEffectArguments[6] = 24;
+ break;
+ }
+ }
+}
+
+bool8 SetUpFieldMove_SecretPower(void)
+{
+ u8 mb;
+
+ sub_80E8BC8();
+
+ if (gSpecialVar_Result == 1 || GetPlayerFacingDirection() != DIR_NORTH)
+ return FALSE;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ mb = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y);
+
+ if (MetatileBehavior_IsSecretBaseCave(mb) == TRUE)
+ {
+ SetCurrentSecretBase();
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SecretBaseCave;
+ return TRUE;
+ }
+
+ if (MetatileBehavior_IsSecretBaseTree(mb) == TRUE)
+ {
+ SetCurrentSecretBase();
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SecretBaseTree;
+ return TRUE;
+ }
+
+ if (MetatileBehavior_IsSecretBaseShrub(mb) == TRUE)
+ {
+ SetCurrentSecretBase();
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SecretBaseShrub;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void FieldCallback_SecretBaseCave(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ ScriptContext1_SetupScript(EventScript_275A86);
+}
+
+bool8 FldEff_UseSecretPowerCave(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)StartSecretBaseCaveFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartSecretBaseCaveFieldEffect;
+
+ return FALSE;
+}
+
+static void StartSecretBaseCaveFieldEffect(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_CAVE);
+ FieldEffectStart(FLDEFF_SECRET_POWER_CAVE);
+}
+
+bool8 FldEff_SecretPowerCave(void)
+{
+ AdjustSecretPowerSpritePixelOffsets();
+ CreateSprite(&gUnknown_0858E600,
+ gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
+ gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
+ 148);
+ return FALSE;
+}
+
+static void CaveEntranceSpriteCallback1(struct Sprite *sprite)
+{
+ PlaySE(SE_W088);
+
+ sprite->data[0] = 0;
+ sprite->callback = CaveEntranceSpriteCallback2;
+}
+
+static void CaveEntranceSpriteCallback2(struct Sprite *sprite)
+{
+ if (sprite->data[0] < 40)
+ {
+ sprite->data[0]++;
+
+ if (sprite->data[0] == 20)
+ sub_80E8D4C();
+ }
+ else
+ {
+ sprite->data[0] = 0;
+ sprite->callback = CaveEntranceSpriteCallbackEnd;
+ }
+}
+
+static void CaveEntranceSpriteCallbackEnd(struct Sprite *sprite)
+{
+ FieldEffectStop(sprite, FLDEFF_SECRET_POWER_CAVE);
+ EnableBothScriptContexts();
+}
+
+void FieldCallback_SecretBaseTree(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ ScriptContext1_SetupScript(EventScript_275ADF);
+}
+
+bool8 FldEff_UseSecretPowerTree(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)StartSecretBaseTreeFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartSecretBaseTreeFieldEffect;
+
+ return FALSE;
+}
+
+static void StartSecretBaseTreeFieldEffect(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_TREE);
+ FieldEffectStart(FLDEFF_SECRET_POWER_TREE);
+}
+
+bool8 FldEff_SecretPowerTree(void)
+{
+ s16 mb = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y) & 0xFFF;
+
+ if (mb == MB_SECRET_BASE_SPOT_TREE_LEFT)
+ gFieldEffectArguments[7] = 0;
+
+ if (mb == MB_SECRET_BASE_SPOT_TREE_RIGHT)
+ gFieldEffectArguments[7] = 2;
+
+ AdjustSecretPowerSpritePixelOffsets();
+
+ CreateSprite(&gUnknown_0858E618,
+ gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
+ gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
+ 148);
+
+ if (gFieldEffectArguments[7] == 1 || gFieldEffectArguments[7] == 3)
+ sub_80E8D4C();
+
+ return FALSE;
+}
+
+static void TreeEntranceSpriteCallback1(struct Sprite *sprite)
+{
+ PlaySE(SE_W010);
+
+ sprite->animNum = gFieldEffectArguments[7];
+ sprite->data[0] = 0;
+ sprite->callback = TreeEntranceSpriteCallback2;
+}
+
+static void TreeEntranceSpriteCallback2(struct Sprite *sprite)
+{
+ sprite->data[0]++;
+
+ if (sprite->data[0] >= 40)
+ {
+ if (gFieldEffectArguments[7] == 0 || gFieldEffectArguments[7] == 2)
+ sub_80E8D4C();
+
+ sprite->data[0] = 0;
+ sprite->callback = TreeEntranceSpriteCallbackEnd;
+ }
+}
+
+static void TreeEntranceSpriteCallbackEnd(struct Sprite *sprite)
+{
+ FieldEffectStop(sprite, FLDEFF_SECRET_POWER_TREE);
+ EnableBothScriptContexts();
+}
+
+void FieldCallback_SecretBaseShrub(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ ScriptContext1_SetupScript(EventScript_275B38);
+}
+
+bool8 FldEff_UseSecretPowerShrub(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)StartSecretBaseShrubFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartSecretBaseShrubFieldEffect;
+
+ return FALSE;
+}
+
+static void StartSecretBaseShrubFieldEffect(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_SHRUB);
+ FieldEffectStart(FLDEFF_SECRET_POWER_SHRUB);
+}
+
+bool8 FldEff_SecretPowerShrub(void)
+{
+ AdjustSecretPowerSpritePixelOffsets();
+
+ CreateSprite(&gUnknown_0858E630,
+ gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
+ gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
+ 148);
+
+ return FALSE;
+}
+
+static void ShrubEntranceSpriteCallback1(struct Sprite *sprite)
+{
+ PlaySE(SE_W077);
+
+ sprite->data[0] = 0;
+ sprite->callback = ShrubEntranceSpriteCallback2;
+}
+
+static void ShrubEntranceSpriteCallback2(struct Sprite *sprite)
+{
+ if (sprite->data[0] < 40)
+ {
+ sprite->data[0]++;
+
+ if (sprite->data[0] == 20)
+ sub_80E8D4C();
+ }
+ else
+ {
+ sprite->data[0] = 0;
+ sprite->callback = ShrubEntranceSpriteCallbackEnd;
+ }
+}
+
+static void ShrubEntranceSpriteCallbackEnd(struct Sprite *sprite)
+{
+ FieldEffectStop(sprite, FLDEFF_SECRET_POWER_SHRUB);
+ EnableBothScriptContexts();
+}
+
+u32 FldEff_SecretBasePCTurnOn(void)
+{
+ s16 x, y;
+ u8 taskId;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+
+ taskId = CreateTask(Task_SecretBasePCTurnOn, 0);
+ gTasks[taskId].data[0] = x;
+ gTasks[taskId].data[1] = y;
+ gTasks[taskId].data[2] = 0;
+
+ return 0;
+}
+
+void Task_SecretBasePCTurnOn(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[2])
+ {
+ case 4:
+ case 12:
+ MapGridSetMetatileIdAt(data[0], data[1], 548);
+ CurrentMapDrawMetatileAt(data[0], data[1]);
+ break;
+ case 8:
+ case 16:
+ MapGridSetMetatileIdAt(data[0], data[1], 544);
+ CurrentMapDrawMetatileAt(data[0], data[1]);
+ break;
+ case 20:
+ MapGridSetMetatileIdAt(data[0], data[1], 548);
+ CurrentMapDrawMetatileAt(data[0], data[1]);
+ FieldEffectActiveListRemove(FLDEFF_PCTURN_ON);
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ return;
+ }
+
+ data[2]++;
+}
+
+void DoSecretBasePCTurnOffEffect(void)
+{
+ s16 x, y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ PlaySE(SE_PC_OFF);
+
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ MapGridSetMetatileIdAt(x, y, 3616);
+ else
+ MapGridSetMetatileIdAt(x, y, 3617);
+
+ CurrentMapDrawMetatileAt(x, y);
+}
+
+void PopSecretBaseBalloon(s16 metatileId, s16 x, s16 y)
+{
+ u8 taskId = CreateTask(Task_PopSecretBaseBalloon, 0);
+
+ gTasks[taskId].data[0] = metatileId;
+ gTasks[taskId].data[1] = x;
+ gTasks[taskId].data[2] = y;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 1;
+}
+
+void Task_PopSecretBaseBalloon(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[3] == 6)
+ data[3] = 0;
+ else
+ data[3]++;
+
+ if (data[3] == 0)
+ {
+ if (data[4] == 2)
+ DoBalloonSoundEffect(data[0]);
+
+ MapGridSetMetatileIdAt(data[1], data[2], data[0] + data[4]);
+ CurrentMapDrawMetatileAt(data[1], data[2]);
+
+ if (data[4] == 3)
+ DestroyTask(taskId);
+ else
+ data[4]++;
+ }
+}
+
+void DoBalloonSoundEffect(s16 metatileId)
+{
+ switch (metatileId)
+ {
+ case 824:
+ PlaySE(SE_FUUSEN1);
+ break;
+ case 828:
+ PlaySE(SE_FUUSEN2);
+ break;
+ case 832:
+ PlaySE(SE_FUUSEN3);
+ break;
+ case 552:
+ PlaySE(SE_TOY_DANGO);
+ break;
+ }
+}
+
+bool8 FldEff_NopA6FC(void)
+{
+ return FALSE;
+}
+
+bool8 FldEff_NopA700(void)
+{
+ return FALSE;
+}
+
+void DoSecretBaseBreakableDoorEffect(s16 x, s16 y)
+{
+ PlaySE(SE_TOY_KABE);
+ MapGridSetMetatileIdAt(x, y, 630);
+ MapGridSetMetatileIdAt(x, y - 1, 622);
+ CurrentMapDrawMetatileAt(x, y);
+ CurrentMapDrawMetatileAt(x, y - 1);
+}
+
+void Task_ShatterSecretBaseBreakableDoor(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 7)
+ {
+ DoSecretBaseBreakableDoorEffect(gTasks[taskId].data[1], gTasks[taskId].data[2]);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[0]++;
+ }
+}
+
+void ShatterSecretBaseBreakableDoor(s16 x, s16 y)
+{
+ u8 dir = GetPlayerFacingDirection();
+
+ if (dir == DIR_SOUTH)
+ {
+ DoSecretBaseBreakableDoorEffect(x, y);
+ }
+ else if (dir == DIR_NORTH)
+ {
+ u8 taskId = CreateTask(Task_ShatterSecretBaseBreakableDoor, 5);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = x;
+ gTasks[taskId].data[2] = y;
+ }
+}
+
+#define tMetatileID data[0]
+void Task_SecretBaseMusicNoteMatSound(u8 taskId)
+{
+ if (gTasks[taskId].data[1] == 7)
+ {
+ switch (gTasks[taskId].tMetatileID)
+ {
+ case 632:
+ PlaySE(SE_TOY_C);
+ break;
+ case 633:
+ PlaySE(SE_TOY_D);
+ break;
+ case 634:
+ PlaySE(SE_TOY_E);
+ break;
+ case 635:
+ PlaySE(SE_TOY_F);
+ break;
+ case 636:
+ PlaySE(SE_TOY_G);
+ break;
+ case 637:
+ PlaySE(SE_TOY_A);
+ break;
+ case 638:
+ PlaySE(SE_TOY_B);
+ break;
+ case 691:
+ PlaySE(SE_TOY_C1);
+ break;
+ }
+
+ DestroyTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[1]++;
+ }
+}
+
+void PlaySecretBaseMusicNoteMatSound(s16 metatileId)
+{
+ u8 taskId = CreateTask(Task_SecretBaseMusicNoteMatSound, 5);
+
+ gTasks[taskId].tMetatileID = metatileId;
+ gTasks[taskId].data[1] = 0;
+}
+#undef tMetatileID
+
+void SpriteCB_GlitterMatSparkle(struct Sprite *sprite)
+{
+ sprite->data[0]++;
+
+ if (sprite->data[0] == 8)
+ PlaySE(SE_W215);
+
+ if (sprite->data[0] >= 32)
+ DestroySprite(sprite);
+}
+
+void DoSecretBaseGlitterMatSparkle(void)
+{
+ s16 x = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x;
+ s16 y = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y;
+ u8 spriteId;
+
+ sub_80930E0(&x, &y, 8, 4);
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].oam.paletteNum = 5;
+ gSprites[spriteId].callback = SpriteCB_GlitterMatSparkle;
+ gSprites[spriteId].data[0] = 0;
+ }
+}
+
+bool8 FldEff_SandPillar(void)
+{
+ s16 x, y;
+
+ ScriptContext2_Enable();
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+
+ gFieldEffectArguments[5] = x;
+ gFieldEffectArguments[6] = y;
+
+ switch (GetPlayerFacingDirection())
+ {
+ case DIR_SOUTH:
+ CreateSprite(&gUnknown_0858E68C,
+ gSprites[gPlayerAvatar.spriteId].oam.x + 8,
+ gSprites[gPlayerAvatar.spriteId].oam.y + 32,
+ 0);
+
+ break;
+
+ case DIR_NORTH:
+ CreateSprite(&gUnknown_0858E68C,
+ gSprites[gPlayerAvatar.spriteId].oam.x + 8,
+ gSprites[gPlayerAvatar.spriteId].oam.y,
+ 148);
+
+ break;
+
+ case DIR_WEST:
+ CreateSprite(&gUnknown_0858E68C,
+ gSprites[gPlayerAvatar.spriteId].oam.x - 8,
+ gSprites[gPlayerAvatar.spriteId].oam.y + 16,
+ 148);
+
+ break;
+
+ case DIR_EAST:
+ CreateSprite(&gUnknown_0858E68C,
+ gSprites[gPlayerAvatar.spriteId].oam.x + 24,
+ gSprites[gPlayerAvatar.spriteId].oam.y + 16,
+ 148);
+
+ break;
+ }
+
+ return FALSE;
+}
+
+void SpriteCB_SandPillar_0(struct Sprite *sprite)
+{
+ PlaySE(SE_W088);
+
+ if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == 646)
+ MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 3586);
+ else
+ MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 644);
+
+ MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 522);
+ CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1);
+ CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]);
+
+ sprite->data[0] = 0;
+ sprite->callback = SpriteCB_SandPillar_1;
+}
+
+void SpriteCB_SandPillar_1(struct Sprite *sprite)
+{
+ if (sprite->data[0] < 18)
+ {
+ sprite->data[0]++;
+ }
+ else
+ {
+ MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 3724);
+ CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]);
+ sprite->data[0] = 0;
+ sprite->callback = SpriteCB_SandPillar_2;
+ }
+}
+
+void SpriteCB_SandPillar_2(struct Sprite *sprite)
+{
+ FieldEffectStop(sprite, FLDEFF_SAND_PILLAR);
+ EnableBothScriptContexts();
+}
+
+void GetShieldToyTVDecorationInfo(void)
+{
+ s16 x, y;
+ s32 metatileId;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+
+ metatileId = MapGridGetMetatileIdAt(x, y);
+
+ switch (metatileId)
+ {
+ case 822:
+ ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringCopy(gStringVar2, gText_Gold);
+
+ gSpecialVar_Result = 0;
+
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x10);
+ break;
+ case 734:
+ ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2);
+ StringCopy(gStringVar2, gText_Silver);
+
+ gSpecialVar_Result = 0;
+
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x20);
+ break;
+ case 756:
+ gSpecialVar_Result = 1;
+
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ break;
+ case 757:
+ gSpecialVar_Result = 2;
+
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ break;
+ case 758:
+ gSpecialVar_Result = 3;
+
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
+ return;
+
+ VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ break;
+ }
+}
+
+#ifdef NONMATCHING
+bool8 sub_80FADE4(u16 arg0, u8 arg1)
+{
+ if (CurrentMapIsSecretBase())
+ {
+ if (arg1 == 0)
+ {
+ if ((u16)(arg0 + 0xfffffd7b) <= 1 || (arg0 == 0x237))
+ return TRUE;
+ }
+ else
+ {
+ if (arg0 == 0x28d || arg0 == 0x23f)
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+#else
+NAKED
+bool8 sub_80FADE4(u16 arg0, u8 arg1)
+{
+ asm_unified("\tpush {r4-r6,lr}\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r4, r0, 16\n"
+ "\tadds r6, r4, 0\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r5, r1, 24\n"
+ "\tbl CurrentMapIsSecretBase\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080FAE28\n"
+ "\tcmp r5, 0\n"
+ "\tbne _080FAE1C\n"
+ "\tldr r1, =0xfffffd7b\n"
+ "\tadds r0, r4, r1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x1\n"
+ "\tbls _080FAE10\n"
+ "\tldr r0, =0x00000237\n"
+ "\tcmp r4, r0\n"
+ "\tbne _080FAE28\n"
+ "_080FAE10:\n"
+ "\tmovs r0, 0x1\n"
+ "\tb _080FAE2A\n"
+ "\t.pool\n"
+ "_080FAE1C:\n"
+ "\tldr r0, =0x0000028d\n"
+ "\tcmp r4, r0\n"
+ "\tbeq _080FAE10\n"
+ "\tldr r0, =0x0000023f\n"
+ "\tcmp r6, r0\n"
+ "\tbeq _080FAE10\n"
+ "_080FAE28:\n"
+ "\tmovs r0, 0\n"
+ "_080FAE2A:\n"
+ "\tpop {r4-r6}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.pool");
+}
+#endif
+
+void Task_FieldPoisonEffect(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[1] += 2;
+ if (data[1] > 8)
+ data[0]++;
+ break;
+ case 1:
+ data[1] -= 2;
+ if (data[1] == 0)
+ data[0]++;
+ break;
+ case 2:
+ DestroyTask(taskId);
+ return;
+ }
+ SetGpuReg(REG_OFFSET_MOSAIC, (data[1] << 4) | data[1]);
+}
+
+void FldEffPoison_Start(void)
+{
+ PlaySE(SE_DOKU);
+ CreateTask(Task_FieldPoisonEffect, 80);
+}
+
+bool32 FldEffPoison_IsActive(void)
+{
+ return FuncIsActiveTask(Task_FieldPoisonEffect);
+}
+
+void Task_WateringBerryTreeAnim_0(u8 taskId)
+{
+ gTasks[taskId].func = Task_WateringBerryTreeAnim_1;
+}
+
+void Task_WateringBerryTreeAnim_1(u8 taskId)
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ if (!EventObjectIsMovementOverridden(playerEventObj)
+ || EventObjectClearHeldMovementIfFinished(playerEventObj))
+ {
+ sub_808C228(GetPlayerFacingDirection());
+ EventObjectSetHeldMovement(playerEventObj, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection()));
+ gTasks[taskId].func = Task_WateringBerryTreeAnim_2;
+ }
+}
+
+void Task_WateringBerryTreeAnim_2(u8 taskId)
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ if (EventObjectClearHeldMovementIfFinished(playerEventObj))
+ {
+ s16 value = gTasks[taskId].data[1]++;
+
+ if (value < 10)
+ EventObjectSetHeldMovement(playerEventObj, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection()));
+
+ else
+ gTasks[taskId].func = Task_WateringBerryTreeAnim_3;
+ }
+}
+
+void Task_WateringBerryTreeAnim_3(u8 taskId)
+{
+ SetPlayerAvatarTransitionFlags(sub_808BCD0());
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+void DoWateringBerryTreeAnim(void)
+{
+ CreateTask(Task_WateringBerryTreeAnim_0, 80);
+}
+
+u8 CreateRecordMixingSprite(void)
+{
+ u8 spriteId;
+
+ LoadSpritePalette(&gUnknown_0858E864);
+
+ spriteId = CreateSprite(&gUnknown_0858E880, 0, 0, 82);
+
+ if (spriteId == MAX_SPRITES)
+ {
+ return MAX_SPRITES;
+ }
+ else
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ sub_8092FF0(16, 13, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->pos1.x += 16;
+ sprite->pos1.y += 2;
+ }
+ return spriteId;
+}
+
+void DestroyRecordMixingSprite(void)
+{
+ int i;
+
+ for (i = 0; i < MAX_SPRITES; i++)
+ {
+ if (gSprites[i].template == &gUnknown_0858E880)
+ {
+ FreeSpritePalette(&gSprites[i]);
+ DestroySprite(&gSprites[i]);
+ }
+ }
+}
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index 471a83c61..adec780b3 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -103,7 +103,7 @@ static void sub_8161784(u8 taskId)
static void sub_81617B8(u8 taskId)
{
PlaySE(SE_SELECT);
- sub_81B1B5C(&gText_CantBeUsedOnPkmn, 0);
+ sub_81B1B5C(gText_CantBeUsedOnPkmn, 0);
schedule_bg_copy_tilemap_to_vram(2);
gTasks[taskId].func = sub_8161784;
}
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index 9951fe581..cd8fa400d 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -3,7 +3,8 @@
#include "event_scripts.h"
#include "field_effect.h"
#include "field_player_avatar.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
+#include "field_weather.h"
#include "palette.h"
#include "party_menu.h"
#include "rom6.h"
@@ -40,7 +41,7 @@ bool8 FldEff_SweetScent(void)
{
u8 taskId;
- sub_80AC3D0();
+ SetWeatherScreenFadeOut();
taskId = oei_task_add();
gTasks[taskId].data[8] = (u32)StartSweetScentFieldEffect >> 16;
gTasks[taskId].data[9] = (u32)StartSweetScentFieldEffect;
diff --git a/src/frontier_util.c b/src/frontier_util.c
index 528cce699..2fc58241a 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -48,8 +48,6 @@ struct FrontierBrainMon
u16 moves[4];
};
-extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
-
extern void sub_81B8558(void);
// This file's functions.
diff --git a/src/ghost.c b/src/ghost.c
index ce57df7e8..a755783b7 100644
--- a/src/ghost.c
+++ b/src/ghost.c
@@ -1,16 +1,46 @@
#include "global.h"
+#include "battle.h"
#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "palette.h"
#include "constants/rgb.h"
+#include "scanline_effect.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "trig.h"
+#include "util.h"
-extern void sub_811160C(struct Sprite *);
-extern void sub_81117F4(struct Sprite *);
-extern void sub_81119E0(struct Sprite *);
-extern void sub_8111B9C(struct Sprite *);
-extern void sub_8112264(struct Sprite *);
-extern void sub_81129F0(struct Sprite *);
-extern void sub_8112B78(struct Sprite *);
-extern void sub_8112E9C(struct Sprite *);
-extern void sub_8112F60(struct Sprite *);
+static void sub_811160C(struct Sprite *);
+static void sub_8111674(struct Sprite *);
+static void sub_81116E8(struct Sprite *);
+static void sub_8111764(struct Sprite *);
+static void sub_81117F4(struct Sprite *);
+static void sub_8111814(struct Sprite *);
+static void sub_8111914(u8 taskId);
+static void sub_811196C(u8 taskId);
+static void InitAnimShadowBall(struct Sprite *);
+static void AnimShadowBallStep(struct Sprite *);
+static void sub_8111B9C(struct Sprite *);
+static void sub_8111BB4(struct Sprite *);
+static void sub_8111D78(u8 taskId);
+static void sub_8111E78(u8 taskId);
+static void sub_81120DC(u8 taskId);
+static void sub_8112170(u8 taskId);
+static void sub_8112264(struct Sprite *);
+static void sub_8112384(struct Sprite *);
+static void sub_81125E0(u8 taskId);
+static void sub_811280C(u8 taskId);
+static void sub_8112994(u8 taskId);
+static void sub_81129F0(struct Sprite *);
+static void sub_8112A4C(struct Sprite *);
+static void sub_8112ACC(struct Sprite *);
+static void sub_8112B44(struct Sprite *);
+static void sub_8112B78(struct Sprite *);
+static void sub_8112C4C(struct Sprite *);
+static void sub_8112D10(u8 taskId);
+static void sub_8112E9C(struct Sprite *);
+static void sub_8112F60(struct Sprite *);
+static void sub_8112FB8(struct Sprite *);
const union AffineAnimCmd gUnknown_08596CF8[] =
{
@@ -65,7 +95,7 @@ const struct SpriteTemplate gUnknown_08596D58 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_08596D54,
- .callback = sub_81119E0,
+ .callback = InitAnimShadowBall,
};
const union AnimCmd gUnknown_08596D70[] =
@@ -184,3 +214,1114 @@ const struct SpriteTemplate gUnknown_08596E48 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_8112F60,
};
+
+static void sub_811160C(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sub_80A6FD4(sprite);
+ sprite->callback = sub_8111674;
+ sprite->data[6] = 16;
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[6]);
+}
+
+static void sub_8111674(struct Sprite *sprite)
+{
+ s16 r0;
+ s16 r2;
+ sub_8111764(sprite);
+ if (AnimTranslateLinear(sprite))
+ {
+ sprite->callback = sub_81116E8;
+ return;
+ }
+
+ sprite->pos2.x += Sin(sprite->data[5], 10);
+ sprite->pos2.y += Cos(sprite->data[5], 15);
+ r2 = sprite->data[5];
+ sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
+ r0 = sprite->data[5];
+ if (r2 != 0 && r2 <= 196)
+ return;
+ if (r0 <= 0)
+ return;
+ PlaySE12WithPanning(SE_W109, gUnknown_02038440);
+}
+
+static void sub_81116E8(struct Sprite *sprite)
+{
+ s16 r2;
+ s16 r0;
+ sprite->data[0] = 1;
+ AnimTranslateLinear(sprite);
+ sprite->pos2.x += Sin(sprite->data[5], 10);
+ sprite->pos2.y += Cos(sprite->data[5], 15);
+
+ r2 = sprite->data[5];
+ sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
+ r0 = sprite->data[5];
+
+ if (r2 == 0 || r2 > 196)
+ {
+ if (r0 > 0)
+ PlaySE(SE_W109);
+ }
+
+ if (sprite->data[6] == 0)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80A67F4;
+ }
+ else
+ sub_8111764(sprite);
+}
+
+static void sub_8111764(struct Sprite *sprite)
+{
+
+ s16 r0;
+ if (sprite->data[6] > 0xFF)
+ {
+ if (++sprite->data[6] == 0x10d)
+ sprite->data[6] = 0;
+ return;
+ }
+
+ r0 = sprite->data[7];
+ sprite->data[7]++;
+
+ if ((r0 & 0xFF) == 0)
+ {
+ sprite->data[7] &= 0xff00;
+ if ((sprite->data[7] & 0x100) != 0)
+ sprite->data[6]++;
+ else
+ sprite->data[6]--;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], 16 - sprite->data[6]));
+ if (sprite->data[6] == 0 || sprite->data[6] == 16)
+ sprite->data[7] ^= 0x100;
+ if (sprite->data[6] == 0)
+ sprite->data[6] = 0x100;
+ }
+}
+
+static void sub_81117F4(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->callback = sub_8111814;
+ sprite->callback(sprite);
+}
+
+static void sub_8111814(struct Sprite *sprite)
+{
+ u16 temp1;
+ sprite->pos2.x = Sin(sprite->data[0], 32);
+ sprite->pos2.y = Cos(sprite->data[0], 8);
+ temp1 = sprite->data[0] - 65;
+ if (temp1 <= 130)
+ sprite->oam.priority = 2;
+ else
+ sprite->oam.priority = 1;
+ sprite->data[0] = (sprite->data[0] + 19) & 0xFF;
+ sprite->data[2] += 80;
+ sprite->pos2.y += sprite->data[2] >> 8;
+ sprite->data[7] += 1;
+ if (sprite->data[7] == 61)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_811188C(u8 taskId)
+{
+ u8 spriteId;
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ spriteId = GetAnimBattlerSpriteId(0);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
+ SetSpriteRotScale(spriteId, 128, 128, 0);
+ gSprites[spriteId].invisible = FALSE;
+ gTasks[taskId].data[0] = 128;
+ gTasks[taskId].data[1] = *gBattleAnimArgs;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 16;
+ gTasks[taskId].func = sub_8111914;
+}
+
+static void sub_8111914(u8 taskId)
+{
+ gTasks[taskId].data[10] += 1;
+ if (gTasks[taskId].data[10] == 3)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[2] += 1;
+ gTasks[taskId].data[3] -= 1;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[2], gTasks[taskId].data[3]));
+ if (gTasks[taskId].data[2] != 9)
+ return;
+
+ gTasks[taskId].func = sub_811196C;
+ }
+}
+
+static void sub_811196C(u8 taskId)
+{
+ u8 spriteId;
+ if (gTasks[taskId].data[1] > 0)
+ {
+ gTasks[taskId].data[1] -= 1;
+ return;
+ }
+
+ spriteId = GetAnimBattlerSpriteId(0);
+ gTasks[taskId].data[0] += 8;
+ if (gTasks[taskId].data[0] <= 0xFF)
+ {
+ SetSpriteRotScale(spriteId, gTasks[taskId].data[0], gTasks[taskId].data[0], 0);
+ }
+ else
+ {
+ ResetSpriteRotScale(spriteId);
+ DestroyAnimVisualTask(taskId);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ }
+}
+
+// Spins a sprite towards the target, pausing in the middle.
+// Used in Shadow Ball.
+// arg 0: duration step 1 (attacker -> center)
+// arg 1: duration step 2 (spin center)
+// arg 2: duration step 3 (center -> target)
+static void InitAnimShadowBall(struct Sprite *sprite)
+{
+ u16 r5, r6;
+ r5 = sprite->pos1.x;
+ r6 = sprite->pos1.y;
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] = gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[6] = (((s16)r5 - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->data[7] = (((s16)r6 - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->callback = AnimShadowBallStep;
+}
+
+static void AnimShadowBallStep(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->data[1] -= 1;
+ if (sprite->data[1] > 0)
+ break;
+ sprite->data[0] += 1;
+ break;
+ case 1:
+ sprite->data[2] -= 1;
+ if (sprite->data[2] > 0)
+ break;
+ sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3];
+ sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3];
+ sprite->data[0] += 1;
+ break;
+ case 2:
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->data[3] -= 1;
+ if (sprite->data[3] > 0)
+ break;
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[0] += 1;
+ break;
+ case 3:
+ DestroySpriteAndMatrix(sprite);
+ break;
+ }
+}
+
+static void sub_8111B9C(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->callback = sub_8111BB4;
+}
+
+static void sub_8111BB4(struct Sprite *sprite) {
+
+ s8 r5 = FALSE;
+ bool8 r6 = FALSE;
+ if(sprite->animEnded)
+ {
+ if(!(sprite->invisible))
+ sprite->invisible=TRUE;
+ switch(sprite->data[0])
+ {
+ case 0:
+ if((sprite->data[1]) != 2)
+ break;
+ goto loc_08111C06;
+ case 1:
+ if((sprite->data[1]) == 4)
+ r5 = TRUE;
+ break;
+ default:
+ r6 = TRUE;
+ }
+ if(r5)
+ {
+ loc_08111C06:
+ sprite->invisible ^= 1;
+ sprite->data[2]++;
+ sprite->data[1] = 0;
+ if(sprite->data[2] == 5)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ }
+ else if(r6)
+ DestroyAnimSprite(sprite);
+ else
+ sprite->data[1]++;
+ }
+}
+
+void sub_8111C50(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ task->data[0] = CloneBattlerSpriteWithBlend(1);
+ if (task->data[0] < 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ task->data[1] = 0;
+ task->data[2] = 15;
+ task->data[3] = 2;
+ task->data[4] = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3]));
+ gSprites[task->data[0]].data[0] = 80;
+ if (GetBattlerSide(gBattleAnimTarget) == 0)
+ {
+ gSprites[task->data[0]].data[1] = -144;
+ gSprites[task->data[0]].data[2] = 112;
+ }
+ else
+ {
+ gSprites[task->data[0]].data[1] = 144;
+ gSprites[task->data[0]].data[2] = -112;
+ }
+ gSprites[task->data[0]].data[3] = 0;
+ gSprites[task->data[0]].data[4] = 0;
+ StoreSpriteCallbackInData6(&gSprites[task->data[0]], SpriteCallbackDummy);
+ gSprites[task->data[0]].callback = AnimTranslateLinearSimple;
+ task->func = sub_8111D78;
+}
+
+static void sub_8111D78(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ switch (task->data[4])
+ {
+ case 0:
+ task->data[1] += 1;
+ task->data[5] = task->data[1] & 3;
+ if (task->data[5] == 1)
+ if (task->data[2] > 0)
+ task->data[2] -= 1;
+ if (task->data[5] == 3)
+ if (task->data[3] <= 15)
+ task->data[3] += 1;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3]));
+ if (task->data[3] != 16 || task->data[2] != 0)
+ break;
+ if (task->data[1] <= 80)
+ break;
+ obj_delete_but_dont_free_vram(&gSprites[task->data[0]]);
+ task->data[4] = 1;
+ break;
+ case 1:
+ if (++task->data[6] <= 1)
+ break;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ task->data[4] += 1;
+ break;
+ case 2:
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_8111E50(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ task->data[15] = 0;
+ task->func = sub_8111E78;
+ task->func(taskId);
+}
+
+static void sub_8111E78(u8 taskId)
+{
+ s16 startLine;
+ struct Task *task = &gTasks[taskId];
+ u8 position = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
+
+ switch (task->data[15])
+ {
+ case 0:
+ task->data[14] = AllocSpritePalette(0x2771);
+ if (task->data[14] == 0xFF || task->data[14] == 0xF)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ task->data[0] = CloneBattlerSpriteWithBlend(1);
+ if (task->data[0] < 0)
+ {
+ FreeSpritePaletteByTag(0x2771);
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ s16 mask2;
+ gSprites[task->data[0]].oam.paletteNum = task->data[14];
+ gSprites[task->data[0]].oam.objMode = ST_OAM_OBJ_NORMAL;
+ gSprites[task->data[0]].oam.priority = 3;
+ gSprites[task->data[0]].invisible = (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].invisible);
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 16;
+ task->data[13] = GetAnimBattlerSpriteId(1);
+ task->data[4] = (gSprites[task->data[13]].oam.paletteNum + 16) * 16;
+ if (position == 1) {
+ u16 mask = DISPCNT_BG1_ON;
+ mask2 = mask;
+ }
+ else {
+ u16 mask = DISPCNT_BG2_ON;
+ mask2 = mask;
+ }
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, mask2);
+ task->data[15]++;
+ }
+ }
+ break;
+ case 1:
+ task->data[14] = (task->data[14] + 16) * 16;
+ CpuSet(&gPlttBufferUnfaded[task->data[4]], &gPlttBufferFaded[task->data[14]], 0x4000008);
+ BlendPalette(task->data[4], 16, 10, RGB(13, 0, 15));
+ task->data[15]++;
+ break;
+ case 2:
+ startLine = gSprites[task->data[13]].pos1.y + gSprites[task->data[13]].pos2.y - 32;
+ if (startLine < 0)
+ startLine = 0;
+
+ if (position == 1)
+ task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, 4, 1);
+ else
+ task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, 8, 1);
+
+ task->data[15]++;
+ break;
+ case 3:
+ if (position == 1)
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1));
+ else
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG2));
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ task->data[15]++;
+ break;
+ case 4:
+ if (position == 1)
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+
+ task->func = sub_81120DC;
+ task->data[15]++;
+ break;
+ default:
+ task->data[15]++;
+ break;
+ }
+}
+
+static void sub_81120DC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ task->data[1]++;
+ task->data[5] = task->data[1] & 1;
+ if (task->data[5] == 0)
+ task->data[2] = gSineTable[task->data[1]] / 18;
+
+ if (task->data[5] == 1)
+ task->data[3] = 16 - (gSineTable[task->data[1]] / 18);
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3]));
+ if (task->data[1] == 128)
+ {
+ task->data[15] = 0;
+ task->func = sub_8112170;
+ task->func(taskId);
+ }
+}
+
+static void sub_8112170(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ u8 position = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
+
+ switch (task->data[15])
+ {
+ case 0:
+ gScanlineEffect.state = 3;
+ task->data[14] = GetAnimBattlerSpriteId(1);
+ if (position == 1)
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ break;
+ case 1:
+ BlendPalette(task->data[4], 16, 0, RGB(13, 0, 15));
+ break;
+ case 2:
+ gSprites[task->data[14]].invisible = 1;
+ obj_delete_but_dont_free_vram(&gSprites[task->data[0]]);
+ FreeSpritePaletteByTag(0x2771);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ if (position == 1)
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+
+ task->data[15]++;
+}
+
+static void sub_8112264(struct Sprite *sprite)
+{
+ s16 battler1X, battler1Y;
+ s16 battler2X, battler2Y;
+ s16 yDiff;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28;
+ battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28;
+ }
+ else
+ {
+ battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28;
+ battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28;
+ }
+
+ yDiff = battler2Y - battler1Y;
+ sprite->data[0] = battler1X * 16;
+ sprite->data[1] = battler1Y * 16;
+ sprite->data[2] = ((battler2X - battler1X) * 16) / gBattleAnimArgs[1];
+ sprite->data[3] = (yDiff * 16) / gBattleAnimArgs[1];
+ sprite->data[4] = gBattleAnimArgs[1];
+ sprite->data[5] = battler2X;
+ sprite->data[6] = battler2Y;
+ sprite->data[7] = sprite->data[4] / 2;
+ sprite->oam.priority = 2;
+ sprite->pos1.x = battler1X;
+ sprite->pos1.y = battler1Y;
+ sprite->callback = sub_8112384;
+ sprite->invisible = 1;
+}
+
+static void sub_8112384(struct Sprite *sprite)
+{
+ if (sprite->data[4])
+ {
+ sprite->data[0] += sprite->data[2];
+ sprite->data[1] += sprite->data[3];
+ sprite->pos1.x = sprite->data[0] >> 4;
+ sprite->pos1.y = sprite->data[1] >> 4;
+ if (--sprite->data[4] == 0)
+ sprite->data[0] = 0;
+ }
+}
+
+void sub_81123C4(u8 taskId)
+{
+ struct Task *task;
+ s16 battler;
+ u8 spriteId;
+ s16 baseX, baseY;
+ s16 x, y;
+
+ task = &gTasks[taskId];
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ task->data[5] = 0;
+ task->data[6] = 0;
+ task->data[7] = 0;
+ task->data[8] = 0;
+ task->data[9] = 16;
+ task->data[10] = gBattleAnimArgs[0];
+
+ baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ baseY = sub_80A861C(gBattleAnimAttacker, 3);
+ if (!IsContest())
+ {
+ for (battler = 0; battler < 4; battler++)
+ {
+ if (battler != gBattleAnimAttacker
+ && battler != (gBattleAnimAttacker ^ 2)
+ && IsBattlerSpriteVisible(battler))
+ {
+ spriteId = CreateSprite(&gUnknown_08596DB8, baseX, baseY, 55);
+ if (spriteId != MAX_SPRITES)
+ {
+ x = GetBattlerSpriteCoord(battler, 2);
+ y = sub_80A861C(battler, 3);
+ gSprites[spriteId].data[0] = baseX << 4;
+ gSprites[spriteId].data[1] = baseY << 4;
+ gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[3] = ((y - baseY) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[4] = gBattleAnimArgs[1];
+ gSprites[spriteId].data[5] = x;
+ gSprites[spriteId].data[6] = y;
+ gSprites[spriteId].callback = sub_8112384;
+
+ task->data[task->data[12] + 13] = spriteId;
+ task->data[12]++;
+ }
+ }
+ }
+ }
+ else
+ {
+ spriteId = CreateSprite(&gUnknown_08596DB8, baseX, baseY, 55);
+ if (spriteId != MAX_SPRITES)
+ {
+ x = 48;
+ y = 40;
+ gSprites[spriteId].data[0] = baseX << 4;
+ gSprites[spriteId].data[1] = baseY << 4;
+ gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[3] = ((y - baseY) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[4] = gBattleAnimArgs[1];
+ gSprites[spriteId].data[5] = x;
+ gSprites[spriteId].data[6] = y;
+ gSprites[spriteId].callback = sub_8112384;
+
+ task->data[13] = spriteId;
+ task->data[12] = 1;
+ }
+ }
+
+ task->func = sub_81125E0;
+}
+
+static void sub_81125E0(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (task->data[6] == 0)
+ {
+ if (++task->data[5] > 1)
+ {
+ task->data[5] = 0;
+ task->data[7]++;
+ if (task->data[7] & 1)
+ {
+ if (task->data[8] < 16)
+ task->data[8]++;
+ }
+ else
+ {
+ if (task->data[9])
+ task->data[9]--;
+ }
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[8], task->data[9]));
+ if (task->data[7] >= 24)
+ {
+ task->data[7] = 0;
+ task->data[6] = 1;
+ }
+ }
+ }
+
+ if (task->data[10])
+ task->data[10]--;
+ else if (task->data[6])
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[5] > 1)
+ {
+ task->data[5] = 0;
+ task->data[7]++;
+ if (task->data[7] & 1)
+ {
+ if (task->data[8])
+ task->data[8]--;
+ }
+ else
+ {
+ if (task->data[9] < 16)
+ task->data[9]++;
+ }
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[8], task->data[9]));
+ if (task->data[8] == 0 && task->data[9] == 16)
+ {
+ for (i = 0; i < task->data[12]; i++)
+ DestroySprite(&gSprites[task->data[i + 13]]);
+
+ task->data[0]++;
+ }
+ }
+ break;
+ case 2:
+ if (++task->data[5] > 0)
+ task->data[0]++;
+ break;
+ case 3:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8112758(u8 taskId)
+{
+ s16 startX, startY;
+ s16 leftDistance, topDistance, bottomDistance, rightDistance;
+
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, ((WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR) |
+ (WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR)));
+ SetGpuReg(REG_OFFSET_WINOUT, ((WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ) |
+ (WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR)));
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN));
+ SetGpuReg(REG_OFFSET_BLDY, 0x10);
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest())
+ startX = 40;
+ else
+ startX = 200;
+
+ gBattle_WIN0H = (startX << 8) | startX;
+ startY = 40;
+ gBattle_WIN0V = (startY << 8) | startY;
+
+ leftDistance = startX;
+ rightDistance = 240 - startX;
+ topDistance = startY;
+ bottomDistance = 72;
+ gTasks[taskId].data[1] = leftDistance;
+ gTasks[taskId].data[2] = rightDistance;
+ gTasks[taskId].data[3] = topDistance;
+ gTasks[taskId].data[4] = bottomDistance;
+ gTasks[taskId].data[5] = startX;
+ gTasks[taskId].data[6] = startY;
+ gTasks[taskId].func = sub_811280C;
+}
+
+static void sub_811280C(u8 taskId)
+{
+ s16 step;
+ s16 leftDistance, rightDistance, topDistance, bottomDistance;
+ s16 startX, startY;
+ u16 left, right, top, bottom;
+ u16 selectedPalettes;
+
+ step = gTasks[taskId].data[0];
+ gTasks[taskId].data[0]++;
+ leftDistance = gTasks[taskId].data[1];
+ rightDistance = gTasks[taskId].data[2];
+ topDistance = gTasks[taskId].data[3];
+ bottomDistance = gTasks[taskId].data[4];
+ startX = gTasks[taskId].data[5];
+ startY = gTasks[taskId].data[6];
+
+ if (step < 16)
+ {
+ left = startX - (leftDistance * 0.0625) * step;
+ right = startX + (rightDistance * 0.0625) * step;
+ top = startY - (topDistance * 0.0625) * step;
+ bottom = startY + (bottomDistance * 0.0625) * step;
+ }
+ else
+ {
+ left = 0;
+ right = 240;
+ top = 0;
+ bottom = 112;
+ selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0);
+ BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0));
+ gTasks[taskId].func = sub_8112994;
+ }
+
+ gBattle_WIN0H = (left << 8) | right;
+ gBattle_WIN0V = (top << 8) | bottom;
+}
+
+static void sub_8112994(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, ((WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR) |
+ (WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR)));
+ SetGpuReg(REG_OFFSET_WINOUT, ((WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR) |
+ (WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR)));
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_81129F0(struct Sprite *sprite)
+{
+ s16 xDelta;
+ s16 xDelta2;
+
+ InitSpritePosToAnimAttacker(sprite, 1);
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ xDelta = 24;
+ xDelta2 = -2;
+ sprite->oam.matrixNum = 8;
+ }
+ else
+ {
+ xDelta = -24;
+ xDelta2 = 2;
+ }
+
+ sprite->pos1.x += xDelta;
+ sprite->data[1] = xDelta2;
+ sprite->data[0] = 60;
+ sprite->callback = sub_8112A4C;
+}
+
+static void sub_8112A4C(struct Sprite *sprite)
+{
+ u16 var0;
+
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ sprite->pos2.x += sprite->data[1];
+ var0 = sprite->pos2.x + 7;
+ if (var0 > 14)
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos2.x = 0;
+ sprite->oam.tileNum += 8;
+ if (++sprite->data[2] == 3)
+ {
+ sprite->data[0] = 30;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, sub_8112ACC);
+ }
+ else
+ {
+ sprite->data[0] = 40;
+ }
+ }
+ }
+}
+
+static void sub_8112ACC(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0x10, 0));
+ sprite->data[0]++;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ }
+ else if (sprite->data[1] < 2)
+ {
+ sprite->data[1]++;
+ }
+ else
+ {
+ sprite->data[1] = 0;
+ sprite->data[2]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, (16 - sprite->data[2]) | (sprite->data[2] << 8));
+ if (sprite->data[2] == 16)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_8112B44;
+ }
+ }
+}
+
+static void sub_8112B44(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_8112B78(struct Sprite *sprite)
+{
+ u16 coeffB;
+ u16 coeffA;
+
+ sprite->pos2.x = Sin(sprite->data[0], 12);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos2.x = -sprite->pos2.x;
+
+ sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
+ sprite->data[1] += 0x100;
+ sprite->pos2.y = -(sprite->data[1] >> 8);
+
+ sprite->data[7]++;
+ if (sprite->data[7] == 1)
+ {
+ sprite->data[6] = 0x050B;
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[6]);
+ }
+ else if (sprite->data[7] > 30)
+ {
+ sprite->data[2]++;
+ coeffB = sprite->data[6] >> 8;
+ coeffA = sprite->data[6] & 0xFF;
+
+ if (++coeffB > 16)
+ coeffB = 16;
+ if (--(s16)coeffA < 0)
+ coeffA = 0;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(coeffA, coeffB));
+ sprite->data[6] = BLDALPHA_BLEND(coeffA, coeffB);
+ if (coeffB == 16 && coeffA == 0)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_8112C4C;
+ }
+ }
+}
+
+static void sub_8112C4C(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8112C6C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = 0;
+ task->data[1] = 16;
+ task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ task->data[10] = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
+ task->data[11] = (sub_80A861C(gBattleAnimAttacker, 1) / 2) + 8;
+ task->data[7] = 0;
+ task->data[5] = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
+ task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 2;
+ task->data[3] = 0;
+ task->data[4] = 16;
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ task->data[8] = 0;
+ task->func = sub_8112D10;
+}
+
+static void sub_8112D10(u8 taskId)
+{
+ u16 i;
+ u8 spriteId;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ for (i = 0; i < 6; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_08596E30, task->data[9], task->data[10], task->data[6]);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER;
+
+ gSprites[spriteId].data[2] = (i * 42) & 0xFF;
+ gSprites[spriteId].data[3] = task->data[11];
+ gSprites[spriteId].data[5] = i * 6;
+ task->data[7]++;
+ }
+ }
+
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] & 1)
+ {
+ if (task->data[3] < 14)
+ task->data[3]++;
+ }
+ else
+ {
+ if (task->data[4] > 4)
+ task->data[4]--;
+ }
+
+ if (task->data[3] == 14 && task->data[4] == 4)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4]));
+ break;
+ case 2:
+ if (++task->data[1] > 30)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (++task->data[1] & 1)
+ {
+ if (task->data[3] > 0)
+ task->data[3]--;
+ }
+ else
+ {
+ if (task->data[4] < 16)
+ task->data[4]++;
+ }
+
+ if (task->data[3] == 0 && task->data[4] == 16)
+ {
+ task->data[8] = 1;
+ task->data[0]++;
+ }
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4]));
+ break;
+ case 4:
+ if (task->data[7] == 0)
+ task->data[0]++;
+ break;
+ case 5:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_8112E9C(struct Sprite *sprite)
+{
+ u16 index;
+
+ if (sprite->data[1] == 0)
+ sprite->data[2] += 2;
+ else
+ sprite->data[2] -= 2;
+
+ sprite->data[2] &= 0xFF;
+ sprite->pos2.x = Sin(sprite->data[2], sprite->data[3]);
+
+ index = sprite->data[2] - 65;
+ if (index < 127)
+ sprite->oam.priority = gTasks[sprite->data[0]].data[5] + 1;
+ else
+ sprite->oam.priority = gTasks[sprite->data[0]].data[5];
+
+ sprite->data[5]++;
+ sprite->data[6] = (sprite->data[5] * 8) & 0xFF;
+ sprite->pos2.y = Sin(sprite->data[6], 7);
+ if (gTasks[sprite->data[0]].data[8])
+ {
+ gTasks[sprite->data[0]].data[7]--;
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_8112F60(struct Sprite *sprite)
+{
+ sprite->invisible = 1;
+ sprite->data[5] = gBattlerSpriteIds[gBattleAnimAttacker];
+ sprite->data[0] = 128;
+ sprite->data[1] = 10;
+ sprite->data[2] = gBattleAnimArgs[0];
+ sprite->data[3] = gBattleAnimArgs[1];
+ sprite->callback = sub_8112FB8;
+
+ gSprites[sprite->data[5]].pos1.y += 8;
+}
+
+static void sub_8112FB8(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ sprite->data[3]--;
+ gSprites[sprite->data[5]].pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ gSprites[sprite->data[5]].pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->data[0] += sprite->data[2];
+ if (sprite->data[0] > 255)
+ sprite->data[0] -= 256;
+ }
+ else
+ {
+ gSprites[sprite->data[5]].pos2.x = 0;
+ gSprites[sprite->data[5]].pos2.y = 0;
+ gSprites[sprite->data[5]].pos1.y -= 8;
+ sprite->callback = DestroySpriteAndMatrix;
+ }
+}
diff --git a/src/graphics.c b/src/graphics.c
index b2de074bc..c0deb2883 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -897,9 +897,9 @@ const u32 gBattleStatMask6_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat6
const u32 gBattleStatMask7_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat7.gbapal.lz");
const u32 gBattleStatMask8_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat8.gbapal.lz");
-const u32 gUnknown_08C2DC68[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.4bpp.lz");
-const u32 gUnknown_08C2DDA4[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.gbapal.lz");
-const u32 gUnknown_08C2DDC4[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.bin.lz");
+const u8 gUnknown_08C2DC68[] = INCBIN_U8("graphics/battle_anims/masks/cure_bubbles.4bpp.lz");
+const u16 gUnknown_08C2DDA4[] = INCBIN_U16("graphics/battle_anims/masks/cure_bubbles.gbapal.lz");
+const u8 gUnknown_08C2DDC4[] = INCBIN_U8("graphics/battle_anims/masks/cure_bubbles.bin.lz");
const u32 gBattleAnimSpritePalette_245[] = INCBIN_U32("graphics/battle_anims/sprites/245.gbapal.lz");
const u32 gBattleAnimSpriteSheet_245[] = INCBIN_U32("graphics/battle_anims/sprites/245.4bpp.lz");
diff --git a/src/ground.c b/src/ground.c
index 6cb7b8557..807205ad8 100644
--- a/src/ground.c
+++ b/src/ground.c
@@ -183,7 +183,7 @@ static void AnimBonemerangProjectileEnd(struct Sprite *sprite)
// arg 4: duration
void AnimBoneHitProjectile(struct Sprite *sprite)
{
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
@@ -205,7 +205,7 @@ void AnimDirtScatter(struct Sprite *sprite)
u8 targetXPos, targetYPos;
s16 xOffset, yOffset;
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 2);
targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 3);
@@ -221,7 +221,7 @@ void AnimDirtScatter(struct Sprite *sprite)
sprite->data[2] = targetXPos + xOffset;
sprite->data[4] = targetYPos + yOffset;
sprite->callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
}
// Moves a particle of dirt in the Mud Sport animation.
@@ -306,7 +306,7 @@ static void sub_8114CFC(u8 taskId)
{
case 0:
task->data[10] = GetAnimBattlerSpriteId(0);
- task->data[11] = sub_80A8364(gBattleAnimAttacker);
+ task->data[11] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
if (task->data[11] == 1)
{
task->data[12] = gBattle_BG1_X;
@@ -375,7 +375,7 @@ static void sub_8114EB4(u8 taskId)
gSprites[spriteId].pos2.x = 0;
gSprites[spriteId].pos2.y = 0;
- if (sub_80A8364(gBattleAnimAttacker) == 1)
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
gBattle_BG1_Y = 0;
else
gBattle_BG2_Y = 0;
@@ -422,7 +422,7 @@ static void sub_8114FD8(u8 taskId)
{
case 0:
task->data[10] = GetAnimBattlerSpriteId(0);
- task->data[11] = sub_80A8364(gBattleAnimAttacker);
+ task->data[11] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
if (task->data[11] == 1)
task->data[12] = gBattle_BG1_X;
else
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 27a3a29f9..fc60d2b08 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -497,7 +497,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId)
for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++)
{
- if (lastSavedTeam->mon[0].species == 0)
+ if (lastSavedTeam->mon[0].species == SPECIES_NONE)
break;
}
if (i >= HALL_OF_FAME_MAX_TEAMS)
diff --git a/src/item.c b/src/item.c
index 6a1f1955a..71c2dc0f7 100644
--- a/src/item.c
+++ b/src/item.c
@@ -543,7 +543,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
VarSet(VAR_0x40ED, itemId);
}
- var = sub_81ABB2C(pocket);
+ var = GetItemListPosition(pocket);
if (itemPocket->capacity > var
&& itemPocket->itemSlots[var].itemId == itemId)
{
diff --git a/src/item_menu.c b/src/item_menu.c
index abae65a33..a220f02ef 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -57,7 +57,7 @@ bool8 load_bag_menu_graphics(void);
void setup_bag_menu_textboxes(void);
void allocate_bag_item_list_buffers(void);
void load_bag_item_list_buffers(u8);
-void bag_menu_print_pocket_names(u8*, u8*);
+void bag_menu_print_pocket_names(const u8*, const u8*);
void bag_menu_copy_pocket_name_to_window(u32);
void bag_menu_draw_pocket_indicator_square(u8, u8);
void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void);
@@ -69,7 +69,6 @@ void Task_BagMenu(u8);
void get_name(s8*, u16);
u16 ItemIdToBattleMoveId(u16);
u16 BagGetItemIdByPocketPosition(u8, u16);
-void AddBagItemIconSprite(u16, u8);
void bag_menu_print_description_box_text(int);
void bag_menu_print_cursor(u8, u8);
void bag_menu_print(u8, u8, const u8*, u8, u8, u8, u8, u8, u8);
@@ -121,7 +120,7 @@ void bag_menu_leave_maybe_3(void);
void bag_menu_leave_maybe_2(void);
void bag_menu_leave_maybe(void);
void sub_81ABA6C(void);
-void sub_81ABAC4(void);
+static void SetPocketListPositions(void);
void sub_81ABAE0(void);
u8 sub_81AB1F0(u8);
void sub_81AC23C(u8);
@@ -151,7 +150,7 @@ void sub_81AD6FC(u8 taskId);
// .rodata
-const struct BgTemplate gUnknown_08613F90[3] =
+static const struct BgTemplate sBgTemplates_ItemMenu[3] =
{
{
.bg = 0,
@@ -182,7 +181,7 @@ const struct BgTemplate gUnknown_08613F90[3] =
},
};
-const struct ListMenuTemplate gUnknown_08613F9C =
+static const struct ListMenuTemplate sItemListMenu =
{
.items = NULL,
.moveCursorFunc = bag_menu_change_item_callback,
@@ -258,7 +257,8 @@ const struct ScrollArrowsTemplate gUnknown_08614094 = {SCROLL_ARROW_LEFT, 0x1C,
const u8 gUnknown_086140A4[] = INCBIN_U8("graphics/interface/select_button.4bpp");
-const u8 gUnknown_08614164[][3] = {
+static const u8 sFontColorTable[][3] = {
+// bgColor, textColor, shadowColor
{0, 1, 3},
{0, 1, 4},
{0, 3, 6},
@@ -268,7 +268,7 @@ const u8 gUnknown_08614164[][3] = {
const struct WindowTemplate gUnknown_08614174[] =
{
- {
+ { // Item names
.bg = 0,
.tilemapLeft = 14,
.tilemapTop = 2,
@@ -277,7 +277,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 1,
.baseBlock = 0x27,
},
- {
+ { // Description
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 13,
@@ -286,7 +286,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 1,
.baseBlock = 0x117,
},
- {
+ { // Pocket name
.bg = 0,
.tilemapLeft = 4,
.tilemapTop = 1,
@@ -295,7 +295,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 1,
.baseBlock = 0x1A1,
},
- {
+ { // TM/HM info icons
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 13,
@@ -304,7 +304,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 12,
.baseBlock = 0x16B,
},
- {
+ {// TM/HM info
.bg = 0,
.tilemapLeft = 7,
.tilemapTop = 13,
@@ -313,7 +313,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 12,
.baseBlock = 0x189,
},
- {
+ { // Field message box
.bg = 1,
.tilemapLeft = 2,
.tilemapTop = 15,
@@ -432,83 +432,81 @@ struct ListBuffer2 {
struct TempWallyStruct {
struct ItemSlot bagPocket_Items[30];
struct ItemSlot bagPocket_PokeBalls[16];
- u16 cursorPosition[5];
- u16 scrollPosition[5];
+ u16 cursorPosition[POCKETS_COUNT];
+ u16 scrollPosition[POCKETS_COUNT];
u8 filler[0x2];
u16 pocket;
};
EWRAM_DATA struct UnkBagStruct *gUnknown_0203CE54 = 0;
EWRAM_DATA struct BagStruct gUnknown_0203CE58 = {0};
-EWRAM_DATA struct ListBuffer1 *gUnknown_0203CE74 = 0;
-EWRAM_DATA struct ListBuffer2 *gUnknown_0203CE78 = 0;
+static EWRAM_DATA struct ListBuffer1 *sListBuffer1 = 0;
+static EWRAM_DATA struct ListBuffer2 *sListBuffer2 = 0;
EWRAM_DATA u16 gSpecialVar_ItemId = 0;
-EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0;
+static EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0;
-extern u8 *gPocketNamesStringsTable[];
-extern struct ListMenuTemplate gUnknown_08613F9C;
+extern u8 *const gPocketNamesStringsTable[];
extern const u8 gMoveNames[][0xD];
extern u8* gReturnToXStringsTable[];
-extern u32 gUnknown_0203CE5E[];
extern const u8 EventScript_2736B3[];
extern const u16 gUnknown_0860F074[];
void ResetBagScrollPositions(void)
{
- gUnknown_0203CE58.pocket = 0;
+ gUnknown_0203CE58.pocket = ITEMS_POCKET;
memset(gUnknown_0203CE58.cursorPosition, 0, 10);
memset(gUnknown_0203CE58.scrollPosition, 0, 10);
}
void CB2_BagMenuFromStartMenu(void)
{
- GoToBagMenu(0, 5, CB2_ReturnToFieldWithOpenMenu);
+ GoToBagMenu(RETURN_LOCATION_FIELD, POCKETS_COUNT, CB2_ReturnToFieldWithOpenMenu);
}
void sub_81AABB0(void)
{
if (!InBattlePyramid())
- GoToBagMenu(1, 5, SetCB2ToReshowScreenAfterMenu2);
+ GoToBagMenu(RETURN_LOCATION_BATTLE, POCKETS_COUNT, SetCB2ToReshowScreenAfterMenu2);
else
sub_81C4F98(1, SetCB2ToReshowScreenAfterMenu2);
}
void CB2_ChooseBerry(void)
{
- GoToBagMenu(4, 3, CB2_ReturnToFieldContinueScript);
+ GoToBagMenu(RETURN_LOCATION_FIELD_2, BERRIES_POCKET, CB2_ReturnToFieldContinueScript);
}
void sub_81AABF0(void(*callback)(void))
{
- GoToBagMenu(5, 3, callback);
+ GoToBagMenu(RETURN_LOCATION_FIELD_3, BERRIES_POCKET, callback);
}
void CB2_GoToSellMenu(void)
{
- GoToBagMenu(3, 5, CB2_ExitSellMenu);
+ GoToBagMenu(RETURN_LOCATION_SHOP, POCKETS_COUNT, CB2_ExitSellMenu);
}
void sub_81AAC14(void)
{
- GoToBagMenu(6, 5, sub_816B31C);
+ GoToBagMenu(RETURN_LOCATION_PC, POCKETS_COUNT, sub_816B31C);
}
void sub_81AAC28(void)
{
- GoToBagMenu(9, 5, bag_menu_leave_maybe_3);
+ GoToBagMenu(RETURN_LOCATION_FIELD_6, POCKETS_COUNT, bag_menu_leave_maybe_3);
gSpecialVar_0x8005 = 0;
gSpecialVar_Result = 0;
}
void sub_81AAC50(void)
{
- GoToBagMenu(7, 5, bag_menu_leave_maybe_2);
+ GoToBagMenu(RETURN_LOCATION_FIELD_4, POCKETS_COUNT, bag_menu_leave_maybe_2);
gSpecialVar_Result = 0;
}
void sub_81AAC70(void)
{
- GoToBagMenu(8, 5, bag_menu_leave_maybe);
+ GoToBagMenu(RETURN_LOCATION_FIELD_5, POCKETS_COUNT, bag_menu_leave_maybe);
gSpecialVar_Result = 0;
}
@@ -522,21 +520,21 @@ void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)
}
else
{
- if (bagMenuType != 12)
+ if (bagMenuType != RETURN_LOCATION_UNCHANGED)
gUnknown_0203CE58.location = bagMenuType;
if (postExitMenuMainCallback2)
gUnknown_0203CE58.bagCallback = postExitMenuMainCallback2;
- if (pocketId <= 4)
+ if (pocketId < POCKETS_COUNT)
gUnknown_0203CE58.pocket = pocketId;
- temp = gUnknown_0203CE58.location - 4;
+ temp = gUnknown_0203CE58.location - (POCKETS_COUNT - 1);
if (temp <= 1)
gUnknown_0203CE54->unk81B = 1;
- gUnknown_0203CE54->unk0 = 0;
+ gUnknown_0203CE54->mainCallback2 = 0;
gUnknown_0203CE54->unk81A = 0xFF;
gUnknown_0203CE54->unk81E = -1;
gUnknown_0203CE54->unk81F = -1;
- memset(gUnknown_0203CE54->unk804, 0xFF, sizeof(gUnknown_0203CE54->unk804));
- memset(gUnknown_0203CE54->unk810, 0xFF, 10);
+ memset(gUnknown_0203CE54->spriteId, 0xFF, sizeof(gUnknown_0203CE54->spriteId));
+ memset(gUnknown_0203CE54->windowPointers, 0xFF, 10);
SetMainCallback2(CB2_Bag);
}
}
@@ -615,7 +613,7 @@ bool8 setup_bag_menu(void)
break;
case 10:
sub_81ABA6C();
- sub_81ABAC4();
+ SetPocketListPositions();
sub_81ABAE0();
gMain.state++;
break;
@@ -677,10 +675,10 @@ bool8 setup_bag_menu(void)
void bag_menu_init_bgs(void)
{
ResetVramOamAndBgCntRegs();
- memset(gUnknown_0203CE54->unk4, 0, 0x800);
+ memset(gUnknown_0203CE54->tilemapBuffer, 0, 0x800);
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_08613F90, 3);
- SetBgTilemapBuffer(2, gUnknown_0203CE54->unk4);
+ InitBgsFromTemplates(0, sBgTemplates_ItemMenu, 3);
+ SetBgTilemapBuffer(2, gUnknown_0203CE54->tilemapBuffer);
ResetAllBgsCoordinates();
schedule_bg_copy_tilemap_to_vram(2);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
@@ -702,7 +700,7 @@ bool8 load_bag_menu_graphics(void)
case 1:
if (free_temp_tile_data_buffers_if_possible() != TRUE)
{
- LZDecompressWram(gUnknown_08D9A88C, gUnknown_0203CE54->unk4);
+ LZDecompressWram(gUnknown_08D9A88C, gUnknown_0203CE54->tilemapBuffer);
gUnknown_0203CE54->unk834++;
}
break;
@@ -744,8 +742,8 @@ u8 sub_81AB1F0(u8 a)
void allocate_bag_item_list_buffers(void)
{
- gUnknown_0203CE74 = Alloc(sizeof(struct ListBuffer1));
- gUnknown_0203CE78 = Alloc(sizeof(struct ListBuffer2));
+ sListBuffer1 = Alloc(sizeof(struct ListBuffer1));
+ sListBuffer2 = Alloc(sizeof(struct ListBuffer2));
}
void load_bag_item_list_buffers(u8 pocketId)
@@ -754,41 +752,41 @@ void load_bag_item_list_buffers(u8 pocketId)
struct BagPocket *pocket = &gBagPockets[pocketId];
struct ListMenuItem *subBuffer;
- if (!gUnknown_0203CE54->unk81B_2)
+ if (!gUnknown_0203CE54->hideCloseBagText)
{
- for (i = 0; i < gUnknown_0203CE54->unk829[pocketId] - 1; i++)
+ for (i = 0; i < gUnknown_0203CE54->numItemStacks[pocketId] - 1; i++)
{
- get_name(gUnknown_0203CE78->name[i], pocket->itemSlots[i].itemId);
- subBuffer = gUnknown_0203CE74->subBuffers;
- subBuffer[i].name = gUnknown_0203CE78->name[i];
+ get_name(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
+ subBuffer = sListBuffer1->subBuffers;
+ subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = i;
}
- StringCopy(gUnknown_0203CE78->name[i], gText_CloseBag);
- subBuffer = gUnknown_0203CE74->subBuffers;
- subBuffer[i].name = gUnknown_0203CE78->name[i];
+ StringCopy(sListBuffer2->name[i], gText_CloseBag);
+ subBuffer = sListBuffer1->subBuffers;
+ subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = -2;
}
else
{
- for (i = 0; i < gUnknown_0203CE54->unk829[pocketId]; i++)
+ for (i = 0; i < gUnknown_0203CE54->numItemStacks[pocketId]; i++)
{
- get_name(gUnknown_0203CE78->name[i], pocket->itemSlots[i].itemId);
- subBuffer = gUnknown_0203CE74->subBuffers;
- subBuffer[i].name = gUnknown_0203CE78->name[i];
+ get_name(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
+ subBuffer = sListBuffer1->subBuffers;
+ subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = i;
}
}
- gMultiuseListMenuTemplate = gUnknown_08613F9C;
- gMultiuseListMenuTemplate.totalItems = gUnknown_0203CE54->unk829[pocketId];
- gMultiuseListMenuTemplate.items = gUnknown_0203CE74->subBuffers;
- gMultiuseListMenuTemplate.maxShowed = gUnknown_0203CE54->unk82E[pocketId];
+ gMultiuseListMenuTemplate = sItemListMenu;
+ gMultiuseListMenuTemplate.totalItems = gUnknown_0203CE54->numItemStacks[pocketId];
+ gMultiuseListMenuTemplate.items = sListBuffer1->subBuffers;
+ gMultiuseListMenuTemplate.maxShowed = gUnknown_0203CE54->numShownItems[pocketId];
}
void get_name(s8 *dest, u16 itemId)
{
switch (gUnknown_0203CE58.pocket)
{
- case 2:
+ case TMHM_POCKET:
StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(itemId)]);
if (itemId >= ITEM_HM01)
{
@@ -801,7 +799,7 @@ void get_name(s8 *dest, u16 itemId)
StringExpandPlaceholders(dest, gText_UnkF908Var1Clear7Var2);
}
break;
- case 3:
+ case BERRIES_POCKET:
ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_CHERI_BERRY + 1, 2, 2);
CopyItemName(itemId, gStringVar2);
StringExpandPlaceholders(dest, gText_UnkF908Var1Clear7Var2);
@@ -851,14 +849,14 @@ void sub_81AB520(u8 rboxId, int item_index_in_pocket, u8 a)
itemQuantity = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, item_index_in_pocket);
if (itemId >= ITEM_HM01 && itemId <= ITEM_HM08)
BlitBitmapToWindow(rboxId, gBagMenuHMIcon_Gfx, 8, a - 1, 16, 16);
- if (gUnknown_0203CE58.pocket == 3)
+ if (gUnknown_0203CE58.pocket == BERRIES_POCKET)
{
ConvertIntToDecimalStringN(gStringVar1, itemQuantity, 1, 3);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
offset = GetStringRightAlignXOffset(7, gStringVar4, 0x77);
bag_menu_print(rboxId, 7, gStringVar4, offset, a, 0, 0, -1, 0);
}
- else if (gUnknown_0203CE58.pocket != 4 && (unique = ItemId_GetImportance(itemId)) == FALSE)
+ else if (gUnknown_0203CE58.pocket != KEYITEMS_POCKET && (unique = ItemId_GetImportance(itemId)) == FALSE)
{
ConvertIntToDecimalStringN(gStringVar1, itemQuantity, 1, 2);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
@@ -907,7 +905,7 @@ void bag_menu_print_cursor(u8 a, u8 b)
void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void)
{
if (gUnknown_0203CE54->unk81E == 0xFF)
- gUnknown_0203CE54->unk81E = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xAC, 12, 0x94, gUnknown_0203CE54->unk829[gUnknown_0203CE58.pocket] - gUnknown_0203CE54->unk82E[gUnknown_0203CE58.pocket], 0x6E, 0x6E, &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket]);
+ gUnknown_0203CE54->unk81E = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xAC, 12, 0x94, gUnknown_0203CE54->numItemStacks[gUnknown_0203CE58.pocket] - gUnknown_0203CE54->numShownItems[gUnknown_0203CE58.pocket], 0x6E, 0x6E, &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket]);
}
void sub_81AB824(void)
@@ -937,8 +935,8 @@ void sub_81AB89C(void)
void free_bag_item_list_buffers(void)
{
- Free(gUnknown_0203CE78);
- Free(gUnknown_0203CE74);
+ Free(sListBuffer2);
+ Free(sListBuffer1);
FreeAllWindowBuffers();
Free(gUnknown_0203CE54);
}
@@ -955,8 +953,8 @@ void task_close_bag_menu_2(u8 taskId)
if (!gPaletteFade.active)
{
DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
- if (gUnknown_0203CE54->unk0 != 0)
- SetMainCallback2(gUnknown_0203CE54->unk0);
+ if (gUnknown_0203CE54->mainCallback2 != 0)
+ SetMainCallback2(gUnknown_0203CE54->mainCallback2);
else
SetMainCallback2(gUnknown_0203CE58.bagCallback);
sub_81AB824();
@@ -973,52 +971,54 @@ void sub_81AB9A8(u8 pocketId)
struct BagPocket *pocket = &gBagPockets[pocketId];
switch (pocketId)
{
- case 2:
- case 3:
+ case TMHM_POCKET:
+ case BERRIES_POCKET:
SortBerriesOrTMHMs(pocket);
break;
default:
CompactItemsInBagPocket(pocket);
break;
}
- gUnknown_0203CE54->unk829[pocketId] = 0;
+ gUnknown_0203CE54->numItemStacks[pocketId] = 0;
for (i = 0; i < pocket->capacity && pocket->itemSlots[i].itemId; i++)
- gUnknown_0203CE54->unk829[pocketId]++;
- if (!gUnknown_0203CE54->unk81B_2)
- gUnknown_0203CE54->unk829[pocketId]++;
- if (gUnknown_0203CE54->unk829[pocketId] > 8)
- gUnknown_0203CE54->unk82E[pocketId] = 8;
+ gUnknown_0203CE54->numItemStacks[pocketId]++;
+
+ if (!gUnknown_0203CE54->hideCloseBagText)
+ gUnknown_0203CE54->numItemStacks[pocketId]++;
+
+ if (gUnknown_0203CE54->numItemStacks[pocketId] > 8)
+ gUnknown_0203CE54->numShownItems[pocketId] = 8;
else
- gUnknown_0203CE54->unk82E[pocketId] = gUnknown_0203CE54->unk829[pocketId];
+ gUnknown_0203CE54->numShownItems[pocketId] = gUnknown_0203CE54->numItemStacks[pocketId];
}
void sub_81ABA6C(void)
{
u8 i;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < POCKETS_COUNT; i++)
sub_81AB9A8(i);
}
-void sub_81ABA88(u8 a)
+void SetInitialScrollAndCursorPositions(u8 pocketId)
{
- sub_812225C(&gUnknown_0203CE58.scrollPosition[a], &gUnknown_0203CE58.cursorPosition[a], gUnknown_0203CE54->unk82E[a], gUnknown_0203CE54->unk829[a]);
+ sub_812225C(&gUnknown_0203CE58.scrollPosition[pocketId], &gUnknown_0203CE58.cursorPosition[pocketId], gUnknown_0203CE54->numShownItems[pocketId], gUnknown_0203CE54->numItemStacks[pocketId]);
}
-void sub_81ABAC4(void)
+static void SetPocketListPositions(void)
{
u8 i;
- for (i = 0; i < 5; i++)
- sub_81ABA88(i);
+ for (i = 0; i < POCKETS_COUNT; i++)
+ SetInitialScrollAndCursorPositions(i);
}
void sub_81ABAE0(void)
{
u8 i;
- for (i = 0; i < 5; i++)
- sub_8122298(&gUnknown_0203CE58.scrollPosition[i], &gUnknown_0203CE58.cursorPosition[i], gUnknown_0203CE54->unk82E[i], gUnknown_0203CE54->unk829[i], 8);
+ for (i = 0; i < POCKETS_COUNT; i++)
+ sub_8122298(&gUnknown_0203CE58.scrollPosition[i], &gUnknown_0203CE58.cursorPosition[i], gUnknown_0203CE54->numShownItems[i], gUnknown_0203CE54->numItemStacks[i], 8);
}
-u8 sub_81ABB2C(u8 pocketId)
+u8 GetItemListPosition(u8 pocketId)
{
return gUnknown_0203CE58.scrollPosition[pocketId] + gUnknown_0203CE58.cursorPosition[pocketId];
}
@@ -1041,7 +1041,7 @@ void bag_menu_inits_lists_menu(u8 taskId)
bag_menu_RemoveBagItem_message_window(4);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
sub_81AB9A8(gUnknown_0203CE58.pocket);
- sub_81ABA88(gUnknown_0203CE58.pocket);
+ SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1055,7 +1055,7 @@ void sub_81ABC3C(u8 a)
void sub_81ABC54(u8 a, s16 b)
{
- u8 r3 = (gUnknown_0203CE58.pocket == 3) ? 3 : 2;
+ u8 r3 = (gUnknown_0203CE58.pocket == BERRIES_POCKET) ? 3 : 2;
ConvertIntToDecimalStringN(gStringVar1, b, 2, r3);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
AddTextPrinterParameterized(a, 1, gStringVar4, GetStringCenterAlignXOffset(1, gStringVar4, 0x28), 2, 0, 0);
@@ -1063,7 +1063,7 @@ void sub_81ABC54(u8 a, s16 b)
void sub_81ABCC0(int a, int b, int c)
{
- u8 r3 = (gUnknown_0203CE58.pocket == 3) ? 3 : 2;
+ u8 r3 = (gUnknown_0203CE58.pocket == BERRIES_POCKET) ? 3 : 2;
ConvertIntToDecimalStringN(gStringVar1, b, 2, r3);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
AddTextPrinterParameterized(a, 1, gStringVar4, 0, 1, -1, 0);
@@ -1092,7 +1092,7 @@ void Task_BagMenu(u8 taskId)
if (sub_81AC2C0() == 1)
{
ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
- if ((*scrollPos + *cursorPos) != gUnknown_0203CE54->unk829[gUnknown_0203CE58.pocket] - 1)
+ if ((*scrollPos + *cursorPos) != gUnknown_0203CE54->numItemStacks[gUnknown_0203CE58.pocket] - 1)
{
PlaySE(SE_SELECT);
bag_menu_swap_items(taskId);
@@ -1102,13 +1102,13 @@ void Task_BagMenu(u8 taskId)
}
else
{
- int r4 = ListMenuHandleInputGetItemId(data[0]);
+ int listPosition = ListMenuHandleInputGetItemId(data[0]);
ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
- switch (r4)
+ switch (listPosition)
{
- case -1:
+ case LIST_NOTHING_CHOSEN:
break;
- case -2:
+ case LIST_B_PRESSED:
if (gUnknown_0203CE58.location == 5)
{
PlaySE(SE_HAZURE);
@@ -1118,13 +1118,13 @@ void Task_BagMenu(u8 taskId)
gSpecialVar_ItemId = select;
gTasks[taskId].func = unknown_ItemMenu_Confirm;
break;
- default:
+ default: // A_BUTTON
PlaySE(SE_SELECT);
sub_81AB824();
bag_menu_print_cursor_(data[0], 2);
- data[1] = r4;
- data[2] = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, r4);
- gSpecialVar_ItemId = BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, r4);
+ data[1] = listPosition;
+ data[2] = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, listPosition);
+ gSpecialVar_ItemId = BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, listPosition);
gUnknown_08614054[gUnknown_0203CE58.location](taskId);
break;
}
@@ -1164,10 +1164,10 @@ u8 GetSwitchBagPocketDirection(void)
void ChangeBagPocketId(u8 *bagPocketId, s8 deltaBagPocketId)
{
- if (deltaBagPocketId == 1 && *bagPocketId == 4)
+ if (deltaBagPocketId == 1 && *bagPocketId == POCKETS_COUNT - 1)
*bagPocketId = 0;
else if (deltaBagPocketId == -1 && *bagPocketId == 0)
- *bagPocketId = 4;
+ *bagPocketId = POCKETS_COUNT - 1;
else
*bagPocketId += deltaBagPocketId;
}
@@ -1186,7 +1186,7 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
ClearWindowTilemap(1);
DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
schedule_bg_copy_tilemap_to_vram(0);
- gSprites[gUnknown_0203CE54->unk804[2 + (gUnknown_0203CE54->unk81B_1 ^ 1)]].invisible = TRUE;
+ gSprites[gUnknown_0203CE54->spriteId[2 + (gUnknown_0203CE54->unk81B_1 ^ 1)]].invisible = TRUE;
sub_81AB824();
}
pocketId = gUnknown_0203CE58.pocket;
@@ -1444,7 +1444,7 @@ void sub_81AC644(u8 unused)
default:
if (sub_81221AC() == TRUE || InUnionRoom() == TRUE)
{
- if (gUnknown_0203CE58.pocket == 4 || !sub_8122148(gSpecialVar_ItemId))
+ if (gUnknown_0203CE58.pocket == KEYITEMS_POCKET || !sub_8122148(gSpecialVar_ItemId))
{
gUnknown_0203CE54->unk820 = &gUnknown_08614046;
gUnknown_0203CE54->unk828 = 1;
@@ -1459,14 +1459,14 @@ void sub_81AC644(u8 unused)
{
switch (gUnknown_0203CE58.pocket)
{
- case 0:
+ case ITEMS_POCKET:
gUnknown_0203CE54->unk820 = &gUnknown_0203CE54->unk824;
gUnknown_0203CE54->unk828 = 4;
memcpy(&gUnknown_0203CE54->unk824, &gUnknown_0861402C, 4);
if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
gUnknown_0203CE54->unk824 = 6;
break;
- case 4:
+ case KEYITEMS_POCKET:
gUnknown_0203CE54->unk820 = &gUnknown_0203CE54->unk824;
gUnknown_0203CE54->unk828 = 4;
memcpy(&gUnknown_0203CE54->unk824, &gUnknown_08614030, 4);
@@ -1478,22 +1478,22 @@ void sub_81AC644(u8 unused)
gUnknown_0203CE54->unk824 = 7;
}
break;
- case 1:
+ case BALLS_POCKET:
gUnknown_0203CE54->unk820 = gUnknown_08614034;
gUnknown_0203CE54->unk828 = 4;
break;
- case 2:
+ case TMHM_POCKET:
gUnknown_0203CE54->unk820 = gUnknown_08614038;
gUnknown_0203CE54->unk828 = 4;
break;
- case 3:
+ case BERRIES_POCKET:
gUnknown_0203CE54->unk820 = gUnknown_0861403C;
gUnknown_0203CE54->unk828 = 6;
break;
}
}
}
- if (gUnknown_0203CE58.pocket == 2)
+ if (gUnknown_0203CE58.pocket == TMHM_POCKET)
{
ClearWindowTilemap(1);
PrintTMHMMoveData(gSpecialVar_ItemId);
@@ -1624,17 +1624,17 @@ bool8 sub_81ACDFC(s8 a)
void bag_menu_remove_some_window(void)
{
if (gUnknown_0203CE54->unk828 == 1)
- bag_menu_remove_window(0);
+ bag_menu_remove_window(0);
else if (gUnknown_0203CE54->unk828 == 2)
{
- bag_menu_remove_window(1);
+ bag_menu_remove_window(1);
}
else if (gUnknown_0203CE54->unk828 == 4)
{
- bag_menu_remove_window(2);
+ bag_menu_remove_window(2);
}
else
- bag_menu_remove_window(3);
+ bag_menu_remove_window(3);
}
void ItemMenu_UseOutOfBattle(u8 taskId)
@@ -1648,7 +1648,7 @@ void ItemMenu_UseOutOfBattle(u8 taskId)
{
FillWindowPixelBuffer(1, 0);
schedule_bg_copy_tilemap_to_vram(0);
- if (gUnknown_0203CE58.pocket != 3)
+ if (gUnknown_0203CE58.pocket != BERRIES_POCKET)
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
else
sub_80FDD10(taskId);
@@ -1744,7 +1744,7 @@ void Task_ActuallyToss(u8 taskId)
RemoveBagItem(gSpecialVar_ItemId, data[8]);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
sub_81AB9A8(gUnknown_0203CE58.pocket);
- sub_81ABA88(gUnknown_0203CE58.pocket);
+ SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1782,7 +1782,7 @@ void ItemMenu_Give(u8 taskId)
bag_menu_print_there_is_no_pokemon(taskId);
else
{
- gUnknown_0203CE54->unk0 = sub_81B7F60;
+ gUnknown_0203CE54->mainCallback2 = sub_81B7F60;
unknown_ItemMenu_Confirm(taskId);
}
}
@@ -1815,7 +1815,7 @@ void sub_81AD350(u8 taskId)
void ItemMenu_CheckTag(u8 taskId)
{
- gUnknown_0203CE54->unk0 = DoBerryTagScreen;
+ gUnknown_0203CE54->mainCallback2 = DoBerryTagScreen;
unknown_ItemMenu_Confirm(taskId);
}
@@ -1842,7 +1842,7 @@ void ItemMenu_UseInBattle(u8 taskId)
void bag_menu_mail_related(void)
{
- GoToBagMenu(12, 5, NULL);
+ GoToBagMenu(RETURN_LOCATION_UNCHANGED, POCKETS_COUNT, NULL);
}
void item_menu_type_2(u8 taskId)
@@ -1857,7 +1857,7 @@ void item_menu_type_2(u8 taskId)
StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeldHere);
DisplayItemMessage(taskId, 1, gStringVar4, sub_81AD350);
}
- else if (gUnknown_0203CE58.pocket != 4 && !ItemId_GetImportance(gSpecialVar_ItemId))
+ else if (gUnknown_0203CE58.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
{
unknown_ItemMenu_Confirm(taskId);
}
@@ -1871,7 +1871,7 @@ void item_menu_type_b(u8 taskId)
{
if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350);
- else if (gUnknown_0203CE58.pocket != 4 && !ItemId_GetImportance(gSpecialVar_ItemId))
+ else if (gUnknown_0203CE58.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
gTasks[taskId].func = unknown_ItemMenu_Confirm;
else
bag_menu_print_cant_be_held_msg(taskId);
@@ -2012,7 +2012,7 @@ void sub_81AD8C8(u8 taskId)
AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
sub_81AB9A8(gUnknown_0203CE58.pocket);
- sub_81ABA88(gUnknown_0203CE58.pocket);
+ SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
bag_menu_print_cursor_(data[0], 2);
@@ -2157,7 +2157,7 @@ void DoWallyTutorialBagMenu(void)
PrepareBagForWallyTutorial();
AddBagItem(ITEM_POTION, 1);
AddBagItem(ITEM_POKE_BALL, 1);
- GoToBagMenu(10, 0, SetCB2ToReshowScreenAfterMenu2);
+ GoToBagMenu(RETURN_LOCATION_BATTLE_2, ITEMS_POCKET, SetCB2ToReshowScreenAfterMenu2);
}
void Task_WallyTutorialBagMenu(u8 taskId)
@@ -2235,7 +2235,7 @@ void bag_menu_leave_maybe(void)
SetMainCallback2(CB2_ReturnToField);
}
-void bag_menu_print_pocket_names(u8 *pocketName1, u8 *pocketName2)
+void bag_menu_print_pocket_names(const u8 *pocketName1, const u8 *pocketName2)
{
struct WindowTemplate window = {0, 0, 0, 0, 0, 0, 0};
u16 windowId;
@@ -2252,7 +2252,7 @@ void bag_menu_print_pocket_names(u8 *pocketName1, u8 *pocketName2)
offset = GetStringCenterAlignXOffset(1, pocketName2, 0x40);
bag_menu_print(windowId, 1, pocketName2, offset + 0x40, 1, 0, 0, -1, 1);
}
- CpuCopy32((u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA), gUnknown_0203CE54->unk844, 0x400);
+ CpuCopy32((u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA), gUnknown_0203CE54->pocketNameBuffer, 0x400);
RemoveWindow(windowId);
}
@@ -2263,7 +2263,7 @@ void bag_menu_copy_pocket_name_to_window(u32 a)
int b;
if (a > 8)
a = 8;
- r4 = &gUnknown_0203CE54->unk844;
+ r4 = &gUnknown_0203CE54->pocketNameBuffer;
windowAttribute = (u8*)GetWindowAttribute(2, WINDOW_TILE_DATA);
CpuCopy32(r4[0][a], windowAttribute, 0x100);
b = a + 16;
@@ -2292,17 +2292,17 @@ void setup_bag_menu_textboxes(void)
void bag_menu_print(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 h)
{
- AddTextPrinterParameterized4(windowId, fontId, left, top, letterSpacing, lineSpacing, gUnknown_08614164[h], speed, str);
+ AddTextPrinterParameterized4(windowId, fontId, left, top, letterSpacing, lineSpacing, sFontColorTable[h], speed, str);
}
u8 sub_81AE124(u8 a)
{
- return gUnknown_0203CE54->unk810[a];
+ return gUnknown_0203CE54->windowPointers[a];
}
u8 bag_menu_add_window(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->unk810[a];
+ u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr == 0xFF)
{
*ptr = AddWindow(&gUnknown_086141AC[a]);
@@ -2314,7 +2314,7 @@ u8 bag_menu_add_window(u8 a)
void bag_menu_remove_window(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->unk810[a];
+ u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr != 0xFF)
{
sub_8198070(*ptr, 0);
@@ -2327,7 +2327,7 @@ void bag_menu_remove_window(u8 a)
u8 AddItemMessageWindow(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->unk810[a];
+ u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr == 0xFF)
*ptr = AddWindow(&gUnknown_086141AC[a]);
return *ptr;
@@ -2335,7 +2335,7 @@ u8 AddItemMessageWindow(u8 a)
void bag_menu_RemoveBagItem_message_window(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->unk810[a];
+ u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr != 0xFF)
{
sub_8197DF8(*ptr, 0);
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
index c68e1d29e..669195b33 100644
--- a/src/item_menu_icons.c
+++ b/src/item_menu_icons.c
@@ -1,14 +1,14 @@
#include "global.h"
-#include "sprite.h"
+#include "berry.h"
#include "decompress.h"
+#include "graphics.h"
+#include "item.h"
#include "item_menu.h"
#include "item_icon.h"
#include "item_menu_icons.h"
-#include "window.h"
#include "menu_helpers.h"
-#include "berry.h"
-#include "graphics.h"
-#include "item.h"
+#include "sprite.h"
+#include "window.h"
#include "constants/items.h"
struct CompressedTilesPal
@@ -199,7 +199,7 @@ static const struct SpritePalette gUnknown_0857FBA8 =
gUnknown_0857F564, 101
};
-static const struct SpriteTemplate gUnknown_0857FBB0 =
+static const struct SpriteTemplate gSpriteTemplate_RotatingBall =
{
.tileTag = 101,
.paletteTag = 101,
@@ -409,7 +409,7 @@ static const struct SpriteTemplate gUnknown_0857FE10 =
// code
void RemoveBagSprite(u8 id)
{
- u8 *spriteId = &gUnknown_0203CE54->unk804[id];
+ u8 *spriteId = &gUnknown_0203CE54->spriteId[id];
if (*spriteId != 0xFF)
{
FreeSpriteTilesByTag(id + 100);
@@ -422,14 +422,14 @@ void RemoveBagSprite(u8 id)
void AddBagVisualSprite(u8 bagPocketId)
{
- u8 *spriteId = &gUnknown_0203CE54->unk804[0];
+ u8 *spriteId = &gUnknown_0203CE54->spriteId[0];
*spriteId = CreateSprite(&gUnknown_0857FB4C, 68, 66, 0);
SetBagVisualPocketId(bagPocketId, FALSE);
}
void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets)
{
- struct Sprite *sprite = &gSprites[gUnknown_0203CE54->unk804[0]];
+ struct Sprite *sprite = &gSprites[gUnknown_0203CE54->spriteId[0]];
if (isSwitchingPockets)
{
sprite->pos2.y = -5;
@@ -458,7 +458,7 @@ static void SpriteCB_BagVisualSwitchingPockets(struct Sprite *sprite)
void ShakeBagVisual(void)
{
- struct Sprite *sprite = &gSprites[gUnknown_0203CE54->unk804[0]];
+ struct Sprite *sprite = &gSprites[gUnknown_0203CE54->spriteId[0]];
if (sprite->affineAnimEnded)
{
StartSpriteAffineAnim(sprite, 1);
@@ -477,10 +477,10 @@ static void SpriteCB_ShakeBagVisual(struct Sprite *sprite)
void AddSwitchPocketRotatingBallSprite(s16 rotationDirection)
{
- u8 *spriteId = &gUnknown_0203CE54->unk804[1];
+ u8 *spriteId = &gUnknown_0203CE54->spriteId[1];
LoadSpriteSheet(&gUnknown_0857FBA0);
LoadSpritePalette(&gUnknown_0857FBA8);
- *spriteId = CreateSprite(&gUnknown_0857FBB0, 16, 16, 0);
+ *spriteId = CreateSprite(&gSpriteTemplate_RotatingBall, 16, 16, 0);
gSprites[*spriteId].data[0] = rotationDirection;
}
@@ -515,7 +515,7 @@ static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite)
void AddBagItemIconSprite(u16 itemId, u8 id)
{
- u8 *spriteId = &gUnknown_0203CE54->unk804[id + 2];
+ u8 *spriteId = &gUnknown_0203CE54->spriteId[id + 2];
if (*spriteId == 0xFF)
{
u8 iconSpriteId;
@@ -539,17 +539,17 @@ void RemoveBagItemIconSprite(u8 id)
void sub_80D4FAC(void)
{
- sub_8122344(&gUnknown_0203CE54->unk804[4], 8);
+ sub_8122344(&gUnknown_0203CE54->spriteId[4], 8);
}
void sub_80D4FC8(u8 arg0)
{
- sub_81223FC(&gUnknown_0203CE54->unk804[4], 8, arg0);
+ sub_81223FC(&gUnknown_0203CE54->spriteId[4], 8, arg0);
}
void sub_80D4FEC(u8 arg0)
{
- sub_8122448(&gUnknown_0203CE54->unk804[4], 136, 120, (arg0 + 1) * 16);
+ sub_8122448(&gUnknown_0203CE54->spriteId[4], 136, 120, (arg0 + 1) * 16);
}
static void sub_80D5018(void *mem0, void *mem1)
diff --git a/src/item_use.c b/src/item_use.c
index 4ab9f6e23..f82071a17 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -10,7 +10,7 @@
#include "fieldmap.h"
#include "event_object_movement.h"
#include "field_player_avatar.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "field_weather.h"
#include "item.h"
#include "item_menu.h"
@@ -38,7 +38,7 @@
#include "constants/vars.h"
extern void(*gUnknown_0203A0F4)(u8 taskId);
-extern void (*gUnknown_03006328)(u8, u16, TaskFunc);
+extern void (*gUnknown_03006328)(u8, TaskFunc);
extern void unknown_ItemMenu_Confirm(u8 taskId);
extern void sub_81C5B14(u8 taskId);
extern void ScriptUnfreezeEventObjects(void);
@@ -52,12 +52,11 @@ extern u8 BattleFrontier_OutsideEast_EventScript_242CFC[];
extern int sub_80247BC(void);
extern struct MapHeader* mapconnection_get_mapheader(struct MapConnection *connection);
extern void SetUpItemUseCallback(u8 taskId);
-extern void ItemUseCB_Medicine(u8, u16, TaskFunc);
+extern void ItemUseCB_Medicine(u8, TaskFunc);
extern void bag_menu_yes_no(u8, u8, const struct YesNoFuncTable*);
extern void sub_81C5924(void);
extern void sub_81C59BC(void);
extern void sub_81AB9A8(u8);
-extern void sub_81ABA88(u8);
extern void StartEscapeRopeFieldEffect(void);
extern u8* sub_806CF78(u16);
extern void sub_81B89F0(void);
@@ -128,7 +127,7 @@ void SetUpItemUseCallback(u8 taskId)
type = ItemId_GetType(gSpecialVar_ItemId) - 1;
if (!InBattlePyramid())
{
- gUnknown_0203CE54->unk0 = gUnknown_085920D8[type];
+ gUnknown_0203CE54->mainCallback2 = gUnknown_085920D8[type];
unknown_ItemMenu_Confirm(taskId);
}
else
@@ -212,7 +211,7 @@ void sub_80FD254(void)
void ItemUseOutOfBattle_Mail(u8 taskId)
{
- gUnknown_0203CE54->unk0 = sub_80FD254;
+ gUnknown_0203CE54->mainCallback2 = sub_80FD254;
unknown_ItemMenu_Confirm(taskId);
}
@@ -608,7 +607,7 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId)
}
else if (gTasks[taskId].data[3] != TRUE)
{
- gUnknown_0203CE54->unk0 = sub_80FDBEC;
+ gUnknown_0203CE54->mainCallback2 = sub_80FDBEC;
unknown_ItemMenu_Confirm(taskId);
}
else
@@ -670,7 +669,7 @@ void sub_80FDD10(u8 taskId)
{
gUnknown_0203A0F4 = sub_80FDD74;
gFieldCallback = MapPostLoadHook_UseItem;
- gUnknown_0203CE54->unk0 = CB2_ReturnToField;
+ gUnknown_0203CE54->mainCallback2 = CB2_ReturnToField;
unknown_ItemMenu_Confirm(taskId);
}
else
@@ -812,7 +811,7 @@ void sub_80FE058(void)
if (!InBattlePyramid())
{
sub_81AB9A8(ItemId_GetPocket(gSpecialVar_ItemId));
- sub_81ABA88(ItemId_GetPocket(gSpecialVar_ItemId));
+ SetInitialScrollAndCursorPositions(ItemId_GetPocket(gSpecialVar_ItemId));
}
else
{
@@ -993,7 +992,7 @@ void sub_80FE54C(u8 taskId)
{
if (!InBattlePyramid())
{
- gUnknown_0203CE54->unk0 = sub_81B89F0;
+ gUnknown_0203CE54->mainCallback2 = sub_81B89F0;
unknown_ItemMenu_Confirm(taskId);
}
else
diff --git a/src/learn_move.c b/src/learn_move.c
index 4e02cedd3..4db83861e 100644
--- a/src/learn_move.c
+++ b/src/learn_move.c
@@ -5,7 +5,7 @@
#include "contest_effect.h"
#include "data2.h"
#include "event_data.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "gpu_regs.h"
#include "learn_move.h"
#include "list_menu.h"
@@ -52,7 +52,7 @@ static EWRAM_DATA struct {
const u16 gUnknown_085CE9F8[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal");
const u8 gUnknown_085CEA18[] = INCBIN_U8("graphics/interface/ui_learn_move.4bpp");
-const struct OamData gUnknown_085CEB98 =
+const struct OamData gUnknown_085CEB98 =
{
.y = 0,
.affineMode = 0,
@@ -69,7 +69,7 @@ const struct OamData gUnknown_085CEB98 =
.affineParam = 0,
};
-const struct OamData gUnknown_085CEBA0 =
+const struct OamData gUnknown_085CEBA0 =
{
.y = 0,
.affineMode = 0,
@@ -86,7 +86,7 @@ const struct OamData gUnknown_085CEBA0 =
.affineParam = 0,
};
-const struct OamData gUnknown_085CEBA8 =
+const struct OamData gUnknown_085CEBA8 =
{
.y = 0,
.affineMode = 0,
@@ -103,20 +103,20 @@ const struct OamData gUnknown_085CEBA8 =
.affineParam = 0,
};
-const struct SpriteSheet gUnknown_085CEBB0 =
+const struct SpriteSheet gUnknown_085CEBB0 =
{
.data = gUnknown_085CEA18,
.size = 0x180,
.tag = 5525
};
-const struct SpritePalette gUnknown_085CEBB8 =
+const struct SpritePalette gUnknown_085CEBB8 =
{
.data = gUnknown_085CE9F8,
.tag = 5526
};
-const struct ScrollArrowsTemplate gUnknown_085CEBC0 =
+const struct ScrollArrowsTemplate gUnknown_085CEBC0 =
{
.firstArrowType = 0,
.firstX = 27,
@@ -131,7 +131,7 @@ const struct ScrollArrowsTemplate gUnknown_085CEBC0 =
.palNum = 0,
};
-const struct ScrollArrowsTemplate gUnknown_085CEBD0 =
+const struct ScrollArrowsTemplate gUnknown_085CEBD0 =
{
.firstArrowType = 2,
.firstX = 192,
@@ -146,31 +146,31 @@ const struct ScrollArrowsTemplate gUnknown_085CEBD0 =
.palNum = 0,
};
-const union AnimCmd gUnknown_085CEBE0[] =
+const union AnimCmd gUnknown_085CEBE0[] =
{
ANIMCMD_FRAME(8, 5, FALSE, FALSE),
ANIMCMD_END
};
-const union AnimCmd gUnknown_085CEBE8[] =
+const union AnimCmd gUnknown_085CEBE8[] =
{
ANIMCMD_FRAME(9, 5, FALSE, FALSE),
ANIMCMD_END
};
-const union AnimCmd gUnknown_085CEBF0[] =
+const union AnimCmd gUnknown_085CEBF0[] =
{
ANIMCMD_FRAME(10, 5, FALSE, FALSE),
ANIMCMD_END
};
-const union AnimCmd gUnknown_085CEBF8[] =
+const union AnimCmd gUnknown_085CEBF8[] =
{
ANIMCMD_FRAME(11, 5, FALSE, FALSE),
ANIMCMD_END
};
-const union AnimCmd *const gUnknown_085CEC00[] =
+const union AnimCmd *const gUnknown_085CEC00[] =
{
gUnknown_085CEBE0,
gUnknown_085CEBE8,
@@ -178,7 +178,7 @@ const union AnimCmd *const gUnknown_085CEC00[] =
gUnknown_085CEBF8,
};
-const struct SpriteTemplate gUnknown_085CEC10 =
+const struct SpriteTemplate gUnknown_085CEC10 =
{
.tileTag = 5525,
.paletteTag = 5526,
@@ -707,7 +707,7 @@ static void CreateHearts(void)
sLearnMoveStruct->scrollArrowTaskId2 = -1;
sLearnMoveStruct->scrollArrowTaskId1 = -1;
AddScrollArrows();
-
+
for (i = 0; i < 8; i++)
{
sLearnMoveStruct->spriteIds[i] = CreateSprite(&gUnknown_085CEC10, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 36, 0);
@@ -791,7 +791,7 @@ void ShowHideHearts(s32 item)
else
{
numHearts = (u8)(gContestEffects[gContestMoves[item].effect].appeal / 10);
-
+
if (numHearts == 0xFF)
{
numHearts = 0;
@@ -811,7 +811,7 @@ void ShowHideHearts(s32 item)
}
numHearts = (u8)(gContestEffects[gContestMoves[item].effect].jam / 10);
-
+
if (numHearts == 0xFF)
{
numHearts = 0;
diff --git a/src/load_save.c b/src/load_save.c
index 8ecf89959..963626428 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -3,6 +3,7 @@
#include "load_save.h"
#include "main.h"
#include "pokemon.h"
+#include "pokemon_storage_system.h"
#include "random.h"
#include "alloc.h"
#include "item.h"
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 110ec068e..930f1f35b 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -62,14 +62,14 @@ static const u8 * const sGiddyAdjectives[] = {
};
static const u8 * const sGiddyQuestions[] = {
- gUnknown_08294313,
- gUnknown_08294359,
- gUnknown_08294398,
- gUnknown_082943DA,
- gUnknown_0829441C,
- gUnknown_08294460,
- gUnknown_082944A0,
- gUnknown_082944D5
+ gMauvilleManText_ISoWantToGoOnAVacation,
+ gMauvilleManText_IBoughtCrayonsWith120Colors,
+ gMauvilleManText_WouldntItBeNiceIfWeCouldFloat,
+ gMauvilleManText_WhenYouWriteOnASandyBeach,
+ gMauvilleManText_WhatsTheBottomOfTheSeaLike,
+ gMauvilleManText_WhenYouSeeTheSettingSunDoesIt,
+ gMauvilleManText_LyingBackInTheGreenGrass,
+ gMauvilleManText_SecretBasesAreSoWonderful
};
static void SetupBard(void)
diff --git a/src/normal.c b/src/normal.c
index 3de8b1157..95c99d29e 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -410,8 +410,8 @@ void sub_81159B4(struct Sprite *sprite)
sprite->data[3] = 40;
sprite->data[4] = 112;
sprite->data[5] = 0;
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
- sprite->callback = sub_80A634C;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = TranslateSpriteInGrowingCircleOverDuration;
sprite->callback(sprite);
}
@@ -880,11 +880,11 @@ void sub_8116388(struct Sprite *sprite)
{
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
if (gBattleAnimArgs[2] == 0)
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
else
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
- sprite->callback = sub_80A67BC;
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -892,12 +892,12 @@ static void sub_81163D0(struct Sprite *sprite)
{
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
if (gBattleAnimArgs[2] == 0)
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
else
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->callback = sub_80A67BC;
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
StoreSpriteCallbackInData6(sprite, sub_810E2C8);
}
@@ -916,15 +916,15 @@ void sub_8116458(struct Sprite *sprite)
StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]);
if (gBattleAnimArgs[0] == 0)
- InitAnimSpritePos(sprite, 0);
+ InitSpritePosToAnimAttacker(sprite, 0);
else
- sub_80A6980(sprite, FALSE);
+ InitSpritePosToAnimTarget(sprite, FALSE);
sprite->pos2.x += (Random2() % 48) - 24;
sprite->pos2.y += (Random2() % 24) - 12;
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
- sprite->callback = sub_80A67BC;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
}
void sub_81164F0(struct Sprite *sprite)
@@ -935,16 +935,16 @@ void sub_81164F0(struct Sprite *sprite)
sprite->pos2.x = gBattleAnimArgs[1];
sprite->pos2.y = gBattleAnimArgs[2];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
- sprite->callback = sub_80A67BC;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
}
void sub_8116560(struct Sprite *sprite)
{
if (gBattleAnimArgs[2] == 0)
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
else
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[3];
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
@@ -955,9 +955,9 @@ void sub_81165A8(struct Sprite *sprite)
{
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
if (gBattleAnimArgs[2] == 0)
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
else
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
sprite->callback = sub_81165E4;
}
diff --git a/src/overworld.c b/src/overworld.c
index b2c7ad963..27bd0425a 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -4,18 +4,17 @@
#include "battle_setup.h"
#include "berry.h"
#include "bg.h"
-// #include "cable_club.h"
+#include "cable_club.h"
#include "clock.h"
#include "event_data.h"
#include "field_camera.h"
#include "field_control_avatar.h"
#include "field_effect.h"
-#include "field_fadetransition.h"
#include "event_object_movement.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
-// #include "field_special_scene.h"
+#include "field_special_scene.h"
#include "field_specials.h"
#include "field_tasks.h"
#include "field_weather.h"
@@ -38,7 +37,7 @@
#include "play_time.h"
#include "random.h"
#include "roamer.h"
-// #include "rotating_gate.h"
+#include "rotating_gate.h"
#include "safari_zone.h"
#include "save.h"
#include "save_location.h"
@@ -129,7 +128,7 @@ extern void sub_80A0A38(void);
extern void trainer_hill_map_load_related(void);
extern void sub_8087D74(void);
extern void battle_pyramid_map_load_related(u8);
-extern void sub_80B00E8(u8);
+extern void WriteFlashScanlineEffectBuffer(u8);
extern void sub_80E9238(u8);
extern void sub_81AA2F8(void);
extern void sub_8195E10(void);
@@ -148,7 +147,6 @@ extern void ResetAllPicSprites(void);
extern void FieldEffectActiveListClear(void);
extern void SetUpFieldTasks(void);
extern void sub_81BE6B8(void);
-extern void sub_80AAFA4(void);
extern void ShowStartMenu(void);
extern void sub_80AEE84(void);
extern void mapldr_default(void);
@@ -1277,7 +1275,7 @@ u8 GetMapMusicFadeoutSpeed(void)
return 4;
}
-void music_something(void)
+void TryFadeOutOldMapMusic(void)
{
u16 currentMusic = GetCurrentMapMusic();
u16 warpMusic = GetWarpDestinationMusic();
@@ -1855,7 +1853,7 @@ static void InitCurrentFlashLevelScanlineEffect(void)
}
else if ((flashLevel = Overworld_GetFlashLevel()))
{
- sub_80B00E8(flashLevel);
+ WriteFlashScanlineEffectBuffer(flashLevel);
ScanlineEffect_SetParams(sFlashEffectParams);
}
}
@@ -2196,7 +2194,7 @@ static void sub_8086988(u32 a1)
InitEventObjectPalettes(1);
FieldEffectActiveListClear();
- sub_80AAFA4();
+ StartWeather();
sub_80AEE84();
if (!a1)
SetUpFieldTasks();
diff --git a/src/party_menu.c b/src/party_menu.c
new file mode 100755
index 000000000..6e12dcbf3
--- /dev/null
+++ b/src/party_menu.c
@@ -0,0 +1,7164 @@
+#include "global.h"
+#include "alloc.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "battle_controllers.h"
+#include "battle_gfx_sfx_util.h"
+#include "battle_interface.h"
+#include "battle_pike.h"
+#include "battle_pyramid.h"
+#include "battle_pyramid_bag.h"
+#include "bg.h"
+#include "contest.h"
+#include "data2.h"
+#include "decompress.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "evolution_scene.h"
+#include "field_control_avatar.h"
+#include "field_effect.h"
+#include "field_player_avatar.h"
+#include "field_screen_effect.h"
+#include "field_specials.h"
+#include "field_weather.h"
+#include "fieldmap.h"
+#include "fldeff_softboiled.h"
+#include "frontier_util.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "international_string_util.h"
+#include "item.h"
+#include "item_menu.h"
+#include "item_use.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "mail.h"
+#include "main.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "metatile_behavior.h"
+#include "overworld.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pokemon.h"
+#include "pokemon_icon.h"
+#include "pokemon_storage_system.h"
+#include "pokemon_summary_screen.h"
+#include "pokenav.h"
+#include "region_map.h"
+#include "reshow_battle_screen.h"
+#include "rom_8011DC0.h"
+#include "scanline_effect.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "start_menu.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text.h"
+#include "text_window.h"
+#include "trade.h"
+#include "window.h"
+#include "constants/battle.h"
+#include "constants/battle_frontier.h"
+#include "constants/field_effects.h"
+#include "constants/flags.h"
+#include "constants/items.h"
+#include "constants/maps.h"
+#include "constants/moves.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/vars.h"
+
+enum {
+ CAN_LEARN_MOVE,
+ CANNOT_LEARN_MOVE,
+ ALREADY_KNOWS_MOVE,
+ CANNOT_LEARN_MOVE_IS_EGG
+};
+
+struct Unk_Rodata1 {
+ void (*unk0)(u8, u8, u8, u8, u8, u8);
+ u8 unk4[24];
+ u8 unk1C;
+ u8 unk1D;
+ u8 unk1E;
+ u8 unk1F;
+};
+
+struct Struct203CEC4 {
+ TaskFunc unk0;
+ MainCallback exitCallback;
+ u32 unk8_0:1;
+ u32 unk8_1:3;
+ u32 unk8_2:7;
+ u32 unk9_0:7;
+ u32 unkA_0:14;
+ u8 unkC[3];
+ u8 unkF[8];
+ u8 unk17;
+ u16 palBuffer[0xB0];
+ u8 filler[0xA0];
+ s16 data[16];
+};
+
+struct Struct203CEDC {
+ struct Unk_Rodata1 *unk0;
+ u8 *unk4;
+ u8 windowId;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+ u8 unkC;
+};
+
+struct Struct8615C08 {
+ const u8 *textPtr;
+ TaskFunc func;
+};
+
+struct Struct8615D9C {
+ bool8 (*fieldMoveFunc)(void);
+ u8 msgID;
+};
+
+EWRAM_DATA struct Struct203CEC4 *gUnknown_0203CEC4 = NULL;
+EWRAM_DATA struct Struct203CEC8 gUnknown_0203CEC8 = {0};
+EWRAM_DATA struct Struct203CEDC *gUnknown_0203CEDC = NULL;
+EWRAM_DATA u8 *gUnknown_0203CEE0 = NULL;
+EWRAM_DATA u8 *gUnknown_0203CEE4 = NULL;
+EWRAM_DATA u8 gUnknown_0203CEE8 = 0;
+EWRAM_DATA u8 gUnknown_0203CEE9 = 0;
+EWRAM_DATA MainCallback gPostMenuFieldCallback = NULL;
+EWRAM_DATA u16 *gUnknown_0203CEF0 = 0;
+EWRAM_DATA u16 *gUnknown_0203CEF4 = 0;
+EWRAM_DATA u8 gSelectedOrderFromParty[4] = {0};
+EWRAM_DATA u16 gUnknown_0203CEFC = 0;
+EWRAM_DATA u16 gUnknown_0203CEFE = 0; // unused
+EWRAM_DATA u8 gUnknown_0203CF00[3] = {0};
+
+// BELOW TO BE CONVERTED TO C
+
+extern u32 gUnknown_08615048[]; // tutor compatibility table
+extern struct BgTemplate gUnknown_086156B8[];
+extern struct Unk_Rodata1 gUnknown_086156C4[2];
+// extern struct Unk_Rodata1 gUnknown_086156E4;
+extern u8 gUnknown_08615704[][6][8];
+extern u8 gUnknown_086157C4[];
+extern u8 gUnknown_086157E0[];
+extern const u8 gUnknown_086157FC[][3];
+extern struct WindowTemplate gUnknown_08615810[];
+extern struct WindowTemplate gUnknown_08615850[];
+extern struct WindowTemplate gUnknown_086158D0[];
+extern struct WindowTemplate gUnknown_08615890[];
+extern struct WindowTemplate gUnknown_08615908;
+extern struct WindowTemplate gUnknown_08615910;
+extern struct WindowTemplate gUnknown_08615918;
+extern struct WindowTemplate gUnknown_08615920;
+extern struct WindowTemplate gUnknown_08615928;
+extern struct WindowTemplate gUnknown_08615930;
+extern struct WindowTemplate gUnknown_08615938;
+extern struct WindowTemplate gUnknown_08615940;
+extern struct WindowTemplate gUnknown_08615948;
+extern struct WindowTemplate gUnknown_08615950;
+extern struct WindowTemplate gUnknown_08615958;
+extern struct WindowTemplate gUnknown_08615960;
+extern struct WindowTemplate gUnknown_08615968;
+extern struct WindowTemplate gUnknown_08615970;
+extern u8 gUnknown_08615988[];
+extern u8 gUnknown_086159CE[];
+extern u8 gUnknown_08615A14[];
+extern u8 gUnknown_08615A4A[];
+extern u8 gUnknown_08615A80[];
+extern u8 gUnknown_08615AB6[];
+extern u8 gUnknown_08615AB8[];
+extern u8 gUnknown_08615ABA[];
+extern u8 gUnknown_08615ABD[];
+extern u8 gUnknown_08615AC0[];
+extern u8 gUnknown_08615AC3[];
+extern u8 gUnknown_08615AC5[];
+extern u8 gUnknown_08615AC7[];
+extern u8 gUnknown_08615AC9[];
+extern u8 gUnknown_08615ACB[];
+extern u8 gUnknown_08615ACD[];
+extern u8 gUnknown_08615AD0[];
+extern u8 gUnknown_08615AD3[];
+extern u8 gUnknown_08615AD6[];
+extern u8 gUnknown_08615AD9[];
+extern u8 gUnknown_08615ADC[];
+extern u8 gUnknown_08615ADF[];
+extern u8 gUnknown_08615AE2[];
+extern u8 gUnknown_08615AE5[];
+extern u8 gUnknown_08615AE8[];
+extern u8 gUnknown_08615AEB[];
+extern u8 gUnknown_08615AEE[];
+extern u8 gUnknown_08615AF1[];
+extern const u8 *gUnknown_08615AF4[];
+extern const u8 *gUnknown_08615B60[];
+extern struct Struct8615C08 gUnknown_08615C08[];
+extern u8 *gUnknown_08615D38[];
+extern u8 gUnknown_08615D70[];
+extern const u16 gUnknown_08615D7E[];
+extern const struct Struct8615D9C gUnknown_08615D9C[];
+extern const u8 *gUnknown_08615E0C[];
+extern const struct SpriteSheet gUnknown_08615EB0;
+extern const struct SpritePalette gUnknown_08615EB8;
+extern struct SpriteTemplate gSpriteTemplate_8615EC0;
+extern const struct CompressedSpriteSheet gUnknown_08615EF8;
+extern const struct CompressedSpritePalette gUnknown_08615F00;
+extern struct SpriteTemplate gSpriteTemplate_8615F08;
+extern const struct CompressedSpriteSheet gUnknown_08615F70;
+extern struct SpriteTemplate gSpriteTemplate_8615F78;
+extern const struct CompressedSpriteSheet gUnknown_08615FF8;
+extern const struct CompressedSpritePalette gUnknown_08616000;
+extern struct SpriteTemplate gSpriteTemplate_8616008;
+extern u8 gUnknown_08616020[];
+extern u16 gUnknown_08616040[];
+
+// ABOVE TO BE CONVERTED TO C
+
+extern void (*gUnknown_03006328)(u8, TaskFunc);
+
+void reset_brm(void);
+void PartyMenuInitCallback(void);
+bool8 PartyMenuSetup(void);
+void sub_81B209C(void);
+void PartyMenuExit(void);
+bool8 AllocPartyMenuBg(void);
+bool8 AllocPartyMiscGfx(void);
+void sub_81B239C(u8);
+void PartyMenuInitHelperStructs(u8);
+void LoadHeldItemIcons(void);
+void LoadPartyMenuPokeballGfx(void);
+void LoadPartyMenuAilmentGfx(void);
+bool8 party_menu_add_per_mon_objects(void);
+bool8 RenderPartyMenuBoxes(void);
+void sub_81B0F28(void);
+void sub_81B2428(u8);
+void display_pokemon_menu_message(u32);
+void PartyMenuExitTask(u8);
+void FreePartyPointers(void);
+void PartyPaletteBufferCopy(u8);
+void sub_81B0CEC(u8);
+void UpdateSelectedPartyBox(struct Struct203CEDC *, u8);
+void sub_81B2720(u8);
+void DisplayPartyPokemonSelectForRelearner(u8);
+void DisplayPartyPokemonSelectForContest(u8);
+void DisplayPartyPokemonSelectForBattle(u8);
+void sub_81B0B98(u8);
+void DisplayPartyPokemonSelectHeldItemRelated(u8);
+bool8 sub_81B0BFC(u8);
+void DisplayPartyPokemonData(u8);
+void sub_81B0FCC(u8, u8);
+void DisplayPartyPokemonNickname(struct Pokemon *, struct Struct203CEDC *, u8);
+void DisplayPartyPokemonLevelCheck(struct Pokemon *, struct Struct203CEDC *, u8);
+void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *, struct Struct203CEDC *, u8);
+void DisplayPartyPokemonHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
+void DisplayPartyPokemonMaxHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
+void DisplayPartyPokemonHPBarCheck(struct Pokemon *, struct Struct203CEDC *);
+void DisplayPartyPokemonOtherText(u8, struct Struct203CEDC *, u8);
+u8 sub_81B8830(void);
+bool8 GetBattleEntryEligibility(struct Pokemon *);
+bool8 sub_81B218C(u8);
+void DisplayPartyPokemonSelectToTeachMove(u8, u16, u8);
+u8 CanPartyPokemonLearnTMTutor(struct Pokemon *, u16, u8);
+void DisplayPartyPokemonBarDetail(u8, const u8*, u8, u8*);
+void DisplayPartyPokemonLevel(u8, struct Struct203CEDC *);
+void DisplayPartyPokemonGender(u8, u16, u8*, struct Struct203CEDC *);
+void DisplayPartyPokemonHP(u16, struct Struct203CEDC *);
+void DisplayPartyPokemonMaxHP(u16, struct Struct203CEDC *);
+void DisplayPartyPokemonHPBar(u16, u16, struct Struct203CEDC *);
+void party_menu_link_mon_icon_anim(u16, u32, struct Struct203CEDC *, u8, u32);
+void party_menu_link_mon_held_item_object(u16, u16, struct Struct203CEDC *);
+void party_menu_link_mon_pokeball_object(u16, struct Struct203CEDC *);
+void party_menu_link_mon_status_condition_object(u16, u8, struct Struct203CEDC *);
+void party_menu_held_item_object(struct Pokemon *, struct Struct203CEDC *);
+void party_menu_pokeball_object(struct Pokemon *, struct Struct203CEDC *);
+void party_menu_icon_anim(struct Pokemon *, struct Struct203CEDC *, u32);
+void party_menu_status_condition_object(struct Pokemon *, struct Struct203CEDC *);
+u8 sub_81B5F74(u8, u8);
+void sub_81B120C(void);
+u8 sub_81B5F34(u8, u8);
+void AnimateSelectedPartyIcon(u8, u8);
+void sub_81B5F98(u8, u8);
+u8 GetPartyBoxPalBitfield(u8, u8);
+bool8 PartyBoxPal_ParnterOrDisqualifiedInArena(u8);
+u8 sub_81B8F38(u8);
+void c3_0811FAB4(u8);
+void sub_81B9080(void);
+void sub_81B4F88(void);
+void sub_81B15D0(u8, s8*);
+void sub_81B140C(u8, s8*);
+u16 PartyMenuButtonHandler(s8*);
+s8* sub_81B13EC(void);
+bool8 sub_81B15A4(u8*);
+void sub_81B302C(u8*);
+void sub_81B9140(void);
+void sub_81B6794(u8);
+void sub_81B7E4C(u8);
+void sub_81B8474(u8);
+void sub_81B7FAC(u8);
+void sub_81B3938(u8);
+void sub_81B21AC(u8, u8);
+void sub_81B36FC(u8);
+void sub_81B407C(u8);
+void sub_81B2210(u8);
+bool8 sub_81B1660(u8);
+const u8* sub_81B88BC(void);
+u8 sub_81B1B5C(const u8*, u8);
+void sub_81B16D4(u8);
+void sub_81B334C(void);
+void sub_81B1708(u8);
+bool8 sub_81B1BD4(void);
+void sub_81B1C1C(u8);
+void sub_81B8558(void);
+void UpdateCurrentPartySelection(s8*, s8);
+void SetNewPartySelectTarget1(s8*, s8);
+void SetNewPartySelectTarget2(s8*, s8);
+s8 sub_81B1B00(s8, s8);
+void sub_81B3300(const u8*);
+void sub_81B1B8C(u8);
+void DisplayPartyPokemonHPCheck(struct Pokemon*, struct Struct203CEDC*, u8);
+void DisplayPartyPokemonHPBarCheck(struct Pokemon*, struct Struct203CEDC*);
+bool16 sub_81B2134(struct Pokemon*);
+bool16 sub_81B2164(struct Pokemon*);
+void sub_81B2248(u8);
+void sub_81B227C(u8);
+bool8 sub_81B2370(u16, u8);
+u16 sub_81B2360(u8);
+bool8 sub_81B314C(void);
+void sub_81B3414(struct Pokemon*, u8);
+u8 sub_81B8A2C(struct Pokemon*);
+u8 sub_81B856C(s8);
+void sub_81B469C(u8);
+void sub_81B3730(u8);
+void sub_81B3828(void);
+void pokemon_change_order(void);
+void sub_81B3894(void);
+void sub_81B3CC0(u8);
+void sub_81B3D48(u8);
+void swap_pokemon_and_oams(void);
+void sub_81B3E60(u8);
+void sub_81B41C4(void);
+void c2_8123744(void);
+void sub_81B452C(void);
+void sub_81B4350(u8);
+void sub_81B42D0(u8);
+void sub_81B43A8(u8);
+void sub_81B43DC(u8);
+void sub_81B44FC(u8);
+void sub_81B4578(void);
+void sub_81B4624(u8);
+void sub_81B5C94(struct Pokemon*, struct Struct203CEDC*);
+void sub_81B48A8(u8);
+void sub_81B48DC(u8);
+void sub_81B4988(u8);
+void sub_81B4A98(void);
+void sub_81B4AE0(void);
+void sub_81B4B6C(u8);
+void sub_81B4BA0(u8);
+void sub_81B4C60(u8);
+void sub_81B4C94(u8);
+bool8 sub_81B8A7C(void);
+void sub_81B53FC(u8);
+void sub_81B5430(u8);
+void task_brm_cancel_1_on_keypad_a_or_b(u8);
+void sub_81B5674(u8);
+void sub_81B57DC(void);
+void sub_81B5864(void);
+void sub_81B56A4(u8);
+void sub_81B56D8(u8);
+void task_launch_hm_phase_2(u8);
+u16 brm_get_selected_species(void);
+void sub_81B5B38(u8, struct Pokemon*);
+void UpdatePartyMonIconFrame(struct Sprite*);
+void UpdatePartyMonIconFrameAndBounce(struct Sprite*);
+void sub_81B5CB0(u16, struct Struct203CEDC*);
+void sub_81B5DF0(u8, u8);
+void sub_81B5E74(struct Sprite*);
+void party_menu_get_status_condition_and_update_object(struct Pokemon*, struct Struct203CEDC*);
+void party_menu_update_status_condition_object(u8, struct Struct203CEDC*);
+u8 sub_81B8984(void);
+void sub_81B6280(u8);
+void c2_815ABFC(void);
+u8 GetItemEffectType(u16);
+void sub_81B672C(u8);
+u16 sub_81B691C(struct Pokemon*, u8);
+void option_menu_get_string(u8, u8*);
+void sub_81B6BB4(u8);
+void ether_effect_related_2(u8);
+void ether_effect_related(u8);
+void sub_81B6EB4(u8);
+void sub_81B6FF4(u8);
+void sub_81B6F60(u8);
+void sub_81B6F98(u8);
+void sub_81B77AC(u8);
+void sub_81B7028(u8);
+void sub_81B7088(u8);
+void sub_81B7230(u8);
+void sub_81B70B8(void);
+void sub_81B70F0(void);
+void sub_81B711C(u8);
+void sub_81B7154(u8);
+void sub_81B71D4(u8);
+void sub_81B7294(u8);
+void sub_81B72C8(u8);
+void sub_81B73E4(u8);
+void sub_81B79A0(struct Pokemon*, s16*);
+void sub_81B754C(u8, struct Pokemon*);
+void sub_81B75D4(u8);
+void sub_81B767C(u8);
+void sub_81B7634(u8);
+void sub_81B76C8(u8);
+void sub_81B7704(u8);
+void sub_81B7810(u8);
+void sub_81B787C(u8);
+void sub_81B7910(u8, u16);
+void sub_81B7A28(u8);
+void task_sacred_ash_party_loop(u8);
+void sub_81B7C10(u8);
+void sub_81B8044(u8);
+void sub_81B83B8(u8);
+void sub_81B82A0(u8);
+void sub_81B83F0(u16);
+void sub_81B814C(void);
+void sub_81B8088(u8);
+void sub_81B8104(u8);
+void sub_81B81A8(void);
+bool8 sub_81B841C(u16);
+void sub_81B8230(u8);
+void sub_81B82D4(u8);
+void sub_81B879C(u8);
+void sub_81B8558(void);
+bool8 GetBattleEntryEligibility(struct Pokemon*);
+bool8 sub_81B8770(u8);
+u8 sub_81B8888(void);
+u8 sub_81B885C(void);
+void sub_81B87E8(u8);
+u8 pokemon_order_func(u8);
+void sub_81B8FB0(u8, u8);
+void sub_81B8C88(u8*, bool8);
+void sub_81B8D88(u8*, u8, u8);
+void sub_81B917C(u8);
+void sub_81B91B4(u8);
+void sub_81B9294(u8);
+void sub_81B9240(u8);
+void sub_81B9390(void);
+void task_hm_without_phase_2(u8);
+void sub_81B9424(u8);
+void sub_81B9470(void);
+void sub_81B94D0(u8);
+void sub_81B953C(u8);
+void sub_81B9588(void);
+void sub_81B9640(u8);
+void sub_81B97DC(struct Pokemon*, u8, u8);
+
+void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 e, TaskFunc task, MainCallback callback)
+{
+ u16 i;
+
+ reset_brm();
+ gUnknown_0203CEC4 = Alloc(sizeof(struct Struct203CEC4));
+ if (gUnknown_0203CEC4 == NULL)
+ {
+ SetMainCallback2(callback);
+ }
+ else
+ {
+ gUnknown_0203CEC8.unk8_0 = a;
+ gUnknown_0203CEC8.exitCallback = callback;
+ gUnknown_0203CEC8.unkB = c;
+ gUnknown_0203CEC4->unkA_0 = e;
+ gUnknown_0203CEC4->unk0 = task;
+ gUnknown_0203CEC4->exitCallback = NULL;
+ gUnknown_0203CEC4->unk8_1 = 0;
+ gUnknown_0203CEC4->unk8_2 = 0xFF;
+ gUnknown_0203CEC4->unk9_0 = 0xFF;
+
+ if (a == 4)
+ gUnknown_0203CEC4->unk8_0 = TRUE;
+ else
+ gUnknown_0203CEC4->unk8_0 = FALSE;
+
+ if (b != 0xFF)
+ gUnknown_0203CEC8.mode = b;
+
+ for (i = 0; i <= 15; i++)
+ gUnknown_0203CEC4->data[i] = 0;
+ for (i = 0; i < 3; i++)
+ gUnknown_0203CEC4->unkC[i] |= 0xFF;
+
+ if (d == 0)
+ gUnknown_0203CEC8.unk9 = 0;
+ else if (gUnknown_0203CEC8.unk9 > 5 || GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES) == SPECIES_NONE)
+ gUnknown_0203CEC8.unk9 = 0; // wut why is this else if?
+
+ gTextFlags.autoScroll = 0;
+ CalculatePlayerPartyCount();
+ SetMainCallback2(PartyMenuInitCallback);
+ }
+}
+
+void PartyMenuCallback(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+void PartyMenuVBlankCallback(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void PartyMenuInitCallback(void)
+{
+ while (TRUE)
+ {
+ if (sub_81221EC() == TRUE || PartyMenuSetup() == TRUE || sub_81221AC() == TRUE)
+ break;
+ }
+}
+
+bool8 PartyMenuSetup(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankHBlankCallbacksToNull();
+ ResetVramOamAndBgCntRegs();
+ clear_scheduled_bg_copies_to_vram();
+ gMain.state++;
+ break;
+ case 1:
+ ScanlineEffect_Stop();
+ gMain.state++;
+ break;
+ case 2:
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ gMain.state++;
+ break;
+ case 3:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 5:
+ if (!sub_81221AC())
+ ResetTasks();
+ gMain.state++;
+ break;
+ case 6:
+ sub_81B209C();
+ gMain.state++;
+ break;
+ case 7:
+ if (!AllocPartyMenuBg())
+ {
+ PartyMenuExit();
+ return TRUE;
+ }
+ else
+ {
+ gUnknown_0203CEC4->data[0] = 0;
+ gMain.state++;
+ }
+ break;
+ case 8:
+ if (AllocPartyMiscGfx())
+ gMain.state++;
+ break;
+ case 9:
+ sub_81B239C(gUnknown_0203CEC8.mode);
+ gMain.state++;
+ break;
+ case 10:
+ PartyMenuInitHelperStructs(gUnknown_0203CEC8.mode);
+ gUnknown_0203CEC4->data[0] = 0;
+ gMain.state++;
+ break;
+ case 11:
+ LoadHeldItemIcons();
+ gMain.state++;
+ break;
+ case 12:
+ LoadPartyMenuPokeballGfx();
+ gMain.state++;
+ break;
+ case 13:
+ LoadPartyMenuAilmentGfx();
+ gMain.state++;
+ break;
+ case 14:
+ LoadMonIconPalettes();
+ gMain.state++;
+ break;
+ case 15:
+ if (party_menu_add_per_mon_objects())
+ {
+ gUnknown_0203CEC4->data[0] = 0;
+ gMain.state++;
+ }
+ break;
+ case 16:
+ if (RenderPartyMenuBoxes())
+ {
+ gUnknown_0203CEC4->data[0] = 0;
+ gMain.state++;
+ }
+ break;
+ case 17:
+ sub_81B0F28();
+ gMain.state++;
+ break;
+ case 18:
+ sub_81B2428(gUnknown_0203CEC4->unk8_0);
+ gMain.state++;
+ break;
+ case 19:
+ gMain.state++;
+ break;
+ case 20:
+ CreateTask(gUnknown_0203CEC4->unk0, 0);
+ display_pokemon_menu_message(gUnknown_0203CEC4->unkA_0);
+ gMain.state++;
+ break;
+ case 21:
+ BlendPalettes(0xFFFFFFFF, 16, 0);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ gMain.state++;
+ break;
+ case 22:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gMain.state++;
+ break;
+ default:
+ SetVBlankCallback(PartyMenuVBlankCallback);
+ SetMainCallback2(PartyMenuCallback);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void PartyMenuExit(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ CreateTask(PartyMenuExitTask, 0);
+ SetVBlankCallback(PartyMenuVBlankCallback);
+ SetMainCallback2(PartyMenuCallback);
+}
+
+void PartyMenuExitTask(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(gUnknown_0203CEC8.exitCallback);
+ FreePartyPointers();
+ DestroyTask(taskId);
+ }
+}
+
+void reset_brm(void)
+{
+ gUnknown_0203CEC4 = NULL;
+ gUnknown_0203CEE4 = NULL;
+ gUnknown_0203CEDC = NULL;
+ gUnknown_0203CEE0 = NULL;
+}
+
+bool8 AllocPartyMenuBg(void)
+{
+ gUnknown_0203CEE4 = Alloc(0x800);
+ if (gUnknown_0203CEE4 == NULL)
+ return FALSE;
+ memset(gUnknown_0203CEE4, 0, 0x800);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_086156B8, 3);
+ SetBgTilemapBuffer(1, gUnknown_0203CEE4);
+ ResetAllBgsCoordinates();
+ schedule_bg_copy_tilemap_to_vram(1);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ return TRUE;
+}
+
+bool8 AllocPartyMiscGfx(void)
+{
+ int sizeout;
+
+ switch (gUnknown_0203CEC4->data[0])
+ {
+ case 0:
+ gUnknown_0203CEE0 = malloc_and_decompress(gPartyMenuMisc_Gfx, &sizeout);
+ LoadBgTiles(1, gUnknown_0203CEE0, sizeout, 0);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ LZDecompressWram(gPartyMenuMisc_Tilemap, gUnknown_0203CEE4);
+ gUnknown_0203CEC4->data[0]++;
+ }
+ break;
+ case 2:
+ LoadCompressedPalette(gPartyMenuMisc_Pal, 0, 0x160);
+ CpuCopy16(gPlttBufferUnfaded, gUnknown_0203CEC4->palBuffer, 0x160);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 3:
+ PartyPaletteBufferCopy(4);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 4:
+ PartyPaletteBufferCopy(5);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 5:
+ PartyPaletteBufferCopy(6);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 6:
+ PartyPaletteBufferCopy(7);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 7:
+ PartyPaletteBufferCopy(8);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ default:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void PartyPaletteBufferCopy(u8 offset)
+{
+ offset *= 16;
+ CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferUnfaded[offset], 32);
+ CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferFaded[offset], 32);
+}
+
+void FreePartyPointers(void)
+{
+ if (gUnknown_0203CEC4)
+ Free(gUnknown_0203CEC4);
+ if (gUnknown_0203CEE4)
+ Free(gUnknown_0203CEE4);
+ if (gUnknown_0203CEE0)
+ Free(gUnknown_0203CEE0);
+ if (gUnknown_0203CEDC)
+ Free(gUnknown_0203CEDC);
+ FreeAllWindowBuffers();
+}
+
+void PartyMenuInitHelperStructs(u8 a)
+{
+ u8 i;
+
+ gUnknown_0203CEDC = Alloc(sizeof(struct Struct203CEDC[PARTY_SIZE]));
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ gUnknown_0203CEDC[i].unk0 = &gUnknown_086156C4[1];
+ gUnknown_0203CEDC[i].unk4 = gUnknown_08615704[a][i];
+ gUnknown_0203CEDC[i].windowId = i;
+ gUnknown_0203CEDC[i].unk9 |= 0xFF;
+ gUnknown_0203CEDC[i].unkA |= 0xFF;
+ gUnknown_0203CEDC[i].unkB |= 0xFF;
+ gUnknown_0203CEDC[i].unkC |= 0xFF;
+ }
+ gUnknown_0203CEDC[0].unk0 = &gUnknown_086156C4[0];
+ if (a == 3)
+ gUnknown_0203CEDC[3].unk0 = &gUnknown_086156C4[0];
+ else if (a != 0)
+ gUnknown_0203CEDC[1].unk0 = &gUnknown_086156C4[0];
+}
+
+void RenderPartyMenuBox(u8 slot)
+{
+ if (gUnknown_0203CEC8.unk8_0 == 5 && slot > 2)
+ {
+ sub_81B0CEC(slot);
+ if (gUnknown_02022FF8[slot - 3].species == SPECIES_NONE)
+ UpdateSelectedPartyBox(&gUnknown_0203CEDC[slot], 0x40);
+ else
+ UpdateSelectedPartyBox(&gUnknown_0203CEDC[slot], 8);
+ CopyWindowToVram(gUnknown_0203CEDC[slot].windowId, 2);
+ PutWindowTilemap(gUnknown_0203CEDC[slot].windowId);
+ schedule_bg_copy_tilemap_to_vram(2);
+ }
+ else
+ {
+ if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) == SPECIES_NONE)
+ {
+ sub_81B2720(gUnknown_0203CEDC[slot].windowId);
+ UpdateSelectedPartyBox(&gUnknown_0203CEDC[slot], 0x40);
+ CopyWindowToVram(gUnknown_0203CEDC[slot].windowId, 2);
+ }
+ else
+ {
+ if (gUnknown_0203CEC8.unk8_0 == 7)
+ DisplayPartyPokemonSelectForRelearner(slot);
+ else if (gUnknown_0203CEC8.unk8_0 == 2)
+ DisplayPartyPokemonSelectForContest(slot);
+ else if (gUnknown_0203CEC8.unk8_0 == 4)
+ DisplayPartyPokemonSelectForBattle(slot);
+ else if (gUnknown_0203CEC8.unk8_0 == 11)
+ sub_81B0B98(slot);
+ else if (gUnknown_0203CEC8.unk8_0 == 12)
+ DisplayPartyPokemonSelectHeldItemRelated(slot);
+ else if (!sub_81B0BFC(slot))
+ DisplayPartyPokemonData(slot);
+
+ if (gUnknown_0203CEC8.unk8_0 == 5)
+ sub_81B0FCC(slot, 0);
+ else if (gUnknown_0203CEC8.unk9 == slot)
+ sub_81B0FCC(slot, 1);
+ else
+ sub_81B0FCC(slot, 0);
+ }
+ PutWindowTilemap(gUnknown_0203CEDC[slot].windowId);
+ schedule_bg_copy_tilemap_to_vram(0);
+ }
+}
+
+void DisplayPartyPokemonData(u8 slot)
+{
+ if (GetMonData(&gPlayerParty[slot], MON_DATA_IS_EGG))
+ {
+ gUnknown_0203CEDC[slot].unk0->unk0(gUnknown_0203CEDC[slot].windowId, 0, 0, 0, 0, 1);
+ DisplayPartyPokemonNickname(&gPlayerParty[slot], &gUnknown_0203CEDC[slot], 0);
+ }
+ else
+ {
+ gUnknown_0203CEDC[slot].unk0->unk0(gUnknown_0203CEDC[slot].windowId, 0, 0, 0, 0, 0);
+ DisplayPartyPokemonNickname(&gPlayerParty[slot], &gUnknown_0203CEDC[slot], 0);
+ DisplayPartyPokemonLevelCheck(&gPlayerParty[slot], &gUnknown_0203CEDC[slot], 0);
+ DisplayPartyPokemonGenderNidoranCheck(&gPlayerParty[slot], &gUnknown_0203CEDC[slot], 0);
+ DisplayPartyPokemonHPCheck(&gPlayerParty[slot], &gUnknown_0203CEDC[slot], 0);
+ DisplayPartyPokemonMaxHPCheck(&gPlayerParty[slot], &gUnknown_0203CEDC[slot], 0);
+ DisplayPartyPokemonHPBarCheck(&gPlayerParty[slot], &gUnknown_0203CEDC[slot]);
+ }
+}
+
+void DisplayPartyPokemonSelectData(u8 slot, u8 stringID)
+{
+ struct Pokemon *mon = &gPlayerParty[slot];
+
+ gUnknown_0203CEDC[slot].unk0->unk0(gUnknown_0203CEDC[slot].windowId, 0, 0, 0, 0, 1);
+ DisplayPartyPokemonNickname(mon, &gUnknown_0203CEDC[slot], 0);
+ if (!GetMonData(mon, MON_DATA_IS_EGG))
+ {
+ DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[slot], 0);
+ DisplayPartyPokemonGenderNidoranCheck(mon, &gUnknown_0203CEDC[slot], 0);
+ }
+ DisplayPartyPokemonOtherText(stringID, &gUnknown_0203CEDC[slot], 0);
+}
+
+void DisplayPartyPokemonSelectForBattle(u8 slot)
+{
+ u8 i;
+ struct Pokemon *mon = &gPlayerParty[slot];
+ u8 *ptr = gSelectedOrderFromParty;
+
+ if (!GetBattleEntryEligibility(mon))
+ {
+ DisplayPartyPokemonSelectData(slot, 7);
+ return;
+ }
+ else
+ {
+ for (i = 0; i < sub_81B8830(); i++)
+ {
+ if (ptr[i] != 0 && (ptr[i] - 1) == slot)
+ {
+ DisplayPartyPokemonSelectData(slot, i + 2);
+ return;
+ }
+ }
+ DisplayPartyPokemonSelectData(slot, 1);
+ }
+}
+
+void DisplayPartyPokemonSelectForContest(u8 slot)
+{
+ switch (sub_80DAE0C(&gPlayerParty[slot]))
+ {
+ case 0:
+ case 3:
+ case 4:
+ DisplayPartyPokemonSelectData(slot, 7);
+ break;
+ case 1:
+ case 2:
+ DisplayPartyPokemonSelectData(slot, 6);
+ break;
+ }
+}
+
+void DisplayPartyPokemonSelectForRelearner(u8 slot)
+{
+ if (GetNumberOfRelearnableMoves(&gPlayerParty[slot]) == 0)
+ DisplayPartyPokemonSelectData(slot, 9);
+ else
+ DisplayPartyPokemonSelectData(slot, 8);
+}
+
+void sub_81B0B98(u8 slot)
+{
+ if (sub_81B218C(slot) == TRUE)
+ DisplayPartyPokemonSelectData(slot, 6);
+ else
+ DisplayPartyPokemonSelectData(slot, 7);
+}
+
+void DisplayPartyPokemonSelectHeldItemRelated(u8 slot)
+{
+ if (GetMonData(&gPlayerParty[slot], MON_DATA_HELD_ITEM))
+ DisplayPartyPokemonSelectData(slot, 11);
+ else
+ DisplayPartyPokemonSelectData(slot, 12);
+}
+
+bool8 sub_81B0BFC(u8 slot)
+{
+ struct Pokemon *currentPokemon = &gPlayerParty[slot];
+ u16 item = gSpecialVar_ItemId;
+
+ if (gUnknown_0203CEC8.unkB == 12)
+ {
+ gSpecialVar_Result = FALSE;
+ DisplayPartyPokemonSelectToTeachMove(slot, 0, gSpecialVar_0x8005);
+ }
+ else
+ {
+ if (gUnknown_0203CEC8.unkB != 3)
+ return FALSE;
+
+ switch (CheckIfItemIsTMHMOrEvolutionStone(item))
+ {
+ default:
+ return FALSE;
+ case 1:
+ DisplayPartyPokemonSelectToTeachMove(slot, item, 0);
+ break;
+ case 2:
+ if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, 3, item) != SPECIES_NONE)
+ return FALSE;
+ DisplayPartyPokemonSelectData(slot, 0);
+ break;
+ }
+ }
+ return TRUE;
+}
+
+void DisplayPartyPokemonSelectToTeachMove(u8 slot, u16 item, u8 tutor)
+{
+ switch (CanPartyPokemonLearnTMTutor(&gPlayerParty[slot], item, tutor))
+ {
+ case CANNOT_LEARN_MOVE:
+ case CANNOT_LEARN_MOVE_IS_EGG:
+ DisplayPartyPokemonSelectData(slot, 9);
+ break;
+ case ALREADY_KNOWS_MOVE:
+ DisplayPartyPokemonSelectData(slot, 10);
+ break;
+ default:
+ DisplayPartyPokemonSelectData(slot, 8);
+ break;
+ }
+}
+
+void sub_81B0CEC(u8 slot)
+{
+ struct Struct203CEDC *structPtr = &gUnknown_0203CEDC[slot];
+ u8 actualSlot = slot - 3;
+
+ if (gUnknown_02022FF8[actualSlot].species == SPECIES_NONE)
+ {
+ sub_81B2720(structPtr->windowId);
+ }
+ else
+ {
+ structPtr->unk0->unk0(structPtr->windowId, 0, 0, 0, 0, 0);
+ StringCopy(gStringVar1, gUnknown_02022FF8[actualSlot].nickname);
+ StringGetEnd10(gStringVar1);
+ sub_81DB52C(gStringVar1);
+ DisplayPartyPokemonBarDetail(structPtr->windowId, gStringVar1, 0, structPtr->unk0->unk4);
+ DisplayPartyPokemonLevel(gUnknown_02022FF8[actualSlot].level, structPtr);
+ DisplayPartyPokemonGender(gUnknown_02022FF8[actualSlot].gender, gUnknown_02022FF8[actualSlot].species, gUnknown_02022FF8[actualSlot].nickname, structPtr);
+ DisplayPartyPokemonHP(gUnknown_02022FF8[actualSlot].hp, structPtr);
+ DisplayPartyPokemonMaxHP(gUnknown_02022FF8[actualSlot].maxhp, structPtr);
+ DisplayPartyPokemonHPBar(gUnknown_02022FF8[actualSlot].hp, gUnknown_02022FF8[actualSlot].maxhp, structPtr);
+ }
+}
+
+bool8 RenderPartyMenuBoxes(void)
+{
+ RenderPartyMenuBox(gUnknown_0203CEC4->data[0]);
+ if (++gUnknown_0203CEC4->data[0] == 6)
+ return TRUE;
+ return FALSE;
+}
+
+u8* GetPartyMiscGraphicsTile(u16 tileId)
+{
+ return &gUnknown_0203CEE0[tileId << 5];
+}
+
+void party_menu_add_per_mon_objects_internal(u8 slot)
+{
+ u8 actualSlot;
+
+ if (gUnknown_0203CEC8.unk8_0 == 5 && slot > 2)
+ {
+ u8 status;
+ actualSlot = slot - 3;
+
+ if (gUnknown_02022FF8[actualSlot].species != SPECIES_NONE)
+ {
+ party_menu_link_mon_icon_anim(gUnknown_02022FF8[actualSlot].species, gUnknown_02022FF8[actualSlot].personality, &gUnknown_0203CEDC[slot], 0, 0);
+ party_menu_link_mon_held_item_object(gUnknown_02022FF8[actualSlot].species, gUnknown_02022FF8[actualSlot].heldItem, &gUnknown_0203CEDC[slot]);
+ party_menu_link_mon_pokeball_object(gUnknown_02022FF8[actualSlot].species, &gUnknown_0203CEDC[slot]);
+ if (gUnknown_02022FF8[actualSlot].hp == 0)
+ status = AILMENT_FNT;
+ else
+ status = pokemon_ailments_get_primary(gUnknown_02022FF8[actualSlot].status);
+ party_menu_link_mon_status_condition_object(gUnknown_02022FF8[actualSlot].species, status, &gUnknown_0203CEDC[slot]);
+ }
+ }
+ else if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ party_menu_icon_anim(&gPlayerParty[slot], &gUnknown_0203CEDC[slot], slot);
+ party_menu_held_item_object(&gPlayerParty[slot], &gUnknown_0203CEDC[slot]);
+ party_menu_pokeball_object(&gPlayerParty[slot], &gUnknown_0203CEDC[slot]);
+ party_menu_status_condition_object(&gPlayerParty[slot], &gUnknown_0203CEDC[slot]);
+ }
+}
+
+bool8 party_menu_add_per_mon_objects(void)
+{
+ party_menu_add_per_mon_objects_internal(gUnknown_0203CEC4->data[0]);
+ if (++gUnknown_0203CEC4->data[0] == 6)
+ return TRUE;
+ return FALSE;
+}
+
+void sub_81B0F28(void)
+{
+ if (gUnknown_0203CEC8.unk8_0 == 5)
+ {
+ FillBgTilemapBufferRect(1, 14, 23, 17, 7, 2, 1);
+ }
+ else
+ {
+ if (gUnknown_0203CEC4->unk8_0)
+ {
+ gUnknown_0203CEC4->unk8_2 = sub_81B5F74(0xBF, 0x88);
+ sub_81B120C();
+ gUnknown_0203CEC4->unk9_0 = sub_81B5F74(0xBF, 0x98);
+ }
+ else
+ {
+ gUnknown_0203CEC4->unk9_0 = sub_81B5F34(0xC6, 0x94);
+ }
+ sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
+ }
+}
+
+void sub_81B0FCC(u8 slot, u8 b)
+{
+ u8 spriteId;
+
+ switch (slot)
+ {
+ default:
+ if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ UpdateSelectedPartyBox(&gUnknown_0203CEDC[slot], GetPartyBoxPalBitfield(slot, b));
+ AnimateSelectedPartyIcon(gUnknown_0203CEDC[slot].unk9, b);
+ sub_81B5F98(gUnknown_0203CEDC[slot].unkB, b);
+ }
+ return;
+ case 6:
+ if (b == 0)
+ sub_8199C30(1, 23, 16, 7, 2, 1);
+ else
+ sub_8199C30(1, 23, 16, 7, 2, 2);
+ spriteId = gUnknown_0203CEC4->unk8_2;
+ break;
+ case 7:
+ if (!gUnknown_0203CEC4->unk8_0)
+ {
+ if (b == 0)
+ sub_8199C30(1, 23, 17, 7, 2, 1);
+ else
+ sub_8199C30(1, 23, 17, 7, 2, 2);
+ }
+ else if (b == 0)
+ {
+ sub_8199C30(1, 23, 18, 7, 2, 1);
+ }
+ else
+ {
+ sub_8199C30(1, 23, 18, 7, 2, 2);
+ }
+ spriteId = gUnknown_0203CEC4->unk9_0;
+ break;
+ }
+ sub_81B5F98(spriteId, b);
+ schedule_bg_copy_tilemap_to_vram(1);
+}
+
+u8 GetPartyBoxPalBitfield(u8 slot, u8 b)
+{
+ u8 returnVar = 0;
+ if (b == 1)
+ returnVar |= 1;
+ if (GetMonData(&gPlayerParty[slot], MON_DATA_HP) == 0)
+ returnVar |= 2;
+ if (PartyBoxPal_ParnterOrDisqualifiedInArena(slot) == TRUE)
+ returnVar |= 8;
+ if (gUnknown_0203CEC8.unkB == 9)
+ returnVar |= 16;
+ if (gUnknown_0203CEC8.unkB == 8)
+ {
+ if (slot == gUnknown_0203CEC8.unk9 || slot == gUnknown_0203CEC8.unkA)
+ returnVar |= 4;
+ }
+ if (gUnknown_0203CEC8.unkB == 10 && slot == gUnknown_0203CEC8.unk9 )
+ returnVar |= 32;
+
+ return returnVar;
+}
+
+bool8 PartyBoxPal_ParnterOrDisqualifiedInArena(u8 slot)
+{
+ if (gUnknown_0203CEC8.mode == 2 && (slot == 1 || slot == 4 || slot == 5))
+ return TRUE;
+
+ if (slot < 3 && (gBattleTypeFlags & BATTLE_TYPE_ARENA) && gMain.inBattle && (gBattleStruct->arenaLostPlayerMons >> sub_81B8F38(slot) & 1))
+ return TRUE;
+
+ return FALSE;
+}
+
+void sub_81B120C(void)
+{
+ CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_086157C4, 23, 16, 7, 2, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_086157E0, 23, 18, 7, 2, 17);
+ schedule_bg_copy_tilemap_to_vram(1);
+}
+
+bool8 IsMultiBattle(void)
+{
+ if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI)) == (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI) && gMain.inBattle)
+ return TRUE;
+ return FALSE;
+}
+
+void sub_81B1288(struct Pokemon *partySlot, struct Pokemon *pokemon)
+{
+ struct Pokemon *temp = Alloc(sizeof(struct Pokemon));
+
+ *temp = *partySlot;
+ *partySlot = *pokemon;
+ *pokemon = *temp;
+
+ Free(temp);
+}
+
+void sub_81B12C0(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = c3_0811FAB4;
+}
+
+void c3_0811FAB4(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gUnknown_0203CEC8.unk8_0 == 1)
+ sub_81B9080();
+
+ if (gUnknown_0203CEC4->exitCallback != NULL)
+ SetMainCallback2(gUnknown_0203CEC4->exitCallback);
+ else
+ SetMainCallback2(gUnknown_0203CEC8.exitCallback);
+
+ ResetSpriteData();
+ FreePartyPointers();
+ DestroyTask(taskId);
+ }
+}
+
+u8 GetCursorSelectionMonId(void)
+{
+ return gUnknown_0203CEC8.unk9;
+}
+
+u8 sub_81B1360(void)
+{
+ return gUnknown_0203CEC8.unk8_0;
+}
+
+void sub_81B1370(u8 taskId)
+{
+ if (!gPaletteFade.active && sub_81221EC() != TRUE)
+ {
+ s8 *ptr = sub_81B13EC();
+
+ switch (PartyMenuButtonHandler(ptr))
+ {
+ case 1:
+ sub_81B140C(taskId, ptr);
+ break;
+ case 2:
+ sub_81B15D0(taskId, ptr);
+ break;
+ case 8:
+ if (gUnknown_0203CEC4->unk8_0)
+ {
+ PlaySE(SE_SELECT);
+ sub_81B4F88();
+ }
+ }
+ }
+}
+
+s8* sub_81B13EC(void)
+{
+ if (gUnknown_0203CEC8.unkB == 8 || gUnknown_0203CEC8.unkB == 10)
+ return &gUnknown_0203CEC8.unkA;
+ return &gUnknown_0203CEC8.unk9;
+}
+
+void sub_81B140C(u8 taskId, s8 *ptr)
+{
+ if (*ptr == 6)
+ {
+ gUnknown_0203CEC8.unk4(taskId);
+ }
+ else
+ {
+ switch (gUnknown_0203CEC8.unkB - 3)
+ {
+ case 7:
+ if (sub_81B15A4((u8*)ptr))
+ {
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81615A8(taskId);
+ }
+ break;
+ case 0:
+ if (sub_81B15A4((u8*)ptr))
+ {
+ if (gUnknown_0203CEC8.unk8_0 == 1)
+ gUnknown_0203CEC4->exitCallback = sub_81B9140;
+
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ gUnknown_03006328(taskId, sub_81B6794);
+ }
+ break;
+ case 9:
+ if (sub_81B15A4((u8*)ptr))
+ {
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B7E4C(taskId);
+ }
+ break;
+ case 4:
+ if (sub_81B15A4((u8*)ptr))
+ {
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B8474(taskId);
+ }
+ break;
+ case 2:
+ case 3:
+ if (sub_81B15A4((u8*)ptr))
+ {
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B7FAC(taskId);
+ }
+ break;
+ case 5:
+ PlaySE(SE_SELECT);
+ sub_81B3938(taskId);
+ break;
+ case 8:
+ PlaySE(SE_SELECT);
+ sub_81B12C0(taskId);
+ break;
+ case 10:
+ if (sub_81B15A4((u8*)ptr))
+ {
+ sub_81B21AC(taskId, (u8)*ptr);
+ }
+ break;
+ default:
+ case 1:
+ case 6:
+ PlaySE(SE_SELECT);
+ sub_81B36FC(taskId);
+ break;
+ }
+ }
+}
+
+bool8 sub_81B15A4(u8 *slotPtr)
+{
+ if (GetMonData(&gPlayerParty[*slotPtr], MON_DATA_IS_EGG) == TRUE)
+ {
+ PlaySE(SE_HAZURE);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_81B15D0(u8 taskId, s8 *ptr)
+{
+ switch (gUnknown_0203CEC8.unkB)
+ {
+ case 1:
+ PlaySE(SE_HAZURE);
+ break;
+ case 8:
+ case 10:
+ PlaySE(SE_SELECT);
+ sub_81B407C(taskId);
+ break;
+ case 13:
+ PlaySE(SE_SELECT);
+ sub_81B2210(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ if (sub_81B1660(taskId) != TRUE)
+ {
+ if (!sub_81221AC())
+ gSpecialVar_0x8004 = 7;
+ gUnknown_0203CEE8 = 0;
+ *ptr = 7;
+ sub_81B12C0(taskId);
+ }
+ break;
+ }
+}
+
+bool8 sub_81B1660(u8 taskId)
+{
+ const u8* stringPtr = NULL;
+
+ if (gUnknown_0203CEC8.unk8_0 == 2)
+ stringPtr = gText_CancelParticipation;
+ else if (gUnknown_0203CEC8.unk8_0 == 4)
+ stringPtr = sub_81B88BC();
+
+ if (stringPtr == NULL)
+ return FALSE;
+
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ StringExpandPlaceholders(gStringVar4, stringPtr);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B16D4;
+ return TRUE;
+}
+
+void sub_81B16D4(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B1708;
+ }
+}
+
+void sub_81B1708(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ gUnknown_0203CEE8 = 0;
+ gUnknown_0203CEC8.unk9 = 7;
+ sub_81B8558();
+ sub_81B12C0(taskId);
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ sub_81B1C1C(taskId);
+ break;
+ }
+}
+
+u16 PartyMenuButtonHandler(s8 *ptr)
+{
+ s8 movementDir;
+
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case DPAD_UP:
+ movementDir = -1;
+ break;
+ case DPAD_DOWN:
+ movementDir = 1;
+ break;
+ case DPAD_LEFT:
+ movementDir = -2;
+ break;
+ case DPAD_RIGHT:
+ movementDir = 2;
+ break;
+ default:
+ switch (sub_812210C())
+ {
+ case 1:
+ movementDir = -1;
+ break;
+ case 2:
+ movementDir = 1;
+ break;
+ default:
+ movementDir = 0;
+ break;
+ }
+ }
+
+ if (gMain.newKeys & START_BUTTON)
+ return 8;
+
+ if (movementDir)
+ {
+ UpdateCurrentPartySelection(ptr, movementDir);
+ return 0;
+ }
+
+ if ((gMain.newKeys & A_BUTTON) && *ptr == 7)
+ return 2;
+
+ return gMain.newKeys & (A_BUTTON | B_BUTTON);
+}
+
+#ifdef NONMATCHING
+void UpdateCurrentPartySelection(s8 *ptr, s8 movementDir)
+{
+ s8 slot = *ptr;
+
+ if (gUnknown_0203CEC8.mode == 0)
+ SetNewPartySelectTarget1(ptr, movementDir);
+ else
+ SetNewPartySelectTarget2(ptr, movementDir);
+
+ if (*ptr != slot)
+ {
+ PlaySE(SE_SELECT);
+ sub_81B0FCC(slot, 0);
+ sub_81B0FCC(*ptr, 1);
+ }
+}
+#else
+NAKED
+void UpdateCurrentPartySelection(s8 *ptr, s8 b)
+{
+ asm_unified("push {r4,r5,lr}\n\
+ adds r5, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ ldrb r4, [r5]\n\
+ ldr r0, =gUnknown_0203CEC8\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 26\n\
+ lsrs r0, 30\n\
+ cmp r0, 0\n\
+ bne _081B1820\n\
+ lsls r1, 24\n\
+ asrs r1, 24\n\
+ adds r0, r5, 0\n\
+ bl SetNewPartySelectTarget1\n\
+ b _081B182A\n\
+ .pool\n\
+_081B1820:\n\
+ lsls r1, 24\n\
+ asrs r1, 24\n\
+ adds r0, r5, 0\n\
+ bl SetNewPartySelectTarget2\n\
+_081B182A:\n\
+ movs r1, 0\n\
+ ldrsb r1, [r5, r1]\n\
+ lsls r4, 24\n\
+ asrs r0, r4, 24\n\
+ cmp r1, r0\n\
+ beq _081B184C\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ lsrs r0, r4, 24\n\
+ movs r1, 0\n\
+ bl sub_81B0FCC\n\
+ ldrb r0, [r5]\n\
+ movs r1, 0x1\n\
+ bl sub_81B0FCC\n\
+_081B184C:\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n");
+}
+#endif
+
+#ifdef NONMATCHING
+void SetNewPartySelectTarget1(s8 *ptr, s8 b)
+{
+ u8 r0r2;
+
+ switch (b)
+ {
+ case -1:
+ r0r2 = *ptr;
+ if (*ptr == 0)
+ {
+ *ptr = 7;
+ }
+ else if (*ptr == 6)
+ {
+ *ptr = gPlayerPartyCount - 1;
+ }
+ else if (*ptr == 7)
+ {
+ if (gUnknown_0203CEC4->unk8_0)
+ *ptr = 6;
+ else
+ *ptr = gPlayerPartyCount - 1;
+ }
+ else
+ {
+ *ptr = r0r2 - 1;
+ }
+ break;
+ case 1:
+ r0r2 = *ptr;
+ if (*ptr != 7)
+ {
+ if ((u32)*ptr == gPlayerPartyCount - 1)
+ {
+ if (gUnknown_0203CEC4->unk8_0)
+ *ptr = 6;
+ else
+ *ptr = 7;
+ }
+ else
+ {
+ *ptr = r0r2 + 1;
+ }
+ }
+ else
+ {
+ *ptr = 0;
+ }
+ break;
+ case 2:
+ if (gPlayerPartyCount != 1 && *ptr == 0)
+ {
+ if (gUnknown_0203CEC4->unk8_1 == 0)
+ *ptr = 1;
+ else
+ *ptr = gUnknown_0203CEC4->unk8_1;
+ }
+ break;
+ case -2:
+ if (*ptr != 0 && *ptr != 6 && *ptr != 7)
+ {
+ gUnknown_0203CEC4->unk8_1 = *ptr;
+ *ptr = 0;
+ }
+ break;
+ }
+}
+#else
+NAKED
+void SetNewPartySelectTarget1(s8 *ptr, s8 b)
+{
+ asm_unified("push {r4,lr}\n\
+ adds r4, r0, 0\n\
+ lsls r1, 24\n\
+ asrs r1, 24\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ cmp r1, r0\n\
+ beq _081B187A\n\
+ cmp r1, r0\n\
+ bgt _081B1870\n\
+ subs r0, 0x1\n\
+ cmp r1, r0\n\
+ beq _081B1924\n\
+ b _081B1952\n\
+_081B1870:\n\
+ cmp r1, 0x1\n\
+ beq _081B18C0\n\
+ cmp r1, 0x2\n\
+ beq _081B18F8\n\
+ b _081B1952\n\
+_081B187A:\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0\n\
+ ldrsb r1, [r4, r1]\n\
+ cmp r1, 0\n\
+ bne _081B1888\n\
+ movs r0, 0x7\n\
+ b _081B1950\n\
+_081B1888:\n\
+ cmp r1, 0x6\n\
+ bne _081B1898\n\
+ ldr r0, =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ subs r0, 0x1\n\
+ b _081B1950\n\
+ .pool\n\
+_081B1898:\n\
+ cmp r1, 0x7\n\
+ bne _081B18BC\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _081B18B0\n\
+ movs r0, 0x6\n\
+ b _081B1950\n\
+ .pool\n\
+_081B18B0:\n\
+ ldr r0, =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ subs r0, 0x1\n\
+ b _081B1950\n\
+ .pool\n\
+_081B18BC:\n\
+ subs r0, 0x1\n\
+ b _081B1950\n\
+_081B18C0:\n\
+ ldrb r2, [r4]\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ cmp r0, 0x7\n\
+ beq _081B194E\n\
+ movs r1, 0\n\
+ ldrsb r1, [r4, r1]\n\
+ ldr r0, =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ subs r0, 0x1\n\
+ cmp r1, r0\n\
+ bne _081B18F4\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _081B18F0\n\
+ movs r0, 0x6\n\
+ b _081B1950\n\
+ .pool\n\
+_081B18F0:\n\
+ movs r0, 0x7\n\
+ b _081B1950\n\
+_081B18F4:\n\
+ adds r0, r2, 0x1\n\
+ b _081B1950\n\
+_081B18F8:\n\
+ ldr r0, =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ beq _081B1952\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ cmp r0, 0\n\
+ bne _081B1952\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 28\n\
+ lsrs r0, 29\n\
+ cmp r0, 0\n\
+ bne _081B1950\n\
+ movs r0, 0x1\n\
+ b _081B1950\n\
+ .pool\n\
+_081B1924:\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ cmp r0, 0\n\
+ beq _081B1952\n\
+ cmp r0, 0x6\n\
+ beq _081B1952\n\
+ cmp r0, 0x7\n\
+ beq _081B1952\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r3, [r0]\n\
+ movs r1, 0\n\
+ ldrsb r1, [r4, r1]\n\
+ movs r0, 0x7\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ ldrb r2, [r3, 0x8]\n\
+ movs r0, 0xF\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3, 0x8]\n\
+_081B194E:\n\
+ movs r0, 0\n\
+_081B1950:\n\
+ strb r0, [r4]\n\
+_081B1952:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n");
+}
+#endif
+
+#ifdef NONMATCHING
+void SetNewPartySelectTarget2(s8 *ptr, s8 b)
+{
+ u8 unk;
+ s8 unk2 = b;
+ u8 unk3;
+
+ switch (b)
+ {
+ case -1:
+ unk = *ptr;
+ if (*ptr == 0)
+ {
+ *ptr = 7;
+ }
+ else if (*ptr == 6)
+ {
+ *ptr = gPlayerPartyCount - 1;
+ }
+ else if (*ptr == 7)
+ {
+ if (gUnknown_0203CEC4->unk8_0)
+ {
+ *ptr = 6;
+ }
+ else
+ {
+ *ptr = unk - 1;
+ unk2 = sub_81B1B00(*ptr, unk2);
+ if (unk2 != -1)
+ *ptr = unk2;
+ }
+ }
+ else
+ {
+ unk2 = sub_81B1B00(*ptr, unk2);
+ if (unk2 != -1)
+ *ptr = unk2;
+ }
+ break;
+ case 1:
+ if (*ptr == 6)
+ {
+ *ptr = 7;
+ }
+ else if (*ptr == 7)
+ {
+ *ptr = 0;
+ }
+ else
+ {
+ unk2 = sub_81B1B00(*ptr, 1);
+ if (unk2 == -1)
+ {
+ if (gUnknown_0203CEC4->unk8_0)
+ *ptr = 6;
+ else
+ *ptr = 7;
+ }
+ else
+ {
+ *ptr = unk2;
+ }
+ }
+ break;
+ case 2:
+ if (*ptr == 0)
+ {
+ if (gUnknown_0203CEC4->unk8_1 == 3)
+ {
+ if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES) != SPECIES_NONE)
+ *ptr = 3;
+ }
+ else if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ *ptr = 2;
+ }
+ }
+ else if (*ptr == 1)
+ {
+ if (gUnknown_0203CEC4->unk8_1 == 5)
+ {
+ if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES) != SPECIES_NONE)
+ *ptr = 5;
+ }
+ else if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ *ptr = 4;
+ }
+ }
+ break;
+ case -2:
+ unk3 = *ptr - 2;
+ if (unk3 <= 1)
+ {
+ gUnknown_0203CEC4->unk8_1 = *ptr;
+ *ptr = 0;
+ }
+ else
+ {
+ unk3 = *ptr - 4;
+ if (unk3 <= 1)
+ {
+ gUnknown_0203CEC4->unk8_1 = *ptr;
+ *ptr = 1;
+ }
+ }
+ break;
+ }
+}
+#else
+NAKED
+void SetNewPartySelectTarget2(s8 *ptr, s8 b)
+{
+ asm_unified("push {r4-r6,lr}\n\
+ adds r4, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r2, r1, 24\n\
+ asrs r5, r1, 24\n\
+ movs r6, 0x1\n\
+ negs r6, r6\n\
+ cmp r5, r6\n\
+ beq _081B1988\n\
+ cmp r5, r6\n\
+ bgt _081B197E\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ cmp r5, r0\n\
+ bne _081B197C\n\
+ b _081B1A9C\n\
+_081B197C:\n\
+ b _081B1AF4\n\
+_081B197E:\n\
+ cmp r5, 0x1\n\
+ beq _081B19E4\n\
+ cmp r5, 0x2\n\
+ beq _081B1A24\n\
+ b _081B1AF4\n\
+_081B1988:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ cmp r0, 0\n\
+ bne _081B1996\n\
+ movs r0, 0x7\n\
+ b _081B1AF2\n\
+_081B1996:\n\
+ cmp r0, 0x6\n\
+ bne _081B19A8\n\
+ ldr r0, =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ subs r0, 0x1\n\
+ b _081B1AF2\n\
+ .pool\n\
+_081B19A8:\n\
+ cmp r0, 0x7\n\
+ bne _081B19C4\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _081B19C0\n\
+ movs r0, 0x6\n\
+ b _081B1AF2\n\
+ .pool\n\
+_081B19C0:\n\
+ subs r0, r1, 0x1\n\
+ strb r0, [r4]\n\
+_081B19C4:\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ lsls r1, r2, 24\n\
+ asrs r1, 24\n\
+ bl sub_81B1B00\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ asrs r0, 24\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ cmp r0, r1\n\
+ bne _081B19E0\n\
+ b _081B1AF4\n\
+_081B19E0:\n\
+ strb r2, [r4]\n\
+ b _081B1AF4\n\
+_081B19E4:\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ cmp r0, 0x6\n\
+ bne _081B19F0\n\
+ movs r0, 0x7\n\
+ b _081B1AF2\n\
+_081B19F0:\n\
+ cmp r0, 0x7\n\
+ bne _081B19F8\n\
+ movs r0, 0\n\
+ b _081B1AF2\n\
+_081B19F8:\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ movs r1, 0x1\n\
+ bl sub_81B1B00\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, r6\n\
+ bne _081B19E0\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _081B1A20\n\
+ movs r0, 0x6\n\
+ b _081B1AF2\n\
+ .pool\n\
+_081B1A20:\n\
+ movs r0, 0x7\n\
+ b _081B1AF2\n\
+_081B1A24:\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ cmp r0, 0\n\
+ bne _081B1A5C\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 28\n\
+ lsrs r6, r0, 29\n\
+ cmp r6, 0x3\n\
+ bne _081B1A54\n\
+ ldr r0, =gPlayerParty + 300\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _081B1AF4\n\
+ strb r6, [r4]\n\
+ b _081B1AF4\n\
+ .pool\n\
+_081B1A54:\n\
+ ldr r0, =gPlayerParty + 200\n\
+ b _081B1A70\n\
+ .pool\n\
+_081B1A5C:\n\
+ cmp r0, 0x1\n\
+ bne _081B1AF4\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 28\n\
+ lsrs r5, r0, 29\n\
+ cmp r5, 0x5\n\
+ bne _081B1A88\n\
+ ldr r0, =gPlayerParty + 500\n\
+_081B1A70:\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _081B1AF4\n\
+ strb r5, [r4]\n\
+ b _081B1AF4\n\
+ .pool\n\
+_081B1A88:\n\
+ ldr r0, =gPlayerParty + 400\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _081B1AF4\n\
+ movs r0, 0x4\n\
+ b _081B1AF2\n\
+ .pool\n\
+_081B1A9C:\n\
+ ldrb r1, [r4]\n\
+ subs r0, r1, 0x2\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bhi _081B1ACC\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r3, [r0]\n\
+ movs r1, 0\n\
+ ldrsb r1, [r4, r1]\n\
+ movs r0, 0x7\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ ldrb r2, [r3, 0x8]\n\
+ movs r0, 0xF\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3, 0x8]\n\
+ movs r0, 0\n\
+ b _081B1AF2\n\
+ .pool\n\
+_081B1ACC:\n\
+ subs r0, r1, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bhi _081B1AF4\n\
+ ldr r0, =gUnknown_0203CEC4\n\
+ ldr r3, [r0]\n\
+ movs r1, 0\n\
+ ldrsb r1, [r4, r1]\n\
+ movs r0, 0x7\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ ldrb r2, [r3, 0x8]\n\
+ movs r0, 0xF\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3, 0x8]\n\
+ movs r0, 0x1\n\
+_081B1AF2:\n\
+ strb r0, [r4]\n\
+_081B1AF4:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n");
+}
+#endif
+
+s8 sub_81B1B00(s8 a, s8 b)
+{
+ while (TRUE)
+ {
+ a += b;
+ if ((u8)a >= 6)
+ return -1;
+ if (GetMonData(&gPlayerParty[a], MON_DATA_SPECIES) != SPECIES_NONE)
+ return a;
+ }
+}
+
+u8* GetMonNickname(struct Pokemon *mon, u8 *dest)
+{
+ GetMonData(mon, MON_DATA_NICKNAME, dest);
+ return StringGetEnd10(dest);
+}
+
+u8 sub_81B1B5C(const u8* str, u8 b)
+{
+ u8 taskId;
+
+ sub_81B3300(str);
+ taskId = CreateTask(sub_81B1B8C, 1);
+ gTasks[taskId].data[0] = b;
+ return taskId;
+}
+
+void sub_81B1B8C(u8 taskId)
+{
+ if (RunTextPrintersRetIsActive(6) != TRUE)
+ {
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_8198070(6, 0);
+ ClearWindowTilemap(6);
+ }
+ DestroyTask(taskId);
+ }
+}
+
+bool8 sub_81B1BD4(void)
+{
+ return FuncIsActiveTask(sub_81B1B8C);
+}
+
+void sub_81B1BE8(u8 taskId)
+{
+ if (sub_81221EC() != TRUE)
+ {
+ display_pokemon_menu_message(0);
+ gTasks[taskId].func = sub_81B1370;
+ }
+}
+
+void sub_81B1C1C(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_8198070(6, 0);
+ ClearWindowTilemap(6);
+ if (sub_81221AC() == TRUE)
+ {
+ gTasks[taskId].func = sub_81B1BE8;
+ }
+ else
+ {
+ display_pokemon_menu_message(0);
+ gTasks[taskId].func = sub_81B1370;
+ }
+ }
+}
+
+void sub_81B1C84(struct Pokemon *mon, u16 item, u8 c, u8 unused)
+{
+ GetMonNickname(mon, gStringVar1);
+ CopyItemName(item, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnWasGivenItem);
+ sub_81B1B5C(gStringVar4, c);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81B1CD0(struct Pokemon *mon, u16 item, u8 c)
+{
+ GetMonNickname(mon, gStringVar1);
+ CopyItemName(item, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gText_RecievedItemFromPkmn);
+ sub_81B1B5C(gStringVar4, c);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81B1D1C(struct Pokemon *mon, u16 item, u8 c)
+{
+ GetMonNickname(mon, gStringVar1);
+ CopyItemName(item, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gText_SwitchPkmnItem);
+ sub_81B1B5C(gStringVar4, c);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81B1D68(u16 item, u16 item2, u8 c)
+{
+ CopyItemName(item, gStringVar1);
+ CopyItemName(item2, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gText_SwitchedPkmnItem);
+ sub_81B1B5C(gStringVar4, c);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81B1DB8(struct Pokemon *mon, u16 item)
+{
+ u8 itemBytes[2];
+
+ if (ItemIsMail(item) == TRUE)
+ {
+ if (GiveMailToMon(mon, item) == 0xFF)
+ return;
+ }
+ itemBytes[0] = item;
+ itemBytes[1] = item >> 8;
+ SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes);
+}
+
+u8 sub_81B1E00(struct Pokemon* mon)
+{
+ u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
+
+ if (item == ITEM_NONE)
+ return 0;
+ if (AddBagItem(item, 1) == FALSE)
+ return 1;
+
+ item = ITEM_NONE;
+ SetMonData(mon, MON_DATA_HELD_ITEM, &item);
+ return 2;
+}
+
+void pokemon_item_not_removed(u16 itemUnused)
+{
+ StringExpandPlaceholders(gStringVar4, gText_BagFullCouldNotRemoveItem);
+}
+
+void sub_81B1E60(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ data[0] += data[2];
+ data[3]--;
+ SetMonData(&gPlayerParty[data[4]], MON_DATA_HP, &data[0]);
+ DisplayPartyPokemonHPCheck(&gPlayerParty[data[4]], &gUnknown_0203CEDC[data[4]], 1);
+ DisplayPartyPokemonHPBarCheck(&gPlayerParty[data[4]], &gUnknown_0203CEDC[data[4]]);
+ if (data[3] == 0 || data[0] == 0 || data[0] == data[1])
+ {
+ if (data[0] > data[5])
+ ConvertIntToDecimalStringN(gStringVar2, data[0] - data[5], 0, 3);
+ SwitchTaskToFollowupFunc(taskId);
+ }
+}
+
+void sub_81B1F18(u8 taskId, u8 slot, s8 c, s16 HPDifference, TaskFunc func)
+{
+ struct Pokemon *mon = &gPlayerParty[slot];
+ s16 *data = gTasks[taskId].data;
+
+ data[0] = GetMonData(mon, MON_DATA_HP);
+ data[1] = GetMonData(mon, MON_DATA_MAX_HP);
+ data[2] = c;
+ data[3] = HPDifference;
+ data[4] = slot;
+ data[5] = data[0];
+ SetTaskFuncWithFollowupFunc(taskId, sub_81B1E60, func);
+}
+
+void sub_81B1FA8(u8 taskId, u8 b, u32 hp)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (b) // only case 0 is used
+ {
+ case 0:
+ data[0] = hp;
+ data[5] = hp;
+ break;
+ case 1:
+ data[1] = hp;
+ break;
+ case 2:
+ data[2] = hp;
+ break;
+ case 3:
+ data[3] = hp;
+ break;
+ case 4:
+ data[4] = hp;
+ break;
+ case 5:
+ SetTaskFuncWithFollowupFunc(taskId, sub_81B1E60, (TaskFunc)hp); // >casting hp as a taskfunc
+ break;
+ }
+}
+
+u8 pokemon_ailments_get_primary(u32 status)
+{
+ if (status & STATUS1_PSN_ANY)
+ return AILMENT_PSN;
+ if (status & STATUS1_PARALYSIS)
+ return AILMENT_PRZ;
+ if (status & STATUS1_SLEEP)
+ return AILMENT_SLP;
+ if (status & STATUS1_FREEZE)
+ return AILMENT_FRZ;
+ if (status & STATUS1_BURN)
+ return AILMENT_BRN;
+ return AILMENT_NONE;
+}
+
+u8 sub_81B205C(struct Pokemon *mon)
+{
+ u8 ailment;
+
+ if (GetMonData(mon, MON_DATA_HP) == 0)
+ return AILMENT_FNT;
+ ailment = pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS));
+ if (ailment != AILMENT_NONE)
+ return ailment;
+ if (CheckPartyPokerus(mon, 0))
+ return AILMENT_PKRS;
+ return AILMENT_NONE;
+}
+
+void sub_81B209C(void)
+{
+ u16 *ptr;
+
+ if (gUnknown_0203CEC8.unk8_0 == 11)
+ {
+ u8 i;
+
+ ptr = &gUnknown_0203CEC8.unkE;
+ gUnknown_0203CEC8.unkE = 0;
+ if (gSpecialVar_0x8005 == 0)
+ {
+ for (i = 0; i < gPlayerPartyCount; i++)
+ *ptr += sub_81B2134(&gPlayerParty[i]) << i;
+ }
+ else
+ {
+ for (i = 0; i < gPlayerPartyCount; i++)
+ *ptr += sub_81B2164(&gPlayerParty[i]) << i;
+ }
+ }
+}
+
+bool16 sub_81B2134(struct Pokemon *mon)
+{
+ if (GetMonData(mon, MON_DATA_IS_EGG) != TRUE && sub_802C908(GetMonData(mon, MON_DATA_SPECIES)))
+ return TRUE;
+ return FALSE;
+}
+
+// Dodrio Berry Picking select?
+
+bool16 sub_81B2164(struct Pokemon *mon)
+{
+ if (GetMonData(mon, MON_DATA_IS_EGG) != TRUE && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_DODRIO)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 sub_81B218C(u8 slot)
+{
+ if (!((gUnknown_0203CEC8.unkE >> slot) & 1))
+ return FALSE;
+ return TRUE;
+}
+
+void sub_81B21AC(u8 taskId, u8 slot)
+{
+ if (sub_81B218C(slot) == TRUE)
+ {
+ PlaySE(SE_SELECT);
+ gSpecialVar_0x8004 = slot;
+ sub_81B12C0(taskId);
+ }
+ else
+ {
+ PlaySE(SE_HAZURE);
+ sub_81B1B5C(gText_PkmnCantParticipate, 0);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B1C1C;
+ }
+}
+
+void sub_81B2210(u8 taskId)
+{
+ sub_81B1B5C(gText_CancelParticipation, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B2248;
+}
+
+void sub_81B2248(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B227C;
+ }
+}
+
+void sub_81B227C(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ gSpecialVar_0x8004 = 7;
+ sub_81B12C0(taskId);
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B1C1C;
+ break;
+ }
+}
+
+u8 CanPartyPokemonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor)
+{
+ u16 move;
+
+ if (GetMonData(mon, MON_DATA_IS_EGG))
+ return CANNOT_LEARN_MOVE_IS_EGG;
+ if (item >= ITEM_TM01_FOCUS_PUNCH)
+ {
+ if (CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH))
+ move = ItemIdToBattleMoveId(item);
+ else
+ return CANNOT_LEARN_MOVE;
+ do {} while (0); // :morphon:
+ }
+ else if (sub_81B2370(GetMonData(mon, MON_DATA_SPECIES), tutor) == FALSE)
+ {
+ return CANNOT_LEARN_MOVE;
+ }
+ else
+ {
+ move = sub_81B2360(tutor);
+ }
+
+ if (pokemon_has_move(mon, move) == TRUE)
+ return ALREADY_KNOWS_MOVE;
+ return CAN_LEARN_MOVE;
+}
+
+u16 sub_81B2360(u8 tutor)
+{
+ return gUnknown_0861500C[tutor];
+}
+
+bool8 sub_81B2370(u16 species, u8 tutor)
+{
+ if (gUnknown_08615048[species] & (1 << tutor))
+ return TRUE;
+ return FALSE;
+}
+
+void sub_81B239C(u8 a)
+{
+ u8 i;
+
+ switch (a)
+ {
+ case 0:
+ InitWindows(gUnknown_08615810);
+ break;
+ case 1:
+ InitWindows(gUnknown_08615850);
+ break;
+ case 2:
+ InitWindows(gUnknown_08615890);
+ break;
+ default:
+ InitWindows(gUnknown_086158D0);
+ break;
+ }
+ DeactivateAllTextPrinters();
+ for (i = 0; i < PARTY_SIZE; i++)
+ FillWindowPixelBuffer(i, 0);
+ LoadUserWindowBorderGfx(0, 0x4F, 0xD0);
+ LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20);
+ LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+}
+
+void sub_81B2428(bool8 a)
+{
+ u8 firstWindowId;
+ u8 windowId;
+ u8 offset;
+ u8 mainOffset;
+
+ if (gUnknown_0203CEC8.unk8_0 != 5)
+ {
+ if (a == TRUE)
+ {
+ firstWindowId = AddWindow(&gUnknown_08615918);
+ FillWindowPixelBuffer(firstWindowId, 0);
+ mainOffset = GetStringCenterAlignXOffset(0, gMenuText_Confirm, 48);
+ AddTextPrinterParameterized4(firstWindowId, 0, mainOffset, 1, 0, 0, gUnknown_086157FC[0], -1, gMenuText_Confirm);
+ PutWindowTilemap(firstWindowId);
+ CopyWindowToVram(firstWindowId, 2);
+ windowId = AddWindow(&gUnknown_08615910);
+ offset = 0;
+ }
+ else
+ {
+ windowId = AddWindow(&gUnknown_08615908);
+ offset = 3;
+ }
+ FillWindowPixelBuffer(windowId, 0);
+ if (gUnknown_0203CEC8.unk8_0 != 10)
+ {
+ mainOffset = GetStringCenterAlignXOffset(0, gText_Cancel, 48);
+ AddTextPrinterParameterized3(windowId, 0, mainOffset + offset, 1, gUnknown_086157FC[0], -1, gText_Cancel);
+ }
+ else
+ {
+ mainOffset = GetStringCenterAlignXOffset(0, gText_Cancel2, 48);
+ AddTextPrinterParameterized3(windowId, 0, mainOffset + offset, 1, gUnknown_086157FC[0], -1, gText_Cancel2);
+ }
+ PutWindowTilemap(windowId);
+ CopyWindowToVram(windowId, 2);
+ schedule_bg_copy_tilemap_to_vram(0);
+ }
+}
+
+u16* GetPartyMenuPaletteFromBuffer(u8 paletteId)
+{
+ return &gUnknown_0203CEC4->palBuffer[paletteId];
+}
+
+void BlitBitmapToPartyWindow(u8 windowId, u8 *b, u8 c, u8 x, u8 y, u8 width, u8 height)
+{
+ u8 *pixels = AllocZeroed(height * width * 32);
+ u8 i, j;
+
+ if (pixels != NULL)
+ {
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ CpuCopy16(GetPartyMiscGraphicsTile(b[x + j + ((y + i) * c)]), &pixels[(i * width + j) * 32], 32);
+ }
+ BlitBitmapToWindow(windowId, pixels, x * 8, y * 8, width * 8, height * 8);
+ Free(pixels);
+ }
+}
+
+void BlitBitmapToPartyWindow_Default1(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f)
+{
+ if (width == 0 && height == 0)
+ {
+ width = 10;
+ height = 7;
+ }
+ if (f == 0)
+ BlitBitmapToPartyWindow(windowId, gUnknown_08615988, 10, x, y, width, height);
+ else
+ BlitBitmapToPartyWindow(windowId, gUnknown_086159CE, 10, x, y, width, height);
+}
+
+void BlitBitmapToPartyWindow_Default2(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f)
+{
+ if (width == 0 && height == 0)
+ {
+ width = 18;
+ height = 3;
+ }
+ if (f == 0)
+ BlitBitmapToPartyWindow(windowId, gUnknown_08615A14, 18, x, y, width, height);
+ else
+ BlitBitmapToPartyWindow(windowId, gUnknown_08615A4A, 18, x, y, width, height);
+}
+
+void sub_81B2720(u8 windowId)
+{
+ BlitBitmapToPartyWindow(windowId, gUnknown_08615A80, 18, 0, 0, 18, 3);
+}
+
+void UpdateSelectedPartyBox(struct Struct203CEDC *ptr, u8 bitfield)
+{
+ u8 palNum = GetWindowAttribute(ptr->windowId, WINDOW_PALETTE_NUM) * 16;
+
+ if (bitfield & 0x40)
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AF1[0]), gUnknown_08615AC0[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AF1[1]), gUnknown_08615AC0[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AF1[2]), gUnknown_08615AC0[2] + palNum, 2);
+ }
+ else if (bitfield & 0x20)
+ {
+ if (bitfield & 1)
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ else
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEE[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEE[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEE[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ }
+ else if (bitfield & 0x10)
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEE[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEE[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEE[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ else if (bitfield & 4)
+ {
+ if (bitfield & 1)
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ else
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADF[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEE[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEE[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEE[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ }
+ else if (bitfield & 2)
+ {
+ if (bitfield & 1)
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADC[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADC[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ADC[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ else
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD3[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD3[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD3[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AE8[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AE8[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AE8[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ }
+ else if (bitfield & 8)
+ {
+ if (bitfield & 1)
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD9[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD9[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD9[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ else
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD0[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD0[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD0[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AE5[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AE5[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AE5[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ }
+ else if (bitfield & 1)
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD6[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD6[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AD6[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AEB[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+ else
+ {
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ACD[0]), gUnknown_08615ABA[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ACD[1]), gUnknown_08615ABA[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ACD[2]), gUnknown_08615ABA[2] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AE2[0]), gUnknown_08615ABD[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AE2[1]), gUnknown_08615ABD[1] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AE2[2]), gUnknown_08615ABD[2] + palNum, 2);
+ }
+}
+
+void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, u8 *align)
+{
+ AddTextPrinterParameterized3(windowId, 0, align[0], align[1], gUnknown_086157FC[color], 0, str);
+}
+
+void DisplayPartyPokemonNickname(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+{
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ if (c == 1)
+ ptr->unk0->unk0(ptr->windowId, ptr->unk0->unk4[0] >> 3, ptr->unk0->unk4[1] >> 3, ptr->unk0->unk4[2] >> 3, ptr->unk0->unk4[3] >> 3, 0);
+ GetMonNickname(mon, nickname);
+ DisplayPartyPokemonBarDetail(ptr->windowId, nickname, 0, ptr->unk0->unk4);
+ }
+}
+
+void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+{
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ u8 ailment = sub_81B205C(mon);
+ if (ailment == AILMENT_NONE || ailment == AILMENT_PKRS)
+ {
+ if (c != 0)
+ ptr->unk0->unk0(ptr->windowId, ptr->unk0->unk4[4] >> 3, (ptr->unk0->unk4[5] >> 3) + 1, ptr->unk0->unk4[6] >> 3, ptr->unk0->unk4[7] >> 3, 0);
+ if (c != 2)
+ DisplayPartyPokemonLevel(GetMonData(mon, MON_DATA_LEVEL), ptr);
+ }
+ }
+}
+
+void DisplayPartyPokemonLevel(u8 level, struct Struct203CEDC *ptr)
+{
+ ConvertIntToDecimalStringN(gStringVar2, level, 0, 3);
+ StringCopy(gStringVar1, gText_LevelSymbol);
+ StringAppend(gStringVar1, gStringVar2);
+ DisplayPartyPokemonBarDetail(ptr->windowId, gStringVar1, 0, &ptr->unk0->unk4[4]);
+}
+
+void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+{
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+
+ if (c == 1)
+ ptr->unk0->unk0(ptr->windowId, ptr->unk0->unk4[8] >> 3, (ptr->unk0->unk4[9] >> 3) + 1, ptr->unk0->unk4[10] >> 3, ptr->unk0->unk4[11] >> 3, 0);
+ GetMonNickname(mon, nickname);
+ DisplayPartyPokemonGender(GetMonGender(mon), GetMonData(mon, MON_DATA_SPECIES), nickname, ptr);
+}
+
+void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct Struct203CEDC *ptr)
+{
+ u8 palNum = GetWindowAttribute(ptr->windowId, WINDOW_PALETTE_NUM) * 16;
+
+ if (species == SPECIES_NONE)
+ return;
+ if ((species == SPECIES_NIDORAN_M || species == SPECIES_NIDORAN_F) && StringCompare(nickname, gSpeciesNames[species]) == 0)
+ return;
+ switch (gender)
+ {
+ case MON_MALE:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC3[0]), gUnknown_08615AB6[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC3[1]), gUnknown_08615AB6[1] + palNum, 2);
+ DisplayPartyPokemonBarDetail(ptr->windowId, gText_MaleSymbol, 2, &ptr->unk0->unk4[8]);
+ break;
+ case MON_FEMALE:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC5[0]), gUnknown_08615AB6[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC5[1]), gUnknown_08615AB6[1] + palNum, 2);
+ DisplayPartyPokemonBarDetail(ptr->windowId, gText_FemaleSymbol, 2, &ptr->unk0->unk4[8]);
+ break;
+ }
+}
+
+void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+{
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ if (c != 0)
+ ptr->unk0->unk0(ptr->windowId, ptr->unk0->unk4[12] >> 3, (ptr->unk0->unk4[13] >> 3) + 1, ptr->unk0->unk4[14] >> 3, ptr->unk0->unk4[15] >> 3, 0);
+ if (c != 2)
+ DisplayPartyPokemonHP(GetMonData(mon, MON_DATA_HP), ptr);
+ }
+}
+
+void DisplayPartyPokemonHP(u16 hp, struct Struct203CEDC *ptr)
+{
+ u8 *strOut = ConvertIntToDecimalStringN(gStringVar1, hp, 1, 3);
+
+ strOut[0] = CHAR_SLASH;
+ strOut[1] = EOS;
+
+ DisplayPartyPokemonBarDetail(ptr->windowId, gStringVar1, 0, &ptr->unk0->unk4[12]);
+}
+
+void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+{
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ if (c != 0)
+ ptr->unk0->unk0(ptr->windowId, (ptr->unk0->unk4[16] >> 3) + 1, (ptr->unk0->unk4[17] >> 3) + 1, ptr->unk0->unk4[18] >> 3, ptr->unk0->unk4[19] >> 3, 0);
+ if (c != 2)
+ DisplayPartyPokemonMaxHP(GetMonData(mon, MON_DATA_MAX_HP), ptr);
+ }
+}
+
+void DisplayPartyPokemonMaxHP(u16 maxhp, struct Struct203CEDC *ptr)
+{
+ ConvertIntToDecimalStringN(gStringVar2, maxhp, 1, 3);
+ StringCopy(gStringVar1, gText_Slash);
+ StringAppend(gStringVar1, gStringVar2);
+ DisplayPartyPokemonBarDetail(ptr->windowId, gStringVar1, 0, &ptr->unk0->unk4[16]);
+}
+
+void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct Struct203CEDC *ptr)
+{
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ DisplayPartyPokemonHPBar(GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP), ptr);
+}
+
+void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct Struct203CEDC *ptr)
+{
+ u8 palNum = GetWindowAttribute(ptr->windowId, WINDOW_PALETTE_NUM) * 16;
+ u8 hpFraction;
+
+ switch (GetHPBarLevel(hp, maxhp))
+ {
+ case HP_BAR_GREEN:
+ case HP_BAR_FULL:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC7[0]), gUnknown_08615AB8[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC7[1]), gUnknown_08615AB8[1] + palNum, 2);
+ break;
+ case HP_BAR_YELLOW:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC9[0]), gUnknown_08615AB8[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC9[1]), gUnknown_08615AB8[1] + palNum, 2);
+ break;
+ default:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ACB[0]), gUnknown_08615AB8[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ACB[1]), gUnknown_08615AB8[1] + palNum, 2);
+ break;
+ }
+
+ hpFraction = GetScaledHPFraction(hp, maxhp, ptr->unk0->unk4[22]);
+ FillWindowPixelRect(ptr->windowId, gUnknown_08615AB8[1], ptr->unk0->unk4[20], ptr->unk0->unk4[21], hpFraction, 1);
+ FillWindowPixelRect(ptr->windowId, gUnknown_08615AB8[0], ptr->unk0->unk4[20], ptr->unk0->unk4[21] + 1, hpFraction, 2);
+ if (hpFraction != ptr->unk0->unk4[22])
+ {
+ FillWindowPixelRect(ptr->windowId, 13, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21], ptr->unk0->unk4[22] - hpFraction, 1);
+ FillWindowPixelRect(ptr->windowId, 2, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21] + 1, ptr->unk0->unk4[22] - hpFraction, 2);
+ }
+ CopyWindowToVram(ptr->windowId, 2);
+}
+
+#ifdef NONMATCHING
+void DisplayPartyPokemonOtherText(u8 stringID, struct Struct203CEDC *ptr, u8 c)
+{
+ if (c != 0)
+ {
+ int unk = ((ptr->unk0->unk1C & 7) + ptr->unk0->unk1E + 7) / 8;
+ int unk2 = ((ptr->unk0->unk1D & 7) + ptr->unk0->unk1F + 7) / 8;
+ ptr->unk0->unk0(ptr->windowId, ptr->unk0->unk1C >> 3, ptr->unk0->unk1D >> 3, unk, unk2, 1);
+ }
+ if (c != 2)
+ AddTextPrinterParameterized3(ptr->windowId, 1, ptr->unk0->unk1C, ptr->unk0->unk1D, gUnknown_086157FC[0], 0, gUnknown_08615B60[stringID]);
+}
+#else
+NAKED
+void DisplayPartyPokemonOtherText(u8 stringID, struct Struct203CEDC *ptr, u8 c)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0xC\n\
+ adds r6, r1, 0\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ lsls r2, 24\n\
+ lsrs r7, r2, 24\n\
+ cmp r7, 0\n\
+ beq _081B2FF2\n\
+ ldr r5, [r6]\n\
+ ldrb r1, [r5, 0x1C]\n\
+ movs r4, 0x7\n\
+ adds r0, r1, 0\n\
+ ands r0, r4\n\
+ ldrb r2, [r5, 0x1E]\n\
+ adds r0, r2\n\
+ adds r3, r0, 0x7\n\
+ asrs r3, 3\n\
+ ldrb r2, [r5, 0x1D]\n\
+ adds r0, r2, 0\n\
+ ands r0, r4\n\
+ ldrb r4, [r5, 0x1F]\n\
+ adds r0, r4\n\
+ adds r4, r0, 0x7\n\
+ ldrb r0, [r6, 0x8]\n\
+ lsrs r1, 3\n\
+ lsrs r2, 3\n\
+ lsrs r4, 3\n\
+ str r4, [sp]\n\
+ movs r4, 0x1\n\
+ str r4, [sp, 0x4]\n\
+ ldr r4, [r5]\n\
+ bl _call_via_r4\n\
+_081B2FF2:\n\
+ cmp r7, 0x2\n\
+ beq _081B3018\n\
+ ldrb r0, [r6, 0x8]\n\
+ ldr r1, [r6]\n\
+ ldrb r2, [r1, 0x1C]\n\
+ ldrb r3, [r1, 0x1D]\n\
+ ldr r1, =gUnknown_086157FC\n\
+ str r1, [sp]\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x4]\n\
+ ldr r4, =gUnknown_08615B60\n\
+ mov r5, r8\n\
+ lsls r1, r5, 2\n\
+ adds r1, r4\n\
+ ldr r1, [r1]\n\
+ str r1, [sp, 0x8]\n\
+ movs r1, 0x1\n\
+ bl AddTextPrinterParameterized3\n\
+_081B3018:\n\
+ add sp, 0xC\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n");
+}
+#endif
+
+void sub_81B302C(u8 *ptr)
+{
+ if (*ptr != 0xFF)
+ {
+ sub_8198070(*ptr, 0);
+ RemoveWindow(*ptr);
+ *ptr = 0xFF;
+ schedule_bg_copy_tilemap_to_vram(2);
+ }
+}
+
+void display_pokemon_menu_message(u32 stringID)
+{
+ u8 *windowPtr = &gUnknown_0203CEC4->unkC[1];
+
+ if (*windowPtr != 0xFF)
+ sub_81B302C(windowPtr);
+
+ if (stringID != 0x7F)
+ {
+ switch (stringID)
+ {
+ case 21:
+ *windowPtr = AddWindow(&gUnknown_08615928);
+ break;
+ case 24:
+ *windowPtr = AddWindow(&gUnknown_08615930);
+ break;
+ case 25:
+ *windowPtr = AddWindow(&gUnknown_08615938);
+ break;
+ case 22:
+ case 23:
+ *windowPtr = AddWindow(&gUnknown_08615940);
+ break;
+ case 26:
+ *windowPtr = AddWindow(&gUnknown_08615948);
+ break;
+ default:
+ *windowPtr = AddWindow(&gUnknown_08615920);
+ break;
+ }
+ if (stringID == 0)
+ {
+ if (gUnknown_0203CEC4->unk8_0)
+ stringID = 2;
+ else if (sub_81B314C() == FALSE)
+ stringID = 1;
+ }
+ SetWindowBorderStyle(*windowPtr, FALSE, 0x4F, 0xD);
+ StringExpandPlaceholders(gStringVar4, gUnknown_08615AF4[stringID]);
+ AddTextPrinterParameterized(*windowPtr, 1, gStringVar4, 0, 1, 0, 0);
+ schedule_bg_copy_tilemap_to_vram(2);
+ }
+}
+
+bool8 sub_81B314C(void)
+{
+ struct Pokemon *party = gPlayerParty;
+ u8 i;
+ u8 j = 0;
+
+ if (gUnknown_0203CEC8.unkB == 1)
+ return TRUE;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && (GetMonData(&party[i], MON_DATA_HP) != 0 || GetMonData(&party[i], MON_DATA_IS_EGG)))
+ j++;
+ if (j > 1)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 sub_81B31B0(u8 a)
+{
+ struct WindowTemplate window;
+ u8 cursorDimension;
+ u8 fontAttribute;
+ u8 i;
+
+ switch (a)
+ {
+ case 0:
+ SetWindowTemplateFields(&window, 2, 19, 19 - (gUnknown_0203CEC4->unk17 * 2), 10, gUnknown_0203CEC4->unk17 * 2, 14, 0x2E9);
+ break;
+ case 1:
+ window = gUnknown_08615950;
+ break;
+ case 2:
+ window = gUnknown_08615958;
+ break;
+ default:
+ window = gUnknown_08615960;
+ break;
+ }
+
+ gUnknown_0203CEC4->unkC[0] = AddWindow(&window);
+ SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
+ if (a == 3)
+ return gUnknown_0203CEC4->unkC[0];
+ cursorDimension = GetMenuCursorDimensionByFont(1, 0);
+ fontAttribute = GetFontAttribute(1, 2);
+
+ for (i = 0; i < gUnknown_0203CEC4->unk17; i++)
+ {
+ u8 unk = (gUnknown_0203CEC4->unkF[i] > 18) ? 4 : 3;
+ AddTextPrinterParameterized4(gUnknown_0203CEC4->unkC[0], 1, cursorDimension, (i * 16) + 1, fontAttribute, 0, gUnknown_086157FC[unk], 0, gUnknown_08615C08[gUnknown_0203CEC4->unkF[i]].textPtr);
+ }
+
+ InitMenuInUpperLeftCorner(gUnknown_0203CEC4->unkC[0], gUnknown_0203CEC4->unk17, 0, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+
+ return gUnknown_0203CEC4->unkC[0];
+}
+
+void sub_81B3300(const u8 *text)
+{
+ SetWindowBorderStyle(6, FALSE, 0x4F, 13);
+ gTextFlags.canABSpeedUpPrint = TRUE;
+ AddTextPrinterParameterized2(6, 1, text, GetPlayerTextSpeedDelay(), 0, 2, 1, 3);
+}
+
+void sub_81B334C(void)
+{
+ CreateYesNoMenu(&gUnknown_08615968, 0x4F, 13, 0);
+}
+
+u8 sub_81B3364(void)
+{
+ gUnknown_0203CEC4->unkC[0] = AddWindow(&gUnknown_08615970);
+ SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
+ return gUnknown_0203CEC4->unkC[0];
+}
+
+void sub_81B3394(void)
+{
+ ClearWindowTilemap(gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+}
+
+void sub_81B33B4(struct Pokemon *mons, u8 a, u8 b)
+{
+ u8 i;
+
+ if (b == 0)
+ {
+ sub_81B3414(mons, a);
+ }
+ else
+ {
+ gUnknown_0203CEC4->unk17 = gUnknown_08615D70[b];
+ for (i = 0; i < gUnknown_0203CEC4->unk17; i++)
+ gUnknown_0203CEC4->unkF[i] = gUnknown_08615D38[b][i];
+ }
+}
+
+void sub_81B3414(struct Pokemon *mons, u8 a)
+{
+ u8 i, j;
+
+ gUnknown_0203CEC4->unk17 = 0;
+ AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 0);
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ for (j = 0; gUnknown_08615D7E[j] != MOVE_SWORDS_DANCE; j++)
+ {
+ if (GetMonData(&mons[a], i + MON_DATA_MOVE1) == gUnknown_08615D7E[j])
+ {
+ AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, j + 19);
+ break;
+ }
+ }
+ }
+ if (!InBattlePike())
+ {
+ if (GetMonData(&mons[1], MON_DATA_SPECIES) != SPECIES_NONE)
+ AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 1);
+ if (ItemIsMail(GetMonData(&mons[a], MON_DATA_HELD_ITEM)))
+ AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 6);
+ else
+ AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 3);
+ }
+ AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 2);
+}
+
+u8 sub_81B353C(struct Pokemon *mon)
+{
+ u32 returnVar;
+
+ switch (gUnknown_0203CEC8.unk8_0)
+ {
+ case 0:
+ if (InMultiBattleRoom() == TRUE || GetMonData(mon, MON_DATA_IS_EGG))
+ returnVar = 1;
+ else
+ returnVar = 0;
+ break;
+ case 1:
+ returnVar = sub_81B8A2C(mon);
+ break;
+ case 4:
+ switch (sub_81B856C(gUnknown_0203CEC8.unk9))
+ {
+ default:
+ returnVar = 7;
+ break;
+ case 0:
+ returnVar = 4;
+ break;
+ case 1:
+ returnVar = 5;
+ break;
+ }
+ break;
+ case 6:
+ returnVar = (GetMonData(mon, MON_DATA_IS_EGG)) ? 7 : 6;
+ break;
+ case 8:
+ returnVar = 10;
+ break;
+ case 9:
+ returnVar = 11;
+ break;
+ case 10:
+ returnVar = 12;
+ break;
+ case 12:
+ returnVar = 13;
+ break;
+ default:
+ returnVar = 0;
+ break;
+ }
+ return returnVar;
+}
+
+bool8 sub_81B3608(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 item;
+
+ GetMonNickname(mon, gStringVar1);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ if (gUnknown_0203CEC8.unk8_0 != 12)
+ {
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, sub_81B353C(mon));
+ sub_81B31B0(0);
+ display_pokemon_menu_message(21);
+ }
+ else
+ {
+ item = GetMonData(mon, MON_DATA_HELD_ITEM);
+ if (item != ITEM_NONE)
+ {
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, sub_81B353C(mon));
+ sub_81B31B0(1);
+ CopyItemName(item, gStringVar2);
+ display_pokemon_menu_message(26);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gText_PkmnNotHolding);
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B469C;
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+void sub_81B36FC(u8 taskId)
+{
+ if (sub_81B3608(taskId))
+ {
+ gTasks[taskId].data[0] = 0xFF;
+ gTasks[taskId].func = sub_81B3730;
+ }
+}
+
+void sub_81B3730(u8 taskId)
+{
+ s16 *data;
+ s8 input;
+
+ if (gPaletteFade.active == FALSE && sub_81221EC() != TRUE)
+ {
+ data = gTasks[taskId].data;
+ if (gUnknown_0203CEC4->unk17 <= 3)
+ input = Menu_ProcessInputNoWrapAround_other();
+ else
+ input = ProcessMenuInput_other();
+ data[0] = Menu_GetCursorPos();
+ if (input != MENU_NOTHING_CHOSEN)
+ {
+ if (input == MENU_B_PRESSED)
+ {
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[2]);
+ gUnknown_08615C08[gUnknown_0203CEC4->unkF[gUnknown_0203CEC4->unk17 - 1]].func(taskId);
+ }
+ else
+ {
+ sub_81B302C(&gUnknown_0203CEC4->unkC[2]);
+ gUnknown_08615C08[gUnknown_0203CEC4->unkF[input]].func(taskId);
+ }
+ }
+ }
+}
+
+void sub_81B37FC(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ gUnknown_0203CEC4->exitCallback = sub_81B3828;
+ sub_81B12C0(taskId);
+}
+
+void sub_81B3828(void)
+{
+ if (gUnknown_0203CEC8.unk8_0 == 1)
+ {
+ pokemon_change_order();
+ ShowPokemonSummaryScreen(PSS_MODE_UNK1, gPlayerParty, gUnknown_0203CEC8.unk9, gPlayerPartyCount - 1, sub_81B3894);
+ }
+ else
+ {
+ ShowPokemonSummaryScreen(PSS_MODE_NORMAL, gPlayerParty, gUnknown_0203CEC8.unk9, gPlayerPartyCount - 1, sub_81B3894);
+ }
+}
+
+void sub_81B3894(void)
+{
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ gUnknown_0203CEC8.unk9 = gUnknown_0203CF20;
+ InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 21, sub_81B36FC, gUnknown_0203CEC8.exitCallback);
+}
+
+void brm_switch(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ gUnknown_0203CEC8.unkB = 8;
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ display_pokemon_menu_message(3);
+ sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
+ gUnknown_0203CEC8.unkA = gUnknown_0203CEC8.unk9;
+ gTasks[taskId].func = sub_81B1370;
+}
+
+void sub_81B3938(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u8 windowIds[2];
+
+ if (gUnknown_0203CEC8.unkA == gUnknown_0203CEC8.unk9)
+ {
+ sub_81B407C(taskId);
+ }
+ else
+ {
+ windowIds[0] = gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].windowId;
+ data[0] = GetWindowAttribute(windowIds[0], WINDOW_TILEMAP_LEFT);
+ data[1] = GetWindowAttribute(windowIds[0], WINDOW_TILEMAP_TOP);
+ data[2] = GetWindowAttribute(windowIds[0], WINDOW_WIDTH);
+ data[3] = GetWindowAttribute(windowIds[0], WINDOW_HEIGHT);
+ data[8] = 0;
+ if (data[2] == 10)
+ data[10] = -1;
+ else
+ data[10] = 1;
+ windowIds[1] = gUnknown_0203CEDC[gUnknown_0203CEC8.unkA].windowId;
+ data[4] = GetWindowAttribute(windowIds[1], WINDOW_TILEMAP_LEFT);
+ data[5] = GetWindowAttribute(windowIds[1], WINDOW_TILEMAP_TOP);
+ data[6] = GetWindowAttribute(windowIds[1], WINDOW_WIDTH);
+ data[7] = GetWindowAttribute(windowIds[1], WINDOW_HEIGHT);
+ data[9] = 0;
+ if (data[6] == 10)
+ data[11] = -1;
+ else
+ data[11] = 1;
+ gUnknown_0203CEF0 = Alloc(data[2] * (data[3] << 1));
+ gUnknown_0203CEF4 = Alloc(data[6] * (data[7] << 1));
+ sub_8199CBC(0, gUnknown_0203CEF0, data[0], data[1], data[2], data[3]);
+ sub_8199CBC(0, gUnknown_0203CEF4, data[4], data[5], data[6], data[7]);
+ ClearWindowTilemap(windowIds[0]);
+ ClearWindowTilemap(windowIds[1]);
+ gUnknown_0203CEC8.unkB = 9;
+ sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
+ sub_81B0FCC(gUnknown_0203CEC8.unkA, 1);
+ sub_81B3CC0(taskId);
+ gTasks[taskId].func = sub_81B3D48;
+ }
+}
+
+#ifdef NONMATCHING
+bool8 sub_81B3AD8(s16 a, s16 b, u8 *c, u8 *d, u8 *e)
+{
+
+ if ((a + b) < 0 || a > 31)
+ {
+ return FALSE;
+ }
+ if (a < 0)
+ {
+ *c = -a;
+ *d = 0;
+ *e = a + b;
+ return TRUE;
+ }
+ else
+ {
+ *c = 0;
+ *d = a;
+ if ((a + b) > 31)
+ *e = 32 - a;
+ else
+ *e = b;
+ return TRUE;
+ }
+
+}
+#else
+NAKED
+bool8 sub_81B3AD8(s16 a, s16 b, u8 *c, u8 *d, u8 *e)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ adds r6, r2, 0\n\
+ mov r12, r3\n\
+ ldr r7, [sp, 0x18]\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ adds r5, r3, 0\n\
+ lsls r1, 16\n\
+ lsrs r2, r1, 16\n\
+ mov r8, r2\n\
+ lsls r0, r3, 16\n\
+ asrs r1, r0, 16\n\
+ lsls r0, r2, 16\n\
+ asrs r0, 16\n\
+ adds r4, r1, r0\n\
+ cmp r4, 0\n\
+ blt _081B3B02\n\
+ cmp r1, 0x1F\n\
+ ble _081B3B06\n\
+_081B3B02:\n\
+ movs r0, 0\n\
+ b _081B3B34\n\
+_081B3B06:\n\
+ cmp r1, 0\n\
+ bge _081B3B1A\n\
+ negs r0, r1\n\
+ strb r0, [r6]\n\
+ movs r0, 0\n\
+ mov r1, r12\n\
+ strb r0, [r1]\n\
+ adds r0, r2, r3\n\
+ strb r0, [r7]\n\
+ b _081B3B32\n\
+_081B3B1A:\n\
+ movs r0, 0\n\
+ strb r0, [r6]\n\
+ mov r0, r12\n\
+ strb r5, [r0]\n\
+ cmp r4, 0x1F\n\
+ ble _081B3B2E\n\
+ movs r0, 0x20\n\
+ subs r0, r5\n\
+ strb r0, [r7]\n\
+ b _081B3B32\n\
+_081B3B2E:\n\
+ mov r1, r8\n\
+ strb r1, [r7]\n\
+_081B3B32:\n\
+ movs r0, 0x1\n\
+_081B3B34:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n");
+}
+#endif
+
+void sub_81B3B40(const void *rectSrc, s16 a, s16 b, s16 c, s16 d, s16 e)
+{
+ u8 f, g, h;
+
+ if (sub_81B3AD8(a, c, &f, &g, &h))
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0, g, b, h, d);
+ if (sub_81B3AD8(a + e, c, &f, &g, &h))
+ CopyRectToBgTilemapBufferRect(0, rectSrc, f, 0, c, d, g, b, h, d, 17, 0, 0);
+ }
+}
+
+void sub_81B3C0C(struct Struct203CEDC *ptr, s16 a)
+{
+ gSprites[ptr->unkB].pos2.x += a * 8;
+ gSprites[ptr->unkA].pos2.x += a * 8;
+ gSprites[ptr->unk9].pos2.x += a * 8;
+ gSprites[ptr->unkC].pos2.x += a * 8;
+}
+
+void sub_81B3C60(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[10] != 0)
+ sub_81B3C0C(&gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], data[10]);
+ if (data[11] != 0)
+ sub_81B3C0C(&gUnknown_0203CEDC[gUnknown_0203CEC8.unkA], data[11]);
+}
+
+void sub_81B3CC0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[10] != 0)
+ sub_81B3B40(gUnknown_0203CEF0, data[0] + data[8], data[1], data[2], data[3], data[10]);
+ if (data[11] != 0)
+ sub_81B3B40(gUnknown_0203CEF4, data[4] + data[9], data[5], data[6], data[7], data[11]);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+void sub_81B3D48(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 tilemapRelatedMaybe[2];
+
+ sub_81B3CC0(taskId);
+ sub_81B3C60(taskId);
+ data[8] += data[10];
+ data[9] += data[11];
+ tilemapRelatedMaybe[0] = data[0] + data[8];
+ tilemapRelatedMaybe[1] = data[4] + data[9];
+ if (tilemapRelatedMaybe[0] > 33 && tilemapRelatedMaybe[1] > 33)
+ {
+ data[10] *= -1;
+ data[11] *= -1;
+ swap_pokemon_and_oams();
+ DisplayPartyPokemonData(gUnknown_0203CEC8.unk9);
+ DisplayPartyPokemonData(gUnknown_0203CEC8.unkA);
+ PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].windowId);
+ PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unkA].windowId);
+ sub_8199CBC(0, gUnknown_0203CEF0, data[0], data[1], data[2], data[3]);
+ sub_8199CBC(0, gUnknown_0203CEF4, data[4], data[5], data[6], data[7]);
+ ClearWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].windowId);
+ ClearWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unkA].windowId);
+ gTasks[taskId].func = sub_81B3E60;
+ }
+}
+
+void sub_81B3E60(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ sub_81B3CC0(taskId);
+ sub_81B3C60(taskId);
+ if (data[10] == 0 && data[11] == 0)
+ {
+ PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].windowId);
+ PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unkA].windowId);
+ schedule_bg_copy_tilemap_to_vram(0);
+ Free(gUnknown_0203CEF0);
+ Free(gUnknown_0203CEF4);
+ sub_81B407C(taskId);
+ }
+ else
+ {
+ data[8] += data[10];
+ data[9] += data[11];
+ if (data[8] == 0)
+ data[10] = 0;
+ if (data[9] == 0)
+ data[11] = 0;
+ }
+}
+
+void oamt_swap_pos(u8 *spriteIdPtr1, u8 *spriteIdPtr2)
+{
+ u8 spriteIdBuffer = *spriteIdPtr1;
+ u16 xBuffer1, yBuffer1, xBuffer2, yBuffer2;
+
+ *spriteIdPtr1 = *spriteIdPtr2;
+ *spriteIdPtr2 = spriteIdBuffer;
+ xBuffer1 = gSprites[*spriteIdPtr1].pos1.x;
+ yBuffer1 = gSprites[*spriteIdPtr1].pos1.y;
+ xBuffer2 = gSprites[*spriteIdPtr1].pos2.x;
+ yBuffer2 = gSprites[*spriteIdPtr1].pos2.y;
+ gSprites[*spriteIdPtr1].pos1.x = gSprites[*spriteIdPtr2].pos1.x;
+ gSprites[*spriteIdPtr1].pos1.y = gSprites[*spriteIdPtr2].pos1.y;
+ gSprites[*spriteIdPtr1].pos2.x = gSprites[*spriteIdPtr2].pos2.x;
+ gSprites[*spriteIdPtr1].pos2.y = gSprites[*spriteIdPtr2].pos2.y;
+ gSprites[*spriteIdPtr2].pos1.x = xBuffer1;
+ gSprites[*spriteIdPtr2].pos1.y = yBuffer1;
+ gSprites[*spriteIdPtr2].pos2.x = xBuffer2;
+ gSprites[*spriteIdPtr2].pos2.y = yBuffer2;
+}
+
+void swap_pokemon_and_oams(void)
+{
+ struct Struct203CEDC *structPtrs[2];
+ struct Pokemon *mon1, *mon2;
+ struct Pokemon *monBuffer;
+
+ structPtrs[0] = &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9];
+ structPtrs[1] = &gUnknown_0203CEDC[gUnknown_0203CEC8.unkA];
+ mon1 = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ mon2 = &gPlayerParty[gUnknown_0203CEC8.unkA];
+ monBuffer = Alloc(sizeof(struct Pokemon));
+ *monBuffer = *mon1;
+ *mon1 = *mon2;
+ *mon2 = *monBuffer;
+ Free(monBuffer);
+ oamt_swap_pos(&structPtrs[0]->unkB, &structPtrs[1]->unkB);
+ oamt_swap_pos(&structPtrs[0]->unkA, &structPtrs[1]->unkA);
+ oamt_swap_pos(&structPtrs[0]->unk9, &structPtrs[1]->unk9);
+ oamt_swap_pos(&structPtrs[0]->unkC, &structPtrs[1]->unkC);
+}
+
+void sub_81B407C(u8 taskId)
+{
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ gUnknown_0203CEC8.unkB = 0;
+ sub_81B0FCC(gUnknown_0203CEC8.unk9, 0);
+ gUnknown_0203CEC8.unk9 = gUnknown_0203CEC8.unkA;
+ sub_81B0FCC(gUnknown_0203CEC8.unkA, 1);
+ display_pokemon_menu_message(0);
+ gTasks[taskId].func = sub_81B1370;
+}
+
+void brm_cancel_1(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ if (gUnknown_0203CEC8.unk8_0 == 6)
+ display_pokemon_menu_message(15);
+ else
+ display_pokemon_menu_message(0);
+ gTasks[taskId].func = sub_81B1370;
+}
+
+void sub_81B4134(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, 8);
+ sub_81B31B0(1);
+ display_pokemon_menu_message(24);
+ gTasks[taskId].data[0] = 0xFF;
+ gTasks[taskId].func = sub_81B3730;
+}
+
+void sub_81B4198(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ gUnknown_0203CEC4->exitCallback = sub_81B41C4;
+ sub_81B12C0(taskId);
+}
+
+void sub_81B41C4(void)
+{
+ if (InBattlePyramid() == FALSE)
+ GoToBagMenu(RETURN_LOCATION_POKEMON_LIST, POCKETS_COUNT, c2_8123744);
+ else
+ sub_81C4F98(2, c2_8123744);
+}
+
+void c2_8123744(void)
+{
+ if (gSpecialVar_ItemId == ITEM_NONE)
+ {
+ InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 0x7F, sub_81B36FC, gUnknown_0203CEC8.exitCallback);
+ }
+ else
+ {
+ gUnknown_0203CEFC = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_HELD_ITEM);
+ if (gUnknown_0203CEFC != ITEM_NONE)
+ {
+ InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 0x7F, sub_81B4350, gUnknown_0203CEC8.exitCallback);
+ }
+ else if (ItemIsMail(gSpecialVar_ItemId))
+ {
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
+ sub_81B452C();
+ }
+ else
+ {
+ InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 0x7F, sub_81B42D0, gUnknown_0203CEC8.exitCallback);
+ }
+ }
+}
+
+void sub_81B42D0(u8 taskId)
+{
+ u16 item;
+
+ if (!gPaletteFade.active)
+ {
+ item = gSpecialVar_ItemId;
+ sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.unk9], item, 0, 0);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], item);
+ RemoveBagItem(item, 1);
+ gTasks[taskId].func = sub_81B469C;
+ }
+}
+
+void sub_81B4350(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ sub_81B1D1C(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEFC, 1);
+ gTasks[taskId].func = sub_81B43A8;
+ }
+}
+
+void sub_81B43A8(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B43DC;
+ }
+}
+
+void sub_81B43DC(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ if (AddBagItem(gUnknown_0203CEFC, 1) == FALSE)
+ {
+ AddBagItem(gSpecialVar_ItemId, 1);
+ pokemon_item_not_removed(gUnknown_0203CEFC);
+ sub_81B1B5C(gStringVar4, 0);
+ gTasks[taskId].func = sub_81B1C1C;
+ }
+ else if (ItemIsMail(gSpecialVar_ItemId))
+ {
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
+ gTasks[taskId].func = sub_81B44FC;
+ }
+ else
+ {
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
+ sub_81B1D68(gSpecialVar_ItemId, gUnknown_0203CEFC, 1);
+ gTasks[taskId].func = sub_81B469C;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B1C1C;
+ break;
+ }
+}
+
+void sub_81B44FC(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ gUnknown_0203CEC4->exitCallback = sub_81B452C;
+ sub_81B12C0(taskId);
+ }
+}
+
+void sub_81B452C(void)
+{
+ u8 mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
+
+ sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B4578, 3);
+}
+
+void sub_81B4578(void)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
+
+ if (gSpecialVar_Result == FALSE)
+ {
+ TakeMailFromMon(mon);
+ SetMonData(mon, MON_DATA_HELD_ITEM, &gUnknown_0203CEFC);
+ RemoveBagItem(gUnknown_0203CEFC, 1);
+ AddBagItem(item, 1);
+ InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 0, sub_81B36FC, gUnknown_0203CEC8.exitCallback);
+ }
+ else
+ {
+ InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 0x7F, sub_81B4624, gUnknown_0203CEC8.exitCallback);
+ }
+}
+
+void sub_81B4624(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gUnknown_0203CEFC == ITEM_NONE)
+ sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId, 0, 0);
+ else
+ sub_81B1D68(gSpecialVar_ItemId, gUnknown_0203CEFC, 0);
+ gTasks[taskId].func = sub_81B469C;
+ }
+}
+
+void sub_81B469C(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
+ if (gUnknown_0203CEC8.unk8_0 == 12)
+ {
+ if (GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE)
+ DisplayPartyPokemonOtherText(11, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ else
+ DisplayPartyPokemonOtherText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ }
+ sub_81B1C1C(taskId);
+ }
+}
+
+void sub_81B4724(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
+
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ switch (sub_81B1E00(mon))
+ {
+ case 0:
+ GetMonNickname(mon, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnNotHolding);
+ sub_81B1B5C(gStringVar4, 1);
+ break;
+ case 1:
+ pokemon_item_not_removed(item);
+ sub_81B1B5C(gStringVar4, 1);
+ break;
+ default:
+ sub_81B1CD0(mon, item, 1);
+ break;
+ }
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B469C;
+}
+
+void sub_81B47E0(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
+
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ if (item == ITEM_NONE)
+ {
+ GetMonNickname(mon, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnNotHolding);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B469C;
+ }
+ else
+ {
+ CopyItemName(item, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_ThrowAwayItem);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B48A8;
+ }
+}
+
+void sub_81B48A8(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B48DC;
+ }
+}
+
+void sub_81B48DC(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ CopyItemName(GetMonData(mon, MON_DATA_HELD_ITEM), gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_ItemThrownAway);
+ sub_81B1B5C(gStringVar4, 0);
+ gTasks[taskId].func = sub_81B4988;
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B1C1C;
+ break;
+ }
+}
+
+void sub_81B4988(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 itemClear;
+
+ if (sub_81B1BD4() != TRUE)
+ {
+ itemClear = ITEM_NONE;
+ SetMonData(mon, MON_DATA_HELD_ITEM, &itemClear);
+ sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
+ DisplayPartyPokemonOtherText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ gTasks[taskId].func = sub_81B1C1C;
+ }
+}
+
+void sub_81B4A08(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, 9);
+ sub_81B31B0(2);
+ display_pokemon_menu_message(25);
+ gTasks[taskId].data[0] = 0xFF;
+ gTasks[taskId].func = sub_81B3730;
+}
+
+void sub_81B4A6C(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ gUnknown_0203CEC4->exitCallback = sub_81B4A98;
+ sub_81B12C0(taskId);
+}
+
+void sub_81B4A98(void)
+{
+ ReadMail(&gSaveBlock1Ptr->mail[GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL)], sub_81B4AE0, 1);
+}
+
+void sub_81B4AE0(void)
+{
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 21, sub_81B36FC, gUnknown_0203CEC8.exitCallback);
+}
+
+void brm_take_2(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B1B5C(gText_SendMailToPC, 1);
+ gTasks[taskId].func = sub_81B4B6C;
+}
+
+void sub_81B4B6C(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B4BA0;
+ }
+}
+
+void sub_81B4BA0(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ if (TakeMailFromMon2(&gPlayerParty[gUnknown_0203CEC8.unk9]) != 0xFF)
+ {
+ sub_81B1B5C(gText_MailSentToPC, 0);
+ gTasks[taskId].func = sub_81B469C;
+ }
+ else
+ {
+ sub_81B1B5C(gText_PCMailboxFull, 0);
+ gTasks[taskId].func = sub_81B1C1C;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ sub_81B1B5C(gText_MailMessageWillBeLost, 1);
+ gTasks[taskId].func = sub_81B4C60;
+ break;
+ }
+}
+
+void sub_81B4C60(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B4C94;
+ }
+}
+
+void sub_81B4C94(u8 taskId)
+{
+ u16 item;
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ item = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_HELD_ITEM);
+ if (AddBagItem(item, 1) == TRUE)
+ {
+ TakeMailFromMon(&gPlayerParty[gUnknown_0203CEC8.unk9]);
+ sub_81B1B5C(gText_MailTakenFromPkmn, 0);
+ gTasks[taskId].func = sub_81B469C;
+ }
+ else
+ {
+ pokemon_item_not_removed(item);
+ sub_81B1B5C(gStringVar4, 0);
+ gTasks[taskId].func = sub_81B1C1C;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B1C1C;
+ break;
+ }
+}
+
+void sub_81B4D78(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, sub_81B353C(mon));
+ if (gUnknown_0203CEC8.unk8_0 != 12)
+ {
+ sub_81B31B0(0);
+ display_pokemon_menu_message(21);
+ }
+ else
+ {
+ sub_81B31B0(1);
+ CopyItemName(GetMonData(mon, MON_DATA_HELD_ITEM), gStringVar2);
+ display_pokemon_menu_message(26);
+ }
+ gTasks[taskId].data[0] = 0xFF;
+ gTasks[taskId].func = sub_81B3730;
+}
+
+void brm_shift_sendout(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ if (sub_81B8A7C() == TRUE)
+ {
+ sub_81B12C0(taskId);
+ }
+ else
+ {
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B1C1C;
+ }
+}
+
+void sub_81B4E8C(u8 taskId)
+{
+ u8 unk;
+ u8 i;
+
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ unk = sub_81B8830();
+ for (i = 0; i < unk; i++)
+ {
+ if (gSelectedOrderFromParty[i] == 0)
+ {
+ PlaySE(SE_SELECT);
+ gSelectedOrderFromParty[i] = gUnknown_0203CEC8.unk9 + 1;
+ DisplayPartyPokemonOtherText(i + 2, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ if (i == (unk - 1))
+ sub_81B4F88();
+ display_pokemon_menu_message(0);
+ gTasks[taskId].func = sub_81B1370;
+ return;
+ }
+ }
+ ConvertIntToDecimalStringN(gStringVar1, unk, 0, 1);
+ StringExpandPlaceholders(gStringVar4, gText_NoMoreThanVar1Pkmn);
+ PlaySE(SE_HAZURE);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B1C1C;
+}
+
+void sub_81B4F88(void)
+{
+ sub_81B0FCC(gUnknown_0203CEC8.unk9, 0);
+ gUnknown_0203CEC8.unk9 = 6;
+ sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
+}
+
+void sub_81B4FA8(u8 taskId)
+{
+ u8 unk;
+ u8 i, j;
+
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ unk = sub_81B8830();
+ for (i = 0; i < unk; i++)
+ {
+ if (gSelectedOrderFromParty[i] == (gUnknown_0203CEC8.unk9 + 1))
+ {
+ for (j = i; j < (unk - 1); j++)
+ gSelectedOrderFromParty[j] = gSelectedOrderFromParty[j + 1];
+ gSelectedOrderFromParty[j] = 0;
+ break;
+ }
+ }
+ DisplayPartyPokemonOtherText(1, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ for (i = 0; i < (unk - 1); i++)
+ {
+ if (gSelectedOrderFromParty[i] != 0)
+ DisplayPartyPokemonOtherText(i + 2, &gUnknown_0203CEDC[gSelectedOrderFromParty[i] - 1], 1);
+ }
+ display_pokemon_menu_message(0);
+ gTasks[taskId].func = sub_81B1370;
+}
+
+void sub_81B50AC(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ sub_81B12C0(taskId);
+}
+
+void sub_81B50C8(u8 taskId)
+{
+ u16 species2 = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES2);
+ u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
+ u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_OBEDIENCE);
+
+ switch (sub_807A8D0(*(u32 *)sub_800F7DC() /* dirty cast, probably needs to be changed */, species2, species, obedience))
+ {
+ case 1:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
+ break;
+ case 2:
+ StringExpandPlaceholders(gStringVar4, gText_EggCantBeTradedNow);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sub_81B12C0(taskId);
+ return;
+ }
+ PlaySE(SE_HAZURE);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ StringAppend(gStringVar4, gText_PauseUntilPress);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B1C1C;
+}
+
+void brm_trade_1(u8 taskId)
+{
+ u16 species2 = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES2);
+ u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
+ u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_OBEDIENCE);
+ u32 stringId = sub_807A7E0(*(u32 *)sub_800F7DC() /* dirty cast, probably needs to be changed */, *(u32 *)&gUnknown_02022C38 /* dirty cast, probably needs to be changed */, species2, gUnknown_02022C3C, gUnknown_02022C3E, species, obedience);
+
+ if (stringId != 0)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_08615E0C[stringId - 1]);
+ PlaySE(SE_HAZURE);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ StringAppend(gStringVar4, gText_PauseUntilPress);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B1C1C;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_81B12C0(taskId);
+ }
+}
+
+void sub_81B52E4(u8 taskId)
+{
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ switch (sub_807A918(gPlayerParty, gUnknown_0203CEC8.unk9))
+ {
+ case 1:
+ StringExpandPlaceholders(gStringVar4, gText_OnlyPkmnForBattle);
+ break;
+ case 2:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
+ break;
+ case 3:
+ StringExpandPlaceholders(gStringVar4, gText_EggCantBeTradedNow);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gJPText_PutVar1IntoSpinner);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B53FC;
+ return;
+ }
+ PlaySE(SE_HAZURE);
+ StringAppend(gStringVar4, gText_PauseUntilPress);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B1C1C;
+}
+
+void sub_81B53FC(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B5430;
+ }
+}
+
+void sub_81B5430(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ sub_81B12C0(taskId);
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ sub_81B1C1C(taskId);
+ break;
+ }
+}
+
+void sub_81B5470(u8 taskId)
+{
+ u8 fieldMove = gUnknown_0203CEC4->unkF[Menu_GetCursorPos()] - 19;
+ struct MapHeader const *mapHeader;
+ u8 fieldMove2;
+
+ PlaySE(SE_SELECT);
+ if (gUnknown_08615D9C[fieldMove].fieldMoveFunc != NULL)
+ {
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ if (sub_81221AC() == TRUE || InUnionRoom() == TRUE)
+ {
+ fieldMove2 = fieldMove - 11;
+ if (fieldMove2 <= 1)
+ display_pokemon_menu_message(13);
+ else
+ display_pokemon_menu_message(gUnknown_08615D9C[fieldMove].msgID);
+ gTasks[taskId].func = task_brm_cancel_1_on_keypad_a_or_b;
+ }
+ else
+ {
+ if (fieldMove <= 7 && FlagGet(FLAG_BADGE01_GET + fieldMove) != TRUE)
+ {
+ sub_81B1B5C(gText_CantUseUntilNewBadge, 1);
+ gTasks[taskId].func = sub_81B1C1C;
+ }
+ else if (gUnknown_08615D9C[fieldMove].fieldMoveFunc() == TRUE)
+ {
+ switch (fieldMove - 5)
+ {
+ case 6:
+ case 7:
+ sub_8161560(taskId);
+ break;
+ case 3:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->lastHealLocation.mapGroup, gSaveBlock1Ptr->lastHealLocation.mapNum);
+ sub_81245DC(gStringVar1, mapHeader->regionMapSectionId);
+ StringExpandPlaceholders(gStringVar4, gText_ReturnToHealingSpot);
+ sub_81B5674(taskId);
+ gUnknown_0203CEC4->data[0] = fieldMove;
+ break;
+ case 4:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
+ sub_81245DC(gStringVar1, mapHeader->regionMapSectionId);
+ StringExpandPlaceholders(gStringVar4, gText_EscapeFromHere);
+ sub_81B5674(taskId);
+ gUnknown_0203CEC4->data[0] = fieldMove;
+ break;
+ case 0:
+ gUnknown_0203CEC8.exitCallback = MCB2_FlyMap;
+ sub_81B12C0(taskId);
+ break;
+ default:
+ gUnknown_0203CEC8.exitCallback = CB2_ReturnToField;
+ sub_81B12C0(taskId);
+ break;
+ }
+ }
+ else
+ {
+ switch (fieldMove)
+ {
+ case 4:
+ sub_81B5864();
+ break;
+ case 1:
+ sub_81B57DC();
+ break;
+ default:
+ display_pokemon_menu_message(gUnknown_08615D9C[fieldMove].msgID);
+ break;
+ }
+ gTasks[taskId].func = task_brm_cancel_1_on_keypad_a_or_b;
+ }
+ }
+ }
+}
+
+void sub_81B5674(u8 taskId)
+{
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B56A4;
+}
+
+void sub_81B56A4(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B56D8;
+ }
+}
+
+void sub_81B56D8(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ gUnknown_0203CEC8.exitCallback = CB2_ReturnToField;
+ sub_81B12C0(taskId);
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gFieldCallback2 = NULL;
+ gPostMenuFieldCallback = NULL;
+ sub_81B1C1C(taskId);
+ break;
+ }
+}
+
+bool8 FieldCallback_PrepareFadeInFromMenu(void)
+{
+ pal_fill_black();
+ CreateTask(task_launch_hm_phase_2, 8);
+ return TRUE;
+}
+
+void task_launch_hm_phase_2(u8 taskId)
+{
+ if (IsWeatherNotFadingIn() == TRUE)
+ {
+ gFieldEffectArguments[0] = brm_get_selected_species();
+ gPostMenuFieldCallback();
+ DestroyTask(taskId);
+ }
+}
+
+u16 brm_get_selected_species(void)
+{
+ return GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
+}
+
+void task_brm_cancel_1_on_keypad_a_or_b(u8 taskId)
+{
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ brm_cancel_1(taskId);
+}
+
+void sub_81B57DC(void)
+{
+ if (FlagGet(FLAG_SYS_USE_FLASH) == TRUE)
+ display_pokemon_menu_message(12);
+ else
+ display_pokemon_menu_message(13);
+}
+
+void hm_surf_run_dp02scr(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ FieldEffectStart(FLDEFF_USE_SURF);
+}
+
+bool8 sub_81B5820(void)
+{
+ if (PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE)
+ {
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = hm_surf_run_dp02scr;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_81B5864(void)
+{
+ if (TestPlayerAvatarFlags(8))
+ display_pokemon_menu_message(9);
+ else
+ display_pokemon_menu_message(8);
+}
+
+bool8 sub_81B5884(void)
+{
+ if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+void sub_81B58A8(void)
+{
+ InitPartyMenu(0, 0, 0, 1, 0, sub_81B1370, CB2_ReturnToFieldWithOpenMenu);
+}
+
+void hm2_waterfall(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ FieldEffectStart(FLDEFF_USE_WATERFALL);
+}
+
+bool8 hm_prepare_waterfall(void)
+{
+ s16 x, y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE && IsPlayerSurfingNorth() == TRUE)
+ {
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = hm2_waterfall;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_81B5958(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ FieldEffectStart(FLDEFF_USE_DIVE);
+}
+
+bool8 sub_81B5974(void)
+{
+ gFieldEffectArguments[1] = TrySetDiveWarp();
+ if (gFieldEffectArguments[1] != 0)
+ {
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_81B5958;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void party_menu_icon_anim(struct Pokemon *mon, struct Struct203CEDC *ptr, u32 a)
+{
+ u32 bit = 1;
+ u16 species2;
+
+ if (IsMultiBattle() == TRUE && gMain.inBattle)
+ bit = (gUnknown_08616020[a] ^ bit) ? 1 : 0;
+ species2 = GetMonData(mon, MON_DATA_SPECIES2);
+ party_menu_link_mon_icon_anim(species2, GetMonData(mon, MON_DATA_PERSONALITY), ptr, 1, bit);
+ sub_81B5B38(ptr->unk9, mon);
+}
+
+void party_menu_link_mon_icon_anim(u16 species, u32 pid, struct Struct203CEDC *ptr, u8 priority, u32 bit)
+{
+ if (species != SPECIES_NONE)
+ {
+ ptr->unk9 = CreateMonIcon(species, sub_80D3014, ptr->unk4[0], ptr->unk4[1], 4, pid, bit);
+ gSprites[ptr->unk9].oam.priority = priority;
+ }
+}
+
+void sub_81B5A8C(u8 spriteId, u16 hp, u16 maxhp)
+{
+ switch (GetHPBarLevel(hp, maxhp))
+ {
+ case HP_BAR_FULL:
+ sub_80D32C8(&gSprites[spriteId], 0);
+ break;
+ case HP_BAR_GREEN:
+ sub_80D32C8(&gSprites[spriteId], 1);
+ break;
+ case HP_BAR_YELLOW:
+ sub_80D32C8(&gSprites[spriteId], 2);
+ break;
+ case HP_BAR_RED:
+ sub_80D32C8(&gSprites[spriteId], 3);
+ break;
+ default:
+ sub_80D32C8(&gSprites[spriteId], 4);
+ break;
+ }
+}
+
+void sub_81B5B38(u8 spriteId, struct Pokemon *mon)
+{
+ sub_81B5A8C(spriteId, GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP));
+}
+
+void AnimateSelectedPartyIcon(u8 spriteId, u8 a)
+{
+ gSprites[spriteId].data[0] = 0;
+ if (a == 0)
+ {
+ if (gSprites[spriteId].pos1.x == 16)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = -4;
+ }
+ else
+ {
+ gSprites[spriteId].pos2.x = -4;
+ gSprites[spriteId].pos2.y = 0;
+ }
+ gSprites[spriteId].callback = UpdatePartyMonIconFrame;
+ }
+ else
+ {
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].callback = UpdatePartyMonIconFrameAndBounce;
+ }
+}
+
+void UpdatePartyMonIconFrameAndBounce(struct Sprite *sprite)
+{
+ u8 unk = UpdateMonIconFrame(sprite);
+
+ if (unk != 0)
+ {
+ if (unk & 1)
+ sprite->pos2.y = -3;
+ else
+ sprite->pos2.y = 1;
+ }
+}
+
+void UpdatePartyMonIconFrame(struct Sprite *sprite)
+{
+ UpdateMonIconFrame(sprite);
+}
+
+void party_menu_held_item_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
+{
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ ptr->unkA = CreateSprite(&gSpriteTemplate_8615EC0, ptr->unk4[2], ptr->unk4[3], 0);
+ sub_81B5C94(mon, ptr);
+ }
+}
+
+void party_menu_link_mon_held_item_object(u16 species, u16 item, struct Struct203CEDC *ptr)
+{
+ if (species != SPECIES_NONE)
+ {
+ ptr->unkA = CreateSprite(&gSpriteTemplate_8615EC0, ptr->unk4[2], ptr->unk4[3], 0);
+ gSprites[ptr->unkA].oam.priority = 0;
+ sub_81B5CB0(item, ptr);
+ }
+}
+
+void sub_81B5C94(struct Pokemon *mon, struct Struct203CEDC *ptr)
+{
+ sub_81B5CB0(GetMonData(mon, MON_DATA_HELD_ITEM), ptr);
+}
+
+void sub_81B5CB0(u16 item, struct Struct203CEDC *ptr)
+{
+ if (item == ITEM_NONE)
+ {
+ gSprites[ptr->unkA].invisible = TRUE;
+ }
+ else
+ {
+ if (ItemIsMail(item))
+ StartSpriteAnim(&gSprites[ptr->unkA], 1);
+ else
+ StartSpriteAnim(&gSprites[ptr->unkA], 0);
+ gSprites[ptr->unkA].invisible = FALSE;
+ }
+}
+
+void LoadHeldItemIcons(void)
+{
+ LoadSpriteSheet(&gUnknown_08615EB0);
+ LoadSpritePalette(&gUnknown_08615EB8);
+}
+
+void sub_81B5D4C(u8 *a, u8 *b, u8 c)
+{
+ u16 i;
+ u16 item;
+
+ switch (c)
+ {
+ case 0:
+ for (i = 0; i < a[0]; i++)
+ {
+ item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ if (item != ITEM_NONE)
+ sub_81B5DF0(b[i], ItemIsMail(item));
+ }
+ break;
+ case 1:
+ for (i = 0; i < a[1]; i++)
+ {
+ item = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM);
+ if (item != ITEM_NONE)
+ sub_81B5DF0(b[i + 6], ItemIsMail(item));
+ }
+ break;
+ }
+}
+
+void sub_81B5DF0(u8 spriteId, u8 isMail)
+{
+ u8 subpriority = gSprites[spriteId].subpriority;
+ u8 newSpriteId = CreateSprite(&gSpriteTemplate_8615EC0, 250, 170, subpriority - 1);
+
+ gSprites[newSpriteId].pos2.x = 4;
+ gSprites[newSpriteId].pos2.y = 10;
+ gSprites[newSpriteId].callback = sub_81B5E74;
+ gSprites[newSpriteId].data[7] = spriteId;
+ StartSpriteAnim(&gSprites[newSpriteId], isMail);
+ gSprites[newSpriteId].callback(&gSprites[newSpriteId]);
+}
+
+void sub_81B5E74(struct Sprite *sprite)
+{
+ u8 otherSpriteId = sprite->data[7];
+
+ if (gSprites[otherSpriteId].invisible)
+ {
+ sprite->invisible = TRUE;
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ sprite->pos1.x = gSprites[otherSpriteId].pos1.x + gSprites[otherSpriteId].pos2.x;
+ sprite->pos1.y = gSprites[otherSpriteId].pos1.y + gSprites[otherSpriteId].pos2.y;
+ }
+}
+
+void party_menu_pokeball_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
+{
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ ptr->unkB = CreateSprite(&gSpriteTemplate_8615F08, ptr->unk4[6], ptr->unk4[7], 8);
+}
+
+void party_menu_link_mon_pokeball_object(u16 species, struct Struct203CEDC *ptr)
+{
+ if (species != SPECIES_NONE)
+ {
+ ptr->unkB = CreateSprite(&gSpriteTemplate_8615F08, ptr->unk4[6], ptr->unk4[7], 8);
+ gSprites[ptr->unkB].oam.priority = 0;
+ }
+}
+
+u8 sub_81B5F34(u8 x, u8 y)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_8615F08, x, y, 8);
+
+ gSprites[spriteId].oam.priority = 2;
+ return spriteId;
+}
+
+u8 sub_81B5F74(u8 x, u8 y)
+{
+ return CreateSprite(&gSpriteTemplate_8615F78, x, y, 8);
+}
+
+void sub_81B5F98(u8 spriteId, u8 a)
+{
+ StartSpriteAnim(&gSprites[spriteId], a);
+}
+
+void sub_81B5FBC(u8 spriteId, u8 spriteId2, u8 a)
+{
+ if (a == 0)
+ {
+ StartSpriteAnim(&gSprites[spriteId], 2);
+ StartSpriteAnim(&gSprites[spriteId2], 4);
+ gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId2].pos2.y = 0;
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[spriteId], 3);
+ StartSpriteAnim(&gSprites[spriteId2], 5);
+ gSprites[spriteId].pos2.y = -4;
+ gSprites[spriteId2].pos2.y = 4;
+ }
+}
+
+void LoadPartyMenuPokeballGfx(void)
+{
+ LoadCompressedSpriteSheet(&gUnknown_08615EF8);
+ LoadCompressedSpriteSheet(&gUnknown_08615F70);
+ LoadCompressedSpritePalette(&gUnknown_08615F00);
+}
+
+void party_menu_status_condition_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
+{
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ ptr->unkC = CreateSprite(&gSpriteTemplate_8616008, ptr->unk4[4], ptr->unk4[5], 0);
+ party_menu_get_status_condition_and_update_object(mon, ptr);
+ }
+}
+
+void party_menu_link_mon_status_condition_object(u16 species, u8 status, struct Struct203CEDC *ptr)
+{
+ if (species != SPECIES_NONE)
+ {
+ ptr->unkC = CreateSprite(&gSpriteTemplate_8616008, ptr->unk4[4], ptr->unk4[5], 0);
+ party_menu_update_status_condition_object(status, ptr);
+ gSprites[ptr->unkC].oam.priority = 0;
+ }
+}
+
+void party_menu_get_status_condition_and_update_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
+{
+ party_menu_update_status_condition_object(sub_81B205C(mon), ptr);
+}
+
+void party_menu_update_status_condition_object(u8 status, struct Struct203CEDC *ptr)
+{
+ switch (status)
+ {
+ case AILMENT_NONE:
+ case AILMENT_PKRS:
+ gSprites[ptr->unkC].invisible = TRUE;
+ break;
+ default:
+ StartSpriteAnim(&gSprites[ptr->unkC], status - 1);
+ gSprites[ptr->unkC].invisible = FALSE;
+ break;
+ }
+}
+
+void LoadPartyMenuAilmentGfx(void)
+{
+ LoadCompressedSpriteSheet(&gUnknown_08615FF8);
+ LoadCompressedSpritePalette(&gUnknown_08616000);
+}
+
+void sub_81B617C(void)
+{
+ MainCallback callback = c2_815ABFC;
+ u8 doubleBattleStatus;
+ bool8 inBattle;
+ u8 i;
+ u8 msgIDMaybe;
+ register TaskFunc task asm("r0");
+
+ if (gMain.inBattle)
+ {
+ inBattle = TRUE;
+ doubleBattleStatus = sub_81B8984();
+ }
+ else
+ {
+ inBattle = FALSE;
+ doubleBattleStatus = 0;
+ }
+ if (GetItemEffectType(gSpecialVar_ItemId) == 10)
+ {
+ gUnknown_0203CEC8.unk9 = 0;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ {
+ gUnknown_0203CEC8.unk9 = i;
+ break;
+ }
+ }
+ task = sub_81B6280;
+ msgIDMaybe = 0x7F;
+ }
+ else
+ {
+ msgIDMaybe = (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_TM_HM) ? 4 : 5;
+ task = sub_81B1370;
+ }
+ InitPartyMenu(inBattle, doubleBattleStatus, 3, 1, msgIDMaybe, task, callback);
+}
+
+void c2_815ABFC(void)
+{
+ if (InBattlePyramid() == FALSE)
+ GoToBagMenu(RETURN_LOCATION_UNCHANGED, POCKETS_COUNT, NULL);
+ else
+ sub_81C4F98(4, gPyramidBagCursorData.callback);
+}
+
+void sub_81B6280(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gUnknown_0203CEC8.unk8_0 == 1)
+ gUnknown_0203CEC4->exitCallback = sub_81B9140;
+ gUnknown_03006328(taskId, sub_81B6794);
+ }
+}
+
+bool8 IsHPRecoveryItem(u16 item)
+{
+ const u8 *effect;
+
+ if (item == ITEM_ENIGMA_BERRY)
+ effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
+ else
+ effect = gItemEffectTable[item - ITEM_POTION];
+ if ((effect[4] & 4) != 0)
+ return TRUE;
+ return FALSE;
+}
+
+void GetMedicineItemEffectMessage(u16 item)
+{
+ switch (GetItemEffectType(item) - 3)
+ {
+ case 0:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfPoison);
+ break;
+ case 1:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnWokeUp2);
+ break;
+ case 2:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBurnHealed);
+ break;
+ case 3:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnThawedOut);
+ break;
+ case 4:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfParalysis);
+ break;
+ case 5:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnSnappedOutOfConfusion);
+ break;
+ case 6:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnGotOverInfatuation);
+ break;
+ case 8:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBecameHealthy);
+ break;
+ case 10:
+ StringCopy(gStringVar2, gText_HP3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 9:
+ StringCopy(gStringVar2, gText_Attack3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 14:
+ StringCopy(gStringVar2, gText_Defense3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 13:
+ StringCopy(gStringVar2, gText_Speed2);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 11:
+ StringCopy(gStringVar2, gText_SpAtk3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 12:
+ StringCopy(gStringVar2, gText_SpDef3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 16:
+ case 17:
+ StringExpandPlaceholders(gStringVar4, gText_MovesPPIncreased);
+ break;
+ case 18:
+ StringExpandPlaceholders(gStringVar4, gText_PPWasRestored);
+ break;
+ default:
+ StringExpandPlaceholders(gStringVar4, gText_WontHaveEffect);
+ break;
+ }
+}
+
+bool8 UsingHPEVItemOnShedinja(struct Pokemon *mon, u16 item)
+{
+ if (GetItemEffectType(item) == 13 && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA)
+ return FALSE;
+ return TRUE;
+}
+
+bool8 IsBlueYellowRedFlute(u16 item)
+{
+ if (item == ITEM_BLUE_FLUTE || item == ITEM_RED_FLUTE || item == ITEM_YELLOW_FLUTE)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 ExecuteTableBasedItemEffect__(u8 partyMonIndex, u16 item, u8 monMoveIndex)
+{
+ if (gMain.inBattle)
+ return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, sub_81B8F38(partyMonIndex), monMoveIndex);
+ else
+ return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, partyMonIndex, monMoveIndex);
+}
+
+void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
+{
+ u16 hp = 0;
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 item = gSpecialVar_ItemId;
+ bool8 canHeal;
+
+ if (UsingHPEVItemOnShedinja(mon, item))
+ {
+ canHeal = IsHPRecoveryItem(item);
+ if (canHeal == TRUE)
+ {
+ hp = GetMonData(mon, MON_DATA_HP);
+ if (hp == GetMonData(mon, MON_DATA_MAX_HP))
+ canHeal = FALSE;
+ }
+ if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, item, 0))
+ {
+ iTriedHonestlyIDid:
+ gUnknown_0203CEE8 = 0;
+ PlaySE(SE_SELECT);
+ sub_81B1B5C(gText_WontHaveEffect, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = task;
+ return;
+ }
+ }
+ else
+ {
+ goto iTriedHonestlyIDid;
+ }
+ gUnknown_0203CEE8 = 1;
+ if (IsBlueYellowRedFlute(item) == FALSE)
+ {
+ PlaySE(SE_KAIFUKU);
+ if (gUnknown_0203CEC8.unkB != 14)
+ RemoveBagItem(item, 1);
+ }
+ else
+ {
+ PlaySE(SE_BIDORO);
+ }
+ party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
+ if (gSprites[gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].unkC].invisible)
+ DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ if (canHeal == TRUE)
+ {
+ if (hp == 0)
+ sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
+ sub_81B1F18(taskId, gUnknown_0203CEC8.unk9, 1, GetMonData(mon, MON_DATA_HP) - hp, sub_81B672C);
+ sub_81B1FA8(taskId, 0, hp);
+ return;
+ }
+ else
+ {
+ GetMonNickname(mon, gStringVar1);
+ GetMedicineItemEffectMessage(item);
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = task;
+ }
+}
+
+void sub_81B672C(u8 taskId)
+{
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
+ sub_81B1B5C(gStringVar4, 0);
+ schedule_bg_copy_tilemap_to_vram(2);
+ HandleBattleLowHpMusicChange();
+ gTasks[taskId].func = sub_81B6794;
+}
+
+void sub_81B6794(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ if (gUnknown_0203CEE8 == 0)
+ gUnknown_0203CEC4->exitCallback = NULL;
+ sub_81B12C0(taskId);
+ }
+}
+
+void sub_81B67C8(u8 taskId, TaskFunc task)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 item = gSpecialVar_ItemId;
+ u8 effectType = GetItemEffectType(item);
+ u16 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
+ u16 relevantEV = sub_81B691C(mon, effectType);
+ bool8 cannotUseEffect = ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, item, 0);
+ u16 newFriendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
+ u16 newRelevantEV = sub_81B691C(mon, effectType);
+
+ if (cannotUseEffect || (friendship == newFriendship && relevantEV == newRelevantEV))
+ {
+ gUnknown_0203CEE8 = 0;
+ PlaySE(SE_SELECT);
+ sub_81B1B5C(gText_WontHaveEffect, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = task;
+ }
+ else
+ {
+ gUnknown_0203CEE8 = 1;
+ PlaySE(SE_KAIFUKU);
+ RemoveBagItem(item, 1);
+ GetMonNickname(mon, gStringVar1);
+ option_menu_get_string(effectType, gStringVar2);
+ if (friendship != newFriendship)
+ {
+ if (relevantEV != newRelevantEV)
+ StringExpandPlaceholders(gStringVar4, gText_PkmnFriendlyBaseVar2Fell);
+ else
+ StringExpandPlaceholders(gStringVar4, gText_PkmnFriendlyBaseVar2CantFall);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gText_PkmnAdoresBaseVar2Fell);
+ }
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = task;
+ }
+}
+
+u16 sub_81B691C(struct Pokemon *mon, u8 effectType)
+{
+ switch (effectType)
+ {
+ case 13:
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_SHEDINJA)
+ return GetMonData(mon, MON_DATA_HP_EV);
+ break;
+ case 12:
+ return GetMonData(mon, MON_DATA_ATK_EV);
+ case 17:
+ return GetMonData(mon, MON_DATA_DEF_EV);
+ case 16:
+ return GetMonData(mon, MON_DATA_SPEED_EV);
+ case 14:
+ return GetMonData(mon, MON_DATA_SPATK_EV);
+ case 15:
+ return GetMonData(mon, MON_DATA_SPDEF_EV);
+ }
+ return 0;
+}
+
+void option_menu_get_string(u8 effectType, u8 *dest)
+{
+ switch (effectType)
+ {
+ case 13:
+ StringCopy(dest, gText_HP3);
+ break;
+ case 12:
+ StringCopy(dest, gText_Attack3);
+ break;
+ case 17:
+ StringCopy(dest, gText_Defense3);
+ break;
+ case 16:
+ StringCopy(dest, gText_Speed2);
+ break;
+ case 14:
+ StringCopy(dest, gText_SpAtk3);
+ break;
+ case 15:
+ StringCopy(dest, gText_SpDef3);
+ break;
+ }
+}
+
+void sub_81B6A10(u8 slot)
+{
+ u8 i;
+ u8 moveCount = 0;
+ u8 fontId = 1;
+ u8 windowId = sub_81B31B0(3);
+ u16 move;
+
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ move = GetMonData(&gPlayerParty[slot], MON_DATA_MOVE1 + i);
+ AddTextPrinterParameterized(windowId, fontId, gMoveNames[move], 8, (i * 16) + 1, 0xFF, NULL);
+ if (move != MOVE_NONE)
+ moveCount++;
+ }
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, moveCount, 0);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void ether_effect_related_3(u8 taskId)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input != MENU_NOTHING_CHOSEN)
+ {
+ if (input == MENU_B_PRESSED)
+ {
+ PlaySE(SE_SELECT);
+ sub_81B6BB4(taskId);
+ }
+ else
+ {
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ ether_effect_related_2(taskId);
+ }
+ }
+}
+
+void dp05_ether(u8 taskId, TaskFunc unused)
+{
+ const u8 *effect;
+ u16 item = gSpecialVar_ItemId;
+
+ if (item == ITEM_ENIGMA_BERRY)
+ effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
+ else
+ effect = gItemEffectTable[item - ITEM_POTION];
+ if ((effect[4] & 0x10) == 0)
+ {
+ gUnknown_0203CEC8.unkE = 0;
+ ether_effect_related(taskId);
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ display_pokemon_menu_message(22);
+ sub_81B6A10(gUnknown_0203CEC8.unk9);
+ gTasks[taskId].func = ether_effect_related_3;
+ }
+}
+
+void ether_effect_related_2(u8 taskId)
+{
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ gUnknown_0203CEC8.unkE = Menu_GetCursorPos();
+ ether_effect_related(taskId);
+}
+
+void sub_81B6BB4(u8 taskId)
+{
+ gTasks[taskId].func = sub_81B1370;
+ gUnknown_0203CEC4->exitCallback = NULL;
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ display_pokemon_menu_message(5);
+}
+
+void ether_effect_related(u8 taskId)
+{
+ u16 move = MOVE_NONE;
+ s16 *moveslot = &gUnknown_0203CEC8.unkE;
+ u16 item = gSpecialVar_ItemId;
+ struct Struct203CEC8 *ptr = &gUnknown_0203CEC8;
+ struct Pokemon *mon;
+
+ if (ExecuteTableBasedItemEffect__(ptr->unk9, item, *moveslot))
+ {
+ gUnknown_0203CEE8 = 0;
+ PlaySE(SE_SELECT);
+ sub_81B1B5C(gText_WontHaveEffect, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B6794;
+ }
+ else
+ {
+ gUnknown_0203CEE8 = 1;
+ mon = &gPlayerParty[ptr->unk9];
+ PlaySE(SE_KAIFUKU);
+ RemoveBagItem(item, 1);
+ move = GetMonData(mon, MON_DATA_MOVE1 + *moveslot);
+ StringCopy(gStringVar1, gMoveNames[move]);
+ GetMedicineItemEffectMessage(item);
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B6794;
+ }
+}
+
+void dp05_pp_up(u8 taskId, TaskFunc unused)
+{
+ PlaySE(SE_SELECT);
+ display_pokemon_menu_message(23);
+ sub_81B6A10(gUnknown_0203CEC8.unk9);
+ gTasks[taskId].func = ether_effect_related_3;
+}
+
+u16 ItemIdToBattleMoveId(u16 item)
+{
+ u16 tmNumber = item - ITEM_TM01_FOCUS_PUNCH;
+ return gUnknown_08616040[tmNumber];
+}
+
+bool8 sub_81B6D14(u16 move)
+{
+ u8 i;
+
+ for (i = 0; i < NUM_HIDDEN_MACHINES; i++)
+ {
+ if (gUnknown_08616040[i + NUM_TECHNICAL_MACHINES] == move)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 pokemon_has_move(struct Pokemon *mon, u16 move)
+{
+ u8 i;
+
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (GetMonData(mon, MON_DATA_MOVE1 + i) == move)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_81B6D74(const u8 *str)
+{
+ StringExpandPlaceholders(gStringVar4, str);
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81B6D98(u8 taskId, const u8 *str)
+{
+ sub_81B6D74(str);
+ gTasks[taskId].func = sub_81B6794;
+}
+
+// move[1] doesn't use constants cause I don't know if it's actually a move ID storage
+
+void sub_81B6DC4(u8 taskId, TaskFunc unused)
+{
+ struct Pokemon *mon;
+ s16 *move;
+ u16 item;
+
+ PlaySE(SE_SELECT);
+ mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ move = &gUnknown_0203CEC8.unkE;
+ item = gSpecialVar_ItemId;
+ GetMonNickname(mon, gStringVar1);
+ move[0] = ItemIdToBattleMoveId(item);
+ StringCopy(gStringVar2, gMoveNames[move[0]]);
+ move[1] = 0;
+ switch (CanPartyPokemonLearnTMTutor(mon, item, 0))
+ {
+ case CANNOT_LEARN_MOVE:
+ sub_81B6D98(taskId, gText_PkmnCantLearnMove);
+ return;
+ case ALREADY_KNOWS_MOVE:
+ sub_81B6D98(taskId, gText_PkmnAlreadyKnows);
+ return;
+ }
+ if (GiveMoveToMon(mon, move[0]) != 0xFFFF)
+ {
+ gTasks[taskId].func = sub_81B6EB4;
+ }
+ else
+ {
+ sub_81B6D74(gText_PkmnNeedsToReplaceMove);
+ gTasks[taskId].func = sub_81B6FF4;
+ }
+}
+
+void sub_81B6EB4(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ s16 *move = &gUnknown_0203CEC8.unkE;
+ u16 item = gSpecialVar_ItemId;
+
+ if (move[1] == 0)
+ {
+ AdjustFriendship(mon, 4);
+ if (item < ITEM_HM01_CUT)
+ RemoveBagItem(item, 1);
+ }
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[move[0]]);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnLearnedMove3);
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B6F60;
+}
+
+void sub_81B6F60(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ PlayFanfare(MUS_FANFA1);
+ gTasks[taskId].func = sub_81B6F98;
+ }
+}
+
+void sub_81B6F98(u8 taskId)
+{
+ if (IsFanfareTaskInactive() && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
+ {
+ if (gUnknown_0203CEC8.unk10 == 1)
+ sub_81B77AC(taskId);
+ else
+ {
+ if (gUnknown_0203CEC8.unk10 == 2)
+ gSpecialVar_Result = TRUE;
+ sub_81B12C0(taskId);
+ }
+ }
+}
+
+void sub_81B6FF4(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B7028;
+ }
+}
+
+void sub_81B7028(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ sub_81B1B5C(gText_WhichMoveToForget, 1);
+ gTasks[taskId].func = sub_81B7088;
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ sub_81B7230(taskId);
+ break;
+ }
+}
+
+void sub_81B7088(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ gUnknown_0203CEC4->exitCallback = sub_81B70B8;
+ sub_81B12C0(taskId);
+ }
+}
+
+void sub_81B70B8(void)
+{
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gUnknown_0203CEC8.unk9, gPlayerPartyCount - 1, sub_81B70F0, gUnknown_0203CEC8.unkE);
+}
+
+void sub_81B70F0(void)
+{
+ InitPartyMenu(0, 0, 0, 1, 0x7F, sub_81B711C, gUnknown_0203CEC8.exitCallback);
+}
+
+void sub_81B711C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (sub_81C1B94() != 4)
+ sub_81B7154(taskId);
+ else
+ sub_81B7230(taskId);
+ }
+}
+
+void sub_81B7154(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 move = GetMonData(mon, MON_DATA_MOVE1 + sub_81C1B94());
+
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[move]);
+ sub_81B6D74(gText_12PoofForgotMove);
+ gTasks[taskId].func = sub_81B71D4;
+}
+
+void sub_81B71D4(u8 taskId)
+{
+ struct Pokemon *mon;
+ u16 move;
+
+ if (sub_81B1BD4() != TRUE)
+ {
+ mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ RemoveMonPPBonus(mon, sub_81C1B94());
+ move = gUnknown_0203CEC8.unkE;
+ SetMonMoveSlot(mon, move, sub_81C1B94());
+ sub_81B6EB4(taskId);
+ }
+}
+
+void sub_81B7230(u8 taskId)
+{
+ StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
+ StringExpandPlaceholders(gStringVar4, gText_StopLearningMove2);
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B7294;
+}
+
+void sub_81B7294(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B72C8;
+ }
+}
+
+void sub_81B72C8(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
+ StringExpandPlaceholders(gStringVar4, gText_MoveNotLearned);
+ sub_81B1B5C(gStringVar4, 1);
+ if (gUnknown_0203CEC8.unk10 == 1)
+ {
+ gTasks[taskId].func = sub_81B73E4;
+ }
+ else
+ {
+ if (gUnknown_0203CEC8.unk10 == 2)
+ gSpecialVar_Result = FALSE;
+ gTasks[taskId].func = sub_81B6794;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
+ sub_81B6D74(gText_PkmnNeedsToReplaceMove);
+ gTasks[taskId].func = sub_81B6FF4;
+ break;
+ }
+}
+
+void sub_81B73E4(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ sub_81B77AC(taskId);
+}
+
+void dp05_rare_candy(u8 taskId, TaskFunc task)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Struct203CEC4 *ptr = gUnknown_0203CEC4;
+ s16 *arrayPtr = ptr->data;
+ u16 *itemPtr = &gSpecialVar_ItemId;
+ bool8 cannotUseEffect;
+
+ if (GetMonData(mon, MON_DATA_LEVEL) != MAX_LEVEL)
+ {
+ sub_81B79A0(mon, arrayPtr);
+ cannotUseEffect = ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, *itemPtr, 0);
+ sub_81B79A0(mon, &ptr->data[6]);
+ }
+ else
+ {
+ cannotUseEffect = TRUE;
+ }
+ PlaySE(SE_SELECT);
+ if (cannotUseEffect)
+ {
+ gUnknown_0203CEE8 = 0;
+ sub_81B1B5C(gText_WontHaveEffect, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = task;
+ }
+ else
+ {
+ gUnknown_0203CEE8 = 1;
+ PlayFanfareByFanfareNum(0);
+ sub_81B754C(gUnknown_0203CEC8.unk9, mon);
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ GetMonNickname(mon, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, GetMonData(mon, MON_DATA_LEVEL), 0, 3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnElevatedToLvVar2);
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B75D4;
+ }
+}
+
+void sub_81B754C(u8 slot, struct Pokemon *mon)
+{
+ party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[slot]);
+ if (gSprites[gUnknown_0203CEDC[slot].unkC].invisible)
+ DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[slot], 1);
+ DisplayPartyPokemonHPCheck(mon, &gUnknown_0203CEDC[slot], 1);
+ DisplayPartyPokemonMaxHPCheck(mon, &gUnknown_0203CEDC[slot], 1);
+ DisplayPartyPokemonHPBarCheck(mon, &gUnknown_0203CEDC[slot]);
+ sub_81B5B38(gUnknown_0203CEDC[slot].unk9, mon);
+ sub_81B0FCC(slot, 1);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+void sub_81B75D4(u8 taskId)
+{
+ if (WaitFanfare(FALSE) && sub_81B1BD4() != TRUE && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
+ {
+ PlaySE(SE_SELECT);
+ sub_81B767C(taskId);
+ gTasks[taskId].func = sub_81B7634;
+ }
+}
+
+void sub_81B7634(u8 taskId)
+{
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_81B76C8(taskId);
+ gTasks[taskId].func = sub_81B7704;
+ }
+}
+
+void sub_81B767C(u8 taskId)
+{
+ s16 *arrayPtr = gUnknown_0203CEC4->data;
+
+ arrayPtr[12] = sub_81B3364();
+ sub_81D3640(arrayPtr[12], arrayPtr, &arrayPtr[6], 1, 2, 3);
+ CopyWindowToVram(arrayPtr[12], 2);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81B76C8(u8 taskIdUnused)
+{
+ s16 *arrayPtr = gUnknown_0203CEC4->data;
+
+ sub_81D3784(arrayPtr[12], &arrayPtr[6], 1, 2, 3);
+ CopyWindowToVram(arrayPtr[12], 2);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81B7704(u8 taskId)
+{
+ u16 result;
+
+ if (WaitFanfare(0) && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
+ {
+ sub_81B3394();
+ result = MonTryLearningNewMove(&gPlayerParty[gUnknown_0203CEC8.unk9], 1);
+ gUnknown_0203CEC8.unk10 = 1;
+ switch (result)
+ {
+ case 0:
+ sub_81B7810(taskId);
+ break;
+ case 0xFFFF:
+ sub_81B787C(taskId);
+ break;
+ case 0xFFFE:
+ gTasks[taskId].func = sub_81B77AC;
+ break;
+ default:
+ sub_81B7910(taskId, result);
+ break;
+ }
+ }
+}
+
+void sub_81B77AC(u8 taskId)
+{
+ u16 result = MonTryLearningNewMove(&gPlayerParty[gUnknown_0203CEC8.unk9], 0);
+
+ switch (result)
+ {
+ case 0:
+ sub_81B7810(taskId);
+ break;
+ case 0xFFFF:
+ sub_81B787C(taskId);
+ break;
+ case 0xFFFE:
+ return;
+ default:
+ sub_81B7910(taskId, result);
+ break;
+ }
+}
+
+void sub_81B7810(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 targetSpecies = GetEvolutionTargetSpecies(mon, 0, 0);
+
+ if (targetSpecies != SPECIES_NONE)
+ {
+ FreePartyPointers();
+ gCB2_AfterEvolution = gUnknown_0203CEC8.exitCallback;
+ BeginEvolutionScene(mon, targetSpecies, 1, gUnknown_0203CEC8.unk9);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].func = sub_81B6794;
+ }
+}
+
+void sub_81B787C(u8 taskId)
+{
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnNeedsToReplaceMove);
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gUnknown_0203CEC8.unkE = gMoveToLearn;
+ gTasks[taskId].func = sub_81B6FF4;
+}
+
+void sub_81B7910(u8 taskId, u16 move)
+{
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[move]);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnLearnedMove3);
+ sub_81B1B5C(gStringVar4, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gUnknown_0203CEC8.unkE = move;
+ gTasks[taskId].func = sub_81B6F60;
+}
+
+void sub_81B79A0(struct Pokemon *mon, s16 *data)
+{
+ data[0] = GetMonData(mon, MON_DATA_MAX_HP);
+ data[1] = GetMonData(mon, MON_DATA_ATK);
+ data[2] = GetMonData(mon, MON_DATA_DEF);
+ data[4] = GetMonData(mon, MON_DATA_SPATK);
+ data[5] = GetMonData(mon, MON_DATA_SPDEF);
+ data[3] = GetMonData(mon, MON_DATA_SPEED);
+}
+
+void sub_81B79E8(u8 taskId, TaskFunc unused)
+{
+ gUnknown_0203CEC4->data[0] = 0;
+ gUnknown_0203CEC4->data[1] = 0;
+ gUnknown_0203CEC4->data[2] = gUnknown_0203CEC8.unk9;
+ sub_81B7A28(taskId);
+}
+
+#ifdef NONMATCHING
+void sub_81B7A28(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 hp;
+
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ hp = GetMonData(mon, MON_DATA_HP);
+ if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, gSpecialVar_ItemId, 0))
+ {
+ gTasks[taskId].func = task_sacred_ash_party_loop;
+ return;
+ }
+ }
+ else
+ {
+ gTasks[taskId].func = task_sacred_ash_party_loop;
+ return;
+ }
+ PlaySE(SE_KAIFUKU);
+ party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
+ if (gSprites[gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].unkC].invisible)
+ DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ sub_81B0FCC(gUnknown_0203CEC4->data[2], 0);
+ sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
+ sub_81B1F18(taskId, gUnknown_0203CEC8.unk9, 1, GetMonData(mon, MON_DATA_HP) - hp, sub_81B7C10);
+ sub_81B1FA8(taskId, 0, hp);
+ gUnknown_0203CEC4->data[0] = 1;
+ gUnknown_0203CEC4->data[1] = 1;
+}
+#else
+NAKED
+void sub_81B7A28(u8 taskId)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ mov r8, r4\n\
+ ldr r6, =gUnknown_0203CEC8\n\
+ movs r1, 0x9\n\
+ ldrsb r1, [r6, r1]\n\
+ movs r0, 0x64\n\
+ muls r1, r0\n\
+ ldr r0, =gPlayerParty\n\
+ adds r5, r1, r0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _081B7A6E\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ ldrb r0, [r6, 0x9]\n\
+ ldr r1, =gSpecialVar_ItemId\n\
+ ldrh r1, [r1]\n\
+ movs r2, 0\n\
+ bl ExecuteTableBasedItemEffect__\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _081B7A94\n\
+_081B7A6E:\n\
+ ldr r0, =gTasks\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldr r0, =task_sacred_ash_party_loop\n\
+ str r0, [r1]\n\
+ b _081B7B2A\n\
+ .pool\n\
+_081B7A94:\n\
+ movs r0, 0x1\n\
+ bl PlaySE\n\
+ ldr r4, =gUnknown_0203CEDC\n\
+ movs r0, 0x9\n\
+ ldrsb r0, [r6, r0]\n\
+ lsls r0, 4\n\
+ ldr r1, [r4]\n\
+ adds r1, r0\n\
+ adds r0, r5, 0\n\
+ bl party_menu_get_status_condition_and_update_object\n\
+ ldr r2, =gSprites\n\
+ movs r0, 0x9\n\
+ ldrsb r0, [r6, r0]\n\
+ ldr r1, [r4]\n\
+ lsls r0, 4\n\
+ adds r3, r0, r1\n\
+ ldrb r1, [r3, 0xC]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ adds r0, 0x3E\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 29\n\
+ cmp r0, 0\n\
+ bge _081B7AD6\n\
+ adds r0, r5, 0\n\
+ adds r1, r3, 0\n\
+ movs r2, 0x1\n\
+ bl DisplayPartyPokemonLevelCheck\n\
+_081B7AD6:\n\
+ ldr r4, =gUnknown_0203CEC4\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x87\n\
+ lsls r1, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ movs r1, 0\n\
+ bl sub_81B0FCC\n\
+ ldrb r0, [r6, 0x9]\n\
+ movs r1, 0x1\n\
+ bl sub_81B0FCC\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ adds r3, r0, 0\n\
+ subs r3, r7\n\
+ lsls r3, 16\n\
+ asrs r3, 16\n\
+ ldrb r1, [r6, 0x9]\n\
+ ldr r0, =sub_81B7C10\n\
+ str r0, [sp]\n\
+ mov r0, r8\n\
+ movs r2, 0x1\n\
+ bl sub_81B1F18\n\
+ mov r0, r8\n\
+ movs r1, 0\n\
+ adds r2, r7, 0\n\
+ bl sub_81B1FA8\n\
+ ldr r0, [r4]\n\
+ movs r2, 0x86\n\
+ lsls r2, 2\n\
+ adds r1, r0, r2\n\
+ movs r2, 0x1\n\
+ strh r2, [r1]\n\
+ ldr r1, =0x0000021a\n\
+ adds r0, r1\n\
+ strh r2, [r0]\n\
+_081B7B2A:\n\
+ add sp, 0x4\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n");
+}
+#endif
+
+void task_sacred_ash_party_loop(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ if (gUnknown_0203CEC4->data[0] == 1)
+ {
+ gUnknown_0203CEC4->data[0] = 0;
+ gUnknown_0203CEC4->data[2] = gUnknown_0203CEC8.unk9;
+ }
+ if (++(gUnknown_0203CEC8.unk9) == PARTY_SIZE)
+ {
+ if (gUnknown_0203CEC4->data[1] == 0)
+ {
+ gUnknown_0203CEE8 = 0;
+ sub_81B1B5C(gText_WontHaveEffect, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ }
+ else
+ {
+ gUnknown_0203CEE8 = 1;
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ }
+ gTasks[taskId].func = sub_81B6794;
+ gUnknown_0203CEC8.unk9 = 0;
+ }
+ else
+ {
+ sub_81B7A28(taskId);
+ }
+ }
+}
+
+void sub_81B7C10(u8 taskId)
+{
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
+ sub_81B1B5C(gStringVar4, 0);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = task_sacred_ash_party_loop;
+}
+
+void sub_81B7C74(u8 taskId, TaskFunc task)
+{
+ PlaySE(SE_SELECT);
+ gCB2_AfterEvolution = gUnknown_0203CEC8.exitCallback;
+ if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, gSpecialVar_ItemId, 0))
+ {
+ gUnknown_0203CEE8 = 0;
+ sub_81B1B5C(gText_WontHaveEffect, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = task;
+ }
+ else
+ {
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ FreePartyPointers();
+ }
+}
+
+u8 GetItemEffectType(u16 item)
+{
+ const u8 *itemEffect;
+#ifndef NONMATCHING
+ register u8 itemEffect0 asm("r1");
+ register u8 itemEffect3 asm("r3");
+ register u32 itemEffect0_r0 asm("r0"); // u32 to prevent shifting when transferring itemEffect0 to this
+ u8 mask;
+#else
+#define itemEffect0 itemEffect[0]
+#define itemEffect3 itemEffect[3]
+#define mask 0x3F
+#endif
+
+ if (!IS_POKEMON_ITEM(item))
+ {
+ return 22;
+ }
+ else
+ {
+ // Read the item's effect properties.
+ if (item == ITEM_ENIGMA_BERRY)
+ {
+ itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
+ }
+ else
+ {
+ itemEffect = gItemEffectTable[item - ITEM_POTION];
+ }
+
+#ifndef NONMATCHING
+ itemEffect0 = itemEffect[0];
+ mask = 0x3F;
+#endif
+
+ if ((itemEffect0 & mask) || itemEffect[1] || itemEffect[2])
+ {
+ return 0;
+ }
+#ifndef NONMATCHING
+ itemEffect3 = itemEffect[3];
+#endif
+ if (itemEffect3 & 0x80)
+ {
+ return 0;
+ }
+ else if (itemEffect0 & 0x40)
+ {
+ return 10;
+ }
+ else if (itemEffect3 & 0x40)
+ {
+ return 1;
+ }
+ else if ((itemEffect3 & mask) || (itemEffect0 >> 7))
+ {
+ if ((itemEffect3 & mask) == 0x20)
+ {
+ return 4;
+ }
+ else if ((itemEffect3 & mask) == 0x10)
+ {
+ return 3;
+ }
+ else if ((itemEffect3 & mask) == 0x8)
+ {
+ return 5;
+ }
+ else if ((itemEffect3 & mask) == 0x4)
+ {
+ return 6;
+ }
+ else if ((itemEffect3 & mask) == 0x2)
+ {
+ return 7;
+ }
+ else if ((itemEffect3 & mask) == 0x1)
+ {
+ return 8;
+ }
+ // alternate fakematching
+ // itemEffect0_r0 = itemEffect0 >> 7;
+ // asm(""); // increase live length for greg
+ // if ((itemEffect0_r0 != 0) && (itemEffect3 & mask) == 0)
+#ifndef NONMATCHING
+ else if (((itemEffect0_r0 = itemEffect0 >> 7) != 0) && (itemEffect3 & mask) == 0)
+#else
+ else if (((itemEffect[0] >> 7) != 0) && (itemEffect[3] & 0x3F) == 0)
+#endif
+ {
+ return 9;
+ }
+ else
+ {
+ return 11;
+ }
+ }
+ else if (itemEffect[4] & 0x44)
+ {
+ return 2;
+ }
+ else if (itemEffect[4] & 0x2)
+ {
+ return 12;
+ }
+ else if (itemEffect[4] & 0x1)
+ {
+ return 13;
+ }
+ else if (itemEffect[5] & 0x8)
+ {
+ return 14;
+ }
+ else if (itemEffect[5] & 0x4)
+ {
+ return 15;
+ }
+ else if (itemEffect[5] & 0x2)
+ {
+ return 16;
+ }
+ else if (itemEffect[5] & 0x1)
+ {
+ return 17;
+ }
+ else if (itemEffect[4] & 0x80)
+ {
+ return 18;
+ }
+ else if (itemEffect[4] & 0x20)
+ {
+ return 19;
+ }
+ else if (itemEffect[5] & 0x10)
+ {
+ return 20;
+ }
+ else if (itemEffect[4] & 0x18)
+ {
+ return 21;
+ }
+ return 22;
+ }
+#ifdef NONMATCHING
+#undef itemEffect0
+#undef itemEffect3
+#undef mask
+#endif
+}
+
+void sub_81B7E4C(u8 taskId)
+{
+ struct Pokemon *mon;
+ s16 *move;
+
+ if (!gPaletteFade.active)
+ {
+ mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ move = &gUnknown_0203CEC8.unkE;
+ GetMonNickname(mon, gStringVar1);
+ gUnknown_0203CEC8.unkE = sub_81B2360(gSpecialVar_0x8005);
+ StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
+ move[1] = 2;
+ switch (CanPartyPokemonLearnTMTutor(mon, 0, gSpecialVar_0x8005))
+ {
+ case CANNOT_LEARN_MOVE:
+ sub_81B6D98(taskId, gText_PkmnCantLearnMove);
+ return;
+ case ALREADY_KNOWS_MOVE:
+ sub_81B6D98(taskId, gText_PkmnAlreadyKnows);
+ return;
+ default:
+ if (GiveMoveToMon(mon, gUnknown_0203CEC8.unkE) != 0xFFFF)
+ {
+ sub_81B6EB4(taskId);
+ return;
+ }
+ break;
+ }
+ sub_81B6D74(gText_PkmnNeedsToReplaceMove);
+ gTasks[taskId].func = sub_81B6FF4;
+ }
+}
+
+void CB2_PartyMenuFromStartMenu(void)
+{
+ InitPartyMenu(0, 0, 0, 0, 0, sub_81B1370, CB2_ReturnToFieldWithOpenMenu);
+}
+
+void sub_81B7F60(void)
+{
+ MainCallback callback = (InBattlePyramid() == FALSE) ? c2_815ABFC : sub_81C4F84;
+ InitPartyMenu(0, 0, 5, 0, 6, sub_81B1370, callback);
+ gUnknown_0203CEC8.unkC = gSpecialVar_ItemId;
+}
+
+void sub_81B7FAC(u8 taskId)
+{
+ gUnknown_0203CEFC = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_HELD_ITEM);
+ if (gUnknown_0203CEFC == ITEM_NONE)
+ {
+ sub_81B8044(taskId);
+ }
+ else if (ItemIsMail(gUnknown_0203CEFC))
+ {
+ sub_81B83B8(taskId);
+ }
+ else
+ {
+ sub_81B1D1C(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEFC, 1);
+ gTasks[taskId].func = sub_81B82A0;
+ }
+}
+
+void sub_81B8044(u8 taskId)
+{
+ if (ItemIsMail(gUnknown_0203CEC8.unkC))
+ {
+ sub_81B83F0(gUnknown_0203CEC8.unkC);
+ gUnknown_0203CEC4->exitCallback = sub_81B814C;
+ sub_81B12C0(taskId);
+ }
+ else
+ {
+ sub_81B8088(taskId);
+ }
+}
+
+void sub_81B8088(u8 taskId)
+{
+ u16 item;
+
+ if (!gPaletteFade.active)
+ {
+ item = gUnknown_0203CEC8.unkC;
+ sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.unk9], item, 0, 1);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], item);
+ sub_81B83F0(item);
+ gTasks[taskId].func = sub_81B8104;
+ }
+}
+
+void sub_81B8104(u8 taskId)
+{
+ s8 slot = gUnknown_0203CEC8.unk9;
+
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B5C94(&gPlayerParty[slot], &gUnknown_0203CEDC[slot]);
+ sub_81B12C0(taskId);
+ }
+}
+
+void sub_81B814C(void)
+{
+ u8 mail;
+
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEC8.unkC);
+ mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
+ sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B81A8, 3);
+}
+
+void sub_81B81A8(void)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
+
+ if (gSpecialVar_Result == FALSE)
+ {
+ TakeMailFromMon(mon);
+ SetMonData(mon, MON_DATA_HELD_ITEM, &gUnknown_0203CEFC);
+ RemoveBagItem(gUnknown_0203CEFC, 1);
+ sub_81B841C(item);
+ SetMainCallback2(gUnknown_0203CEC8.exitCallback);
+ }
+ else
+ {
+ InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 0x7F, sub_81B8230, gUnknown_0203CEC8.exitCallback);
+ }
+}
+
+void sub_81B8230(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gUnknown_0203CEFC != ITEM_NONE)
+ sub_81B1D68(gUnknown_0203CEC8.unkC, gUnknown_0203CEFC, 0);
+ else
+ sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEC8.unkC, 0, 1);
+ gTasks[taskId].func = sub_81B8104;
+ }
+}
+
+void sub_81B82A0(u8 taskId)
+{
+ if (sub_81B1BD4() != TRUE)
+ {
+ sub_81B334C();
+ gTasks[taskId].func = sub_81B82D4;
+ }
+}
+
+void sub_81B82D4(u8 taskId)
+{
+ u16 item;
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ item = gUnknown_0203CEC8.unkC;
+ sub_81B83F0(item);
+ if (AddBagItem(gUnknown_0203CEFC, 1) == FALSE)
+ {
+ sub_81B841C(item);
+ pokemon_item_not_removed(gUnknown_0203CEFC);
+ sub_81B1B5C(gStringVar4, 0);
+ gTasks[taskId].func = sub_81B8104;
+ }
+ else if (ItemIsMail(item))
+ {
+ gUnknown_0203CEC4->exitCallback = sub_81B814C;
+ sub_81B12C0(taskId);
+ }
+ else
+ {
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], item);
+ sub_81B1D68(item, gUnknown_0203CEFC, 1);
+ gTasks[taskId].func = sub_81B8104;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B8104;
+ break;
+ }
+}
+
+void sub_81B83B8(u8 taskId)
+{
+ sub_81B1B5C(gText_RemoveMailBeforeItem, 1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B8104;
+}
+
+void sub_81B83F0(u16 item)
+{
+ if (gUnknown_0203CEC8.unkB == 6)
+ RemovePCItem(item, 1);
+ else
+ RemoveBagItem(item, 1);
+}
+
+bool8 sub_81B841C(u16 item)
+{
+ if (gUnknown_0203CEC8.unkB == 5)
+ return AddBagItem(item, 1);
+ else
+ return AddPCItem(item, 1);
+}
+
+void sub_81B8448(void)
+{
+ InitPartyMenu(0, 0, 7, 0, 6, sub_81B1370, Mailbox_ReturnToMailListAfterDeposit);
+}
+
+void sub_81B8474(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct MailStruct *mail;
+
+ gUnknown_0203CEE8 = 0;
+ mail = &gSaveBlock1Ptr->mail[playerPCItemPageInfo.itemsAbove + 6 + playerPCItemPageInfo.cursorPos];
+ if (GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE)
+ {
+ sub_81B1B5C(gText_PkmnHoldingItemCantHoldMail, 1);
+ }
+ else
+ {
+ GiveMailToMon2(mon, mail);
+ ClearMailStruct(mail);
+ sub_81B1B5C(gText_MailTransferredFromMailbox, 1);
+ }
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81B8104;
+}
+
+void sub_81B8518(u8 unused)
+{
+ sub_81B8558();
+ InitPartyMenu(4, 0, 0, 0, 0, sub_81B1370, gMain.savedCallback);
+ gUnknown_0203CEC8.unk4 = sub_81B879C;
+}
+
+void sub_81B8558(void)
+{
+ memset(gSelectedOrderFromParty, 0, ARRAY_COUNT(gSelectedOrderFromParty));
+}
+
+u8 sub_81B856C(s8 slot)
+{
+ if (GetBattleEntryEligibility(&gPlayerParty[slot]) == FALSE)
+ return 2;
+ if (sub_81B8770(slot + 1) == TRUE)
+ return 1;
+ return 0;
+}
+
+bool8 GetBattleEntryEligibility(struct Pokemon *mon)
+{
+ u16 i = 0;
+ u16 species;
+
+ if (GetMonData(mon, MON_DATA_IS_EGG) || GetMonData(mon, MON_DATA_LEVEL) > sub_81B8888() ||
+ (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY) &&
+ gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY) &&
+ GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE))
+ return FALSE;
+ switch (VarGet(VAR_FRONTIER_FACILITY)) // oddly the specific cases are beyond 6, turns out case 9 is apparently related to link battles
+ {
+ case 9:
+ if (GetMonData(mon, MON_DATA_HP) != 0)
+ return TRUE;
+ return FALSE;
+ case 8:
+ return TRUE;
+ default:
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ for (; gFrontierBannedSpecies[i] != 0xFFFF; i++)
+ {
+ if (gFrontierBannedSpecies[i] == species)
+ return FALSE;
+ }
+ return TRUE;
+ }
+}
+
+#ifdef NONMATCHING
+u8 sub_81B865C(void)
+{
+ u8 unk = sub_81B885C();
+ u8 unk2;
+ u8 i, j;
+ u16 species;
+ u16 item;
+ u8 facilityNum;
+
+ if (gSelectedOrderFromParty[unk - 1] == 0)
+ {
+ if (unk == 1)
+ return 14;
+ ConvertIntToDecimalStringN(gStringVar1, unk, 0, 1);
+ return 17;
+ }
+ facilityNum = VarGet(VAR_FRONTIER_FACILITY);
+ if (facilityNum != 8 && facilityNum != 9)
+ {
+ unk2 = sub_81B8830();
+ for (i = 0; i < (unk2 - 1); i++)
+ {
+ species = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i - 1]], MON_DATA_SPECIES);
+ item = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i - 1]], MON_DATA_HELD_ITEM);
+ for (j = i + 1; j < unk2; j++)
+ {
+ if (species == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j - 1]], MON_DATA_SPECIES))
+ return 18;
+ if (item != ITEM_NONE && item == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j - 1]], MON_DATA_HELD_ITEM))
+ return 19;
+ }
+ }
+ }
+ return 0xFF;
+}
+#else
+NAKED
+u8 sub_81B865C(void)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ bl sub_81B885C\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ adds r1, r2, 0\n\
+ ldr r3, =gSelectedOrderFromParty\n\
+ adds r0, r2, r3\n\
+ subs r0, 0x1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _081B869C\n\
+ cmp r2, 0x1\n\
+ bne _081B8688\n\
+ movs r0, 0xE\n\
+ b _081B8758\n\
+ .pool\n\
+_081B8688:\n\
+ ldr r0, =gStringVar1\n\
+ movs r2, 0\n\
+ movs r3, 0x1\n\
+ bl ConvertIntToDecimalStringN\n\
+ movs r0, 0x11\n\
+ b _081B8758\n\
+ .pool\n\
+_081B869C:\n\
+ ldr r0, =0x000040cf\n\
+ bl VarGet\n\
+ lsls r0, 24\n\
+ movs r1, 0xF8\n\
+ lsls r1, 24\n\
+ adds r0, r1\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bhi _081B86C0\n\
+ b _081B8756\n\
+ .pool\n\
+_081B86B8:\n\
+ movs r0, 0x12\n\
+ b _081B8758\n\
+_081B86BC:\n\
+ movs r0, 0x13\n\
+ b _081B8758\n\
+_081B86C0:\n\
+ bl sub_81B8830\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ movs r5, 0\n\
+ b _081B8750\n\
+_081B86CE:\n\
+ ldr r3, =gSelectedOrderFromParty\n\
+ adds r4, r3, r5\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0x64\n\
+ muls r0, r1\n\
+ subs r0, 0x64\n\
+ ldr r3, =gPlayerParty\n\
+ adds r0, r3, r0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0x64\n\
+ muls r0, r1\n\
+ subs r0, 0x64\n\
+ ldr r3, =gPlayerParty\n\
+ adds r0, r3, r0\n\
+ movs r1, 0xC\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ adds r1, r5, 0x1\n\
+ lsls r0, r1, 24\n\
+ lsrs r4, r0, 24\n\
+ mov r9, r1\n\
+ cmp r4, r8\n\
+ bcs _081B8748\n\
+ movs r7, 0x64\n\
+_081B870E:\n\
+ ldr r0, =gSelectedOrderFromParty\n\
+ adds r5, r0, r4\n\
+ ldrb r0, [r5]\n\
+ muls r0, r7\n\
+ subs r0, 0x64\n\
+ ldr r1, =gPlayerParty\n\
+ adds r0, r1, r0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r10, r0\n\
+ beq _081B86B8\n\
+ cmp r6, 0\n\
+ beq _081B873E\n\
+ ldrb r0, [r5]\n\
+ muls r0, r7\n\
+ subs r0, 0x64\n\
+ ldr r3, =gPlayerParty\n\
+ adds r0, r3, r0\n\
+ movs r1, 0xC\n\
+ bl GetMonData\n\
+ cmp r6, r0\n\
+ beq _081B86BC\n\
+_081B873E:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, r8\n\
+ bcc _081B870E\n\
+_081B8748:\n\
+ mov r1, r9\n\
+ lsls r0, r1, 24\n\
+ lsrs r5, r0, 24\n\
+ mov r0, r8\n\
+_081B8750:\n\
+ subs r0, 0x1\n\
+ cmp r5, r0\n\
+ blt _081B86CE\n\
+_081B8756:\n\
+ movs r0, 0xFF\n\
+_081B8758:\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\
+ .pool\n");
+}
+#endif
+
+bool8 sub_81B8770(u8 slot)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gSelectedOrderFromParty[i] == slot)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_81B879C(u8 taskId)
+{
+ u8 msgID = sub_81B865C();
+
+ if (msgID != 0xFF)
+ {
+ PlaySE(SE_HAZURE);
+ display_pokemon_menu_message(msgID);
+ gTasks[taskId].func = sub_81B87E8;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_81B12C0(taskId);
+ }
+}
+
+void sub_81B87E8(u8 taskId)
+{
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ display_pokemon_menu_message(0);
+ gTasks[taskId].func = sub_81B1370;
+ }
+}
+
+u8 sub_81B8830(void)
+{
+ switch (VarGet(VAR_FRONTIER_FACILITY))
+ {
+ case 9:
+ return 3;
+ case 8:
+ return 2;
+ default:
+ return gSpecialVar_0x8005;
+ }
+}
+
+u8 sub_81B885C(void)
+{
+ switch (VarGet(VAR_FRONTIER_FACILITY))
+ {
+ case 9:
+ return 1;
+ case 8:
+ return 2;
+ default:
+ return gSpecialVar_0x8005;
+ }
+}
+
+u8 sub_81B8888(void)
+{
+ switch (VarGet(VAR_FRONTIER_FACILITY))
+ {
+ case 9:
+ return 100;
+ case 8:
+ return 30;
+ default:
+ if (gSpecialVar_0x8004 == 0)
+ return 50;
+ return 100;
+ }
+}
+
+const u8* sub_81B88BC(void)
+{
+ u8 facilityNum = VarGet(VAR_FRONTIER_FACILITY);
+
+ if (!(facilityNum != 8 && facilityNum != 9))
+ return gText_CancelBattle;
+ if (facilityNum == FRONTIER_FACILITY_DOME && gSpecialVar_0x8005 == 2)
+ return gText_ReturnToWaitingRoom;
+ return gText_CancelChallenge;
+}
+
+void sub_81B8904(u8 initArg, MainCallback callback)
+{
+ InitPartyMenu(initArg, 0, 0, 0, 0, sub_81B1370, callback);
+}
+
+void sub_81B892C(void)
+{
+ InitPartyMenu(0, 0, 12, 0, 4, sub_81B1370, CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+void sub_81B8958(void)
+{
+ InitPartyMenu(11, 0, 13, 0, 1, sub_81B1370, CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+u8 sub_81B8984(void)
+{
+ if (IsDoubleBattle() == FALSE)
+ return 0;
+ if (IsMultiBattle() == TRUE)
+ return 2;
+ return 1;
+}
+
+void OpenPartyMenuInBattle(u8 arg)
+{
+ InitPartyMenu(1, sub_81B8984(), arg, 0, 0, sub_81B1370, SetCB2ToReshowScreenAfterMenu);
+ nullsub_35();
+ pokemon_change_order();
+}
+
+void sub_81B89F0(void)
+{
+ InitPartyMenu(1, sub_81B8984(), 3, 0, 5, sub_81B1370, c2_815ABFC);
+ nullsub_35();
+ pokemon_change_order();
+}
+
+u8 sub_81B8A2C(struct Pokemon *mon)
+{
+ if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(mon, MON_DATA_IS_EGG) == FALSE)
+ {
+ if (gUnknown_0203CEC8.unkB == 1)
+ return 3;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA))
+ return 2;
+ }
+ return 7;
+}
+
+bool8 sub_81B8A7C(void)
+{
+ u8 slot = GetCursorSelectionMonId();
+ u8 newSlot;
+ u8 i;
+ u8 neededToMatch;
+
+ if (IsMultiBattle() == TRUE && (slot == 1 || slot == 4 || slot == 5))
+ {
+ StringCopy(gStringVar1, GetTrainerPartnerName());
+ StringExpandPlaceholders(gStringVar4, gText_CantSwitchWithAlly);
+ return FALSE;
+ }
+ if (GetMonData(&gPlayerParty[slot], MON_DATA_HP) == 0)
+ {
+ GetMonNickname(&gPlayerParty[slot], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnHasNoEnergy);
+ return FALSE;
+ }
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ if (GetBattlerSide(i) == B_SIDE_PLAYER && sub_81B8F38(slot) == gBattlerPartyIndexes[i])
+ {
+ GetMonNickname(&gPlayerParty[slot], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnAlreadyInBattle);
+ return FALSE;
+ }
+ }
+ if (GetMonData(&gPlayerParty[slot], MON_DATA_IS_EGG))
+ {
+ StringExpandPlaceholders(gStringVar4, gText_EggCantBattle);
+ return FALSE;
+ }
+ if (sub_81B8F38(slot) == gBattleStruct->field_8B)
+ {
+ GetMonNickname(&gPlayerParty[slot], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnAlreadySelected);
+ return FALSE;
+ }
+ if (gUnknown_0203CEC8.unkB == 4)
+ {
+ SetMonPreventsSwitchingString();
+ return FALSE;
+ }
+ if (gUnknown_0203CEC8.unkB == 2)
+ {
+ neededToMatch = gBattlerInMenuId;
+ GetMonNickname(&gPlayerParty[pokemon_order_func(gBattlerPartyIndexes[neededToMatch])], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCantSwitchOut);
+ return FALSE;
+ }
+ gUnknown_0203CEE9 = sub_81B8F38(slot);
+ gUnknown_0203CEE8 = 1;
+ newSlot = pokemon_order_func(gBattlerPartyIndexes[gBattlerInMenuId]);
+ sub_81B8FB0(newSlot, slot);
+ sub_81B1288(&gPlayerParty[newSlot], &gPlayerParty[slot]);
+ return TRUE;
+}
+
+void sub_81B8C68(void)
+{
+ sub_81B8C88(gUnknown_0203CF00, sub_806D7EC());
+}
+
+void sub_81B8C88(u8 *ptr, bool8 multiplayerFlag)
+{
+ u8 partyIndexes[6];
+ int i, j;
+
+ if (IsMultiBattle() == TRUE)
+ {
+ if (multiplayerFlag)
+ {
+ ptr[0] = 0 | (3 << 4);
+ ptr[1] = 5 | (4 << 4);
+ ptr[2] = 2 | (1 << 4);
+ }
+ else
+ {
+ ptr[0] = 3 | (0 << 4);
+ ptr[1] = 2 | (1 << 4);
+ ptr[2] = 5 | (4 << 4);
+ }
+ return;
+ }
+ else if (IsDoubleBattle() == FALSE)
+ {
+ j = 1;
+ partyIndexes[0] = gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)];
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (i != partyIndexes[0])
+ {
+ partyIndexes[j] = i;
+ j++;
+ }
+ }
+ }
+ else
+ {
+ j = 2;
+ partyIndexes[0] = gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)];
+ partyIndexes[1] = gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)];
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (i != partyIndexes[0] && i != partyIndexes[1])
+ {
+ partyIndexes[j] = i;
+ j++;
+ }
+ }
+ }
+ for (i = 0; i < 3; i++)
+ ptr[i] = (partyIndexes[0 + (i * 2)] << 4) | partyIndexes[1 + (i * 2)];
+}
+
+void sub_81B8D64(u8 battlerPosition, u8 multiplayerFlag)
+{
+ sub_81B8D88(gBattleStruct->field_60[battlerPosition], multiplayerFlag, battlerPosition);
+}
+
+void sub_81B8D88(u8 *ptr, bool8 multiplayerFlag, u8 battlerPosition)
+{
+ u8 partyIndexes[6];
+ int i, j;
+ u8 leftBattler;
+ u8 rightBattler;
+
+ if (GetBattlerSide(battlerPosition) == B_SIDE_PLAYER)
+ {
+ leftBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ rightBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
+ }
+ else
+ {
+ leftBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ rightBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ }
+ if (IsMultiBattle() == TRUE)
+ {
+ if (multiplayerFlag)
+ {
+ ptr[0] = 0 | (3 << 4);
+ ptr[1] = 5 | (4 << 4);
+ ptr[2] = 2 | (1 << 4);
+ }
+ else
+ {
+ ptr[0] = 3 | (0 << 4);
+ ptr[1] = 2 | (1 << 4);
+ ptr[2] = 5 | (4 << 4);
+ }
+ return;
+ }
+ else if (IsDoubleBattle() == FALSE)
+ {
+ j = 1;
+ partyIndexes[0] = gBattlerPartyIndexes[leftBattler];
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (i != partyIndexes[0])
+ {
+ partyIndexes[j] = i;
+ j++;
+ }
+ }
+ }
+ else
+ {
+ j = 2;
+ partyIndexes[0] = gBattlerPartyIndexes[leftBattler];
+ partyIndexes[1] = gBattlerPartyIndexes[rightBattler];
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (i != partyIndexes[0] && i != partyIndexes[1])
+ {
+ partyIndexes[j] = i;
+ j++;
+ }
+ }
+ }
+ for (i = 0; i < 3; i++)
+ ptr[i] = (partyIndexes[0 + (i * 2)] << 4) | partyIndexes[1 + (i * 2)];
+}
+
+void sub_81B8E80(u8 battlerPosition, u8 unk, u8 arrayIndex)
+{
+ u8 possiblePartyIndexes[6];
+ u8 unk2 = 0;
+ int i, j;
+ u8 *battleStructRelated;
+ u8 possiblePartyIndexBuffer;
+
+ if (IsMultiBattle())
+ {
+ battleStructRelated = gBattleStruct->field_60[battlerPosition];
+ for (i = j = 0; i < 3; j++, i++)
+ {
+ possiblePartyIndexes[j] = battleStructRelated[i] >> 4;
+ j++;
+ possiblePartyIndexes[j] = battleStructRelated[i] & 0xF;
+ }
+ possiblePartyIndexBuffer = possiblePartyIndexes[arrayIndex];
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (possiblePartyIndexes[i] == unk)
+ {
+ unk2 = possiblePartyIndexes[i];
+ possiblePartyIndexes[i] = possiblePartyIndexBuffer;
+ break;
+ }
+ }
+ if (i != PARTY_SIZE)
+ {
+ possiblePartyIndexes[arrayIndex] = unk2;
+ battleStructRelated[0] = (possiblePartyIndexes[0] << 4) | possiblePartyIndexes[1];
+ battleStructRelated[1] = (possiblePartyIndexes[2] << 4) | possiblePartyIndexes[3];
+ battleStructRelated[2] = (possiblePartyIndexes[4] << 4) | possiblePartyIndexes[5];
+ }
+ }
+}
+
+u8 sub_81B8F38(u8 slot)
+{
+ u8 modResult = slot & 1;
+ u8 retVal;
+
+ slot /= 2;
+ if (modResult != 0)
+ retVal = gUnknown_0203CF00[slot] & 0xF;
+ else
+ retVal = gUnknown_0203CF00[slot] >> 4;
+ return retVal;
+}
+
+void sub_81B8F6C(u8 slot, u8 setVal)
+{
+ bool32 modResult = slot & 1;
+
+ slot /= 2;
+ if (modResult != 0)
+ gUnknown_0203CF00[slot] = (gUnknown_0203CF00[slot] & 0xF0) | setVal;
+ else
+ gUnknown_0203CF00[slot] = (gUnknown_0203CF00[slot] & 0xF) | (setVal << 4);
+}
+
+void sub_81B8FB0(u8 slot, u8 slot2)
+{
+ u8 valBuffer = sub_81B8F38(slot);
+ sub_81B8F6C(slot, sub_81B8F38(slot2));
+ sub_81B8F6C(slot2, valBuffer);
+}
+
+u8 pokemon_order_func(u8 slot)
+{
+ u8 i, j;
+
+ for (j = i = 0; i < 3; j++, i++)
+ {
+ if ((gUnknown_0203CF00[i] >> 4) != slot)
+ {
+ j++;
+ if ((gUnknown_0203CF00[i] & 0xF) == slot)
+ return j;
+ }
+ else
+ {
+ return j;
+ }
+ }
+ return 0;
+}
+
+void pokemon_change_order(void)
+{
+ struct Pokemon *partyBuffer = Alloc(sizeof(gPlayerParty));
+ u8 i;
+
+ memcpy(partyBuffer, gPlayerParty, sizeof(gPlayerParty));
+ for (i = 0; i < PARTY_SIZE; i++)
+ memcpy(&gPlayerParty[pokemon_order_func(i)], &partyBuffer[i], sizeof(struct Pokemon));
+ Free(partyBuffer);
+}
+
+void sub_81B9080(void)
+{
+ struct Pokemon *partyBuffer = Alloc(sizeof(gPlayerParty));
+ u8 i;
+
+ memcpy(partyBuffer, gPlayerParty, sizeof(gPlayerParty));
+ for (i = 0; i < PARTY_SIZE; i++)
+ memcpy(&gPlayerParty[sub_81B8F38(i)], &partyBuffer[i], sizeof(struct Pokemon));
+ Free(partyBuffer);
+}
+
+void sub_81B90D0(void)
+{
+ u8 i;
+ struct Pokemon *mon;
+ u8 leadVal;
+
+ for (i = 1; i < PARTY_SIZE; i++)
+ {
+ mon = &gPlayerParty[sub_81B8F38(i)];
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(mon, MON_DATA_HP) != 0)
+ {
+ leadVal = sub_81B8F38(0);
+ sub_81B8FB0(0, i);
+ sub_81B1288(&gPlayerParty[leadVal], mon);
+ break;
+ }
+ }
+}
+
+void sub_81B9140(void)
+{
+ SetMainCallback2(SetCB2ToReshowScreenAfterMenu);
+}
+
+void sub_81B9150(void)
+{
+ InitPartyMenu(5, 3, 0, 0, 0x7F, sub_81B917C, gMain.savedCallback);
+}
+
+void sub_81B917C(u8 taskId)
+{
+ gTasks[taskId].data[0] = 256;
+ sub_81B9294(taskId);
+ ChangeBgX(2, 0x10000, 0);
+ gTasks[taskId].func = sub_81B91B4;
+}
+
+void sub_81B91B4(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u8 i;
+
+ if (!gPaletteFade.active)
+ {
+ data[0] -= 8;
+ sub_81B9294(taskId);
+ if (data[0] == 0)
+ {
+ for (i = 3; i < PARTY_SIZE; i++)
+ {
+ if (gUnknown_02022FF8[i - 3].species != SPECIES_NONE)
+ AnimateSelectedPartyIcon(gUnknown_0203CEDC[i].unk9, 0);
+ }
+ PlaySE(SE_W231); // Harden SE?
+ gTasks[taskId].func = sub_81B9240;
+ }
+ }
+}
+
+void sub_81B9240(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (++data[0] == 0x100)
+ sub_81B12C0(taskId);
+}
+
+void sub_81B9270(u8 spriteId, s16 x)
+{
+ if (x >= 0)
+ gSprites[spriteId].pos2.x = x;
+}
+
+void sub_81B9294(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u8 i;
+
+ for (i = 3; i < PARTY_SIZE; i++)
+ {
+ if (gUnknown_02022FF8[i - 3].species != SPECIES_NONE)
+ {
+ sub_81B9270(gUnknown_0203CEDC[i].unk9, data[0] - 8);
+ sub_81B9270(gUnknown_0203CEDC[i].unkA, data[0] - 8);
+ sub_81B9270(gUnknown_0203CEDC[i].unkB, data[0] - 8);
+ sub_81B9270(gUnknown_0203CEDC[i].unkC, data[0] - 8);
+ }
+ }
+ ChangeBgX(2, 0x800, 1);
+}
+
+void sub_81B9328(void)
+{
+ InitPartyMenu(6, 0, 0, 0, 15, sub_81B1370, sub_81B9390);
+}
+
+void sub_81B9354(u8 arg1)
+{
+ gFieldCallback2 = hm_add_c3_without_phase_2;
+ InitPartyMenu(arg1, 0, 11, 0, 0, sub_81B1370, CB2_ReturnToField);
+}
+
+void sub_81B9390(void)
+{
+ gSpecialVar_0x8004 = GetCursorSelectionMonId();
+ if (gSpecialVar_0x8004 >= PARTY_SIZE)
+ gSpecialVar_0x8004 = 0xFF;
+ gFieldCallback2 = hm_add_c3_without_phase_2;
+ SetMainCallback2(CB2_ReturnToField);
+}
+
+bool8 hm_add_c3_without_phase_2(void) // might not be bool
+{
+ pal_fill_black();
+ CreateTask(task_hm_without_phase_2, 10);
+ return TRUE;
+}
+
+void task_hm_without_phase_2(u8 taskId)
+{
+ if (IsWeatherNotFadingIn())
+ {
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ }
+}
+
+void sub_81B9404(void)
+{
+ ScriptContext2_Enable();
+ FadeScreen(FADE_TO_BLACK, 0);
+ CreateTask(sub_81B9424, 10);
+}
+
+void sub_81B9424(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ overworld_free_bg_tilemaps();
+ InitPartyMenu(2, 0, 11, 0, 0, sub_81B1370, sub_81B9470);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_81B9470(void)
+{
+ gUnknown_02039F24 = GetCursorSelectionMonId();
+ if (gUnknown_02039F24 >= PARTY_SIZE)
+ gUnknown_02039F24 = 0xFF;
+ gSpecialVar_0x8004 = gUnknown_02039F24;
+ gFieldCallback2 = hm_add_c3_without_phase_2;
+ SetMainCallback2(CB2_ReturnToField);
+}
+
+void sub_81B94B0(void)
+{
+ ScriptContext2_Enable();
+ FadeScreen(FADE_TO_BLACK, 0);
+ CreateTask(sub_81B94D0, 10);
+}
+
+void sub_81B94D0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ overworld_free_bg_tilemaps();
+ InitPartyMenu(3, 0, 11, 0, 0, sub_81B1370, sub_81B9390);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_81B951C(void)
+{
+ ScriptContext2_Enable();
+ FadeScreen(FADE_TO_BLACK, 0);
+ CreateTask(sub_81B953C, 10);
+}
+
+void sub_81B953C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ overworld_free_bg_tilemaps();
+ InitPartyMenu(7, 0, 11, 0, 0, sub_81B1370, sub_81B9588);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_81B9588(void)
+{
+ gSpecialVar_0x8004 = GetCursorSelectionMonId();
+ if (gSpecialVar_0x8004 >= PARTY_SIZE)
+ gSpecialVar_0x8004 = 0xFF;
+ else
+ gSpecialVar_0x8005 = GetNumberOfRelearnableMoves(&gPlayerParty[gSpecialVar_0x8004]);
+ gFieldCallback2 = hm_add_c3_without_phase_2;
+ SetMainCallback2(CB2_ReturnToField);
+}
+
+void sub_81B95E0(void)
+{
+ u8 i;
+
+ gSpecialVar_Result = FALSE;
+ for (i = 0; i < 3; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) != ITEM_NONE)
+ {
+ gSpecialVar_Result = TRUE;
+ break;
+ }
+ }
+}
+
+void sub_81B9620(void)
+{
+ ScriptContext2_Enable();
+ FadeScreen(FADE_TO_BLACK, 0);
+ CreateTask(sub_81B9640, 10);
+}
+
+void sub_81B9640(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ overworld_free_bg_tilemaps();
+ InitPartyMenu(12, 0, 0, 0, 0, sub_81B1370, sub_81B9390);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_81B968C(void)
+{
+ ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, gPlayerParty, gSpecialVar_0x8004, gPlayerPartyCount - 1, CB2_ReturnToField);
+ gFieldCallback = sub_80AF168;
+}
+
+void sub_81B96D0(void)
+{
+ u8 i;
+
+ gSpecialVar_Result = 0;
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + i) != ITEM_NONE)
+ gSpecialVar_Result++;
+ }
+}
+
+void sub_81B9718(void)
+{
+ struct Pokemon *mon = &gPlayerParty[gSpecialVar_0x8004];
+ u16 move = GetMonData(mon, MON_DATA_MOVE1 + gSpecialVar_0x8005);
+
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[move]);
+}
+
+void sub_81B9770(void)
+{
+ u16 i;
+
+ SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], MOVE_NONE, gSpecialVar_0x8005);
+ RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005);
+ for (i = gSpecialVar_0x8005; i < MAX_MON_MOVES - 1; i++)
+ sub_81B97DC(&gPlayerParty[gSpecialVar_0x8004], i, i + 1);
+}
+
+void sub_81B97DC(struct Pokemon *mon, u8 slotTo, u8 slotFrom)
+{
+ u16 move1 = GetMonData(mon, MON_DATA_MOVE1 + slotTo);
+ u16 move0 = GetMonData(mon, MON_DATA_MOVE1 + slotFrom);
+ u8 pp1 = GetMonData(mon, MON_DATA_PP1 + slotTo);
+ u8 pp0 = GetMonData(mon, MON_DATA_PP1 + slotFrom);
+ u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
+ u8 ppBonusMask1 = gUnknown_08329D22[slotTo];
+ u8 ppBonusMove1 = (ppBonuses & ppBonusMask1) >> (slotTo * 2);
+ u8 ppBonusMask2 = gUnknown_08329D22[slotFrom];
+ u8 ppBonusMove2 = (ppBonuses & ppBonusMask2) >> (slotFrom * 2);
+ ppBonuses &= ~ppBonusMask1;
+ ppBonuses &= ~ppBonusMask2;
+ ppBonuses |= (ppBonusMove1 << (slotFrom * 2)) + (ppBonusMove2 << (slotTo * 2));
+ SetMonData(mon, MON_DATA_MOVE1 + slotTo, &move0);
+ SetMonData(mon, MON_DATA_MOVE1 + slotFrom, &move1);
+ SetMonData(mon, MON_DATA_PP1 + slotTo, &pp0);
+ SetMonData(mon, MON_DATA_PP1 + slotFrom, &pp1);
+ SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses);
+}
+
+void sub_81B98DC(void)
+{
+ if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_IS_EGG))
+ gSpecialVar_Result = TRUE;
+ else
+ gSpecialVar_Result = FALSE;
+}
+
+void sub_81B9918(void)
+{
+ u16 move;
+ u32 i, j;
+
+ gSpecialVar_Result = FALSE;
+ move = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + gSpecialVar_0x8005);
+ if (move == MOVE_SURF)
+ {
+ for (i = 0; i < CalculatePlayerPartyCount(); i++)
+ {
+ if (i != gSpecialVar_0x8004)
+ {
+ for (j = 0; j < MAX_MON_MOVES; j++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j) == MOVE_SURF)
+ return;
+ }
+ }
+ }
+ if (AnyStorageMonWithMove(move) != TRUE)
+ gSpecialVar_Result = TRUE;
+ }
+}
diff --git a/src/player_pc.c b/src/player_pc.c
index ec0d250b4..b7380cee3 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -3,9 +3,8 @@
#include "bg.h"
#include "decoration.h"
#include "event_scripts.h"
-#include "field_fadetransition.h"
#include "event_object_movement.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "field_weather.h"
#include "international_string_util.h"
#include "item.h"
diff --git a/src/poison.c b/src/poison.c
index efa89ec13..a72aab111 100644
--- a/src/poison.c
+++ b/src/poison.c
@@ -194,7 +194,7 @@ void sub_810DBAC(struct Sprite *sprite)
if (!gBattleAnimArgs[3])
StartSpriteAnim(sprite, 2);
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
@@ -218,7 +218,7 @@ void sub_810DC2C(struct Sprite *sprite)
if (!gBattleAnimArgs[3])
StartSpriteAnim(sprite, 2);
- InitAnimSpritePos(sprite, 1);
+ InitSpritePosToAnimAttacker(sprite, 1);
SetAverageBattlerPositions(gBattleAnimTarget, 1, &l1, &l2);
if (GetBattlerSide(gBattleAnimAttacker))
@@ -258,7 +258,7 @@ void sub_810DCD0(struct Sprite *sprite)
static void sub_810DD24(struct Sprite *sprite)
{
- sub_80A656C(sprite);
+ AnimTranslateLinearSimple(sprite);
sprite->data[1] -= sprite->data[5];
sprite->data[2] -= sprite->data[6];
@@ -295,7 +295,7 @@ void AnimBubbleEffect(struct Sprite *sprite)
{
if (!gBattleAnimArgs[2])
{
- sub_80A6980(sprite, TRUE);
+ InitSpritePosToAnimTarget(sprite, TRUE);
}
else
{
diff --git a/src/pokeball.c b/src/pokeball.c
index d159d9254..baa165649 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -426,7 +426,7 @@ static void SpriteCB_TestBallThrow(struct Sprite *sprite)
sprite->pos2.y = 0;
sprite->data[5] = 0;
ballId = ItemIdToBallId(GetBattlerPokeballItemId(opponentBattler));
- LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
sprite->data[0] = LaunchBallFadeMonTask(FALSE, opponentBattler, 14, ballId);
sprite->sBattler = opponentBattler;
sprite->data[7] = noOfShakes;
@@ -737,7 +737,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId));
- LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
sprite->data[0] = LaunchBallFadeMonTask(1, sprite->sBattler, 14, ballId);
sprite->callback = HandleBallAnimEnd;
@@ -922,7 +922,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite)
StartSpriteAffineAnim(sprite, 4);
}
r4 = sprite->data[0];
- TranslateAnimLinear(sprite);
+ AnimTranslateLinear(sprite);
sprite->data[7] += sprite->sBattler / 3;
sprite->pos2.y += Sin(HIBYTE(sprite->data[7]), sprite->data[5]);
sprite->oam.affineParam += 0x100;
@@ -985,9 +985,9 @@ static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite)
#undef sBattler
-static u8 LaunchBallStarsTaskForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d)
+static u8 AnimateBallOpenParticlesForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d)
{
- return LaunchBallStarsTask(x, y, kindOfStars, d, BALL_POKE);
+ return AnimateBallOpenParticles(x, y, kindOfStars, d, BALL_POKE);
}
static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 battlerId, u32 arg2)
@@ -1036,7 +1036,7 @@ static void sub_8076524(struct Sprite *sprite)
r5 = 0;
StartSpriteAnim(sprite, 1);
- LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5);
+ AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5);
sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, battlerId, r4);
sprite->callback = sub_80765E0;
gSprites[r7].invisible = FALSE;
@@ -1129,7 +1129,7 @@ static void sub_80767D4(struct Sprite *sprite)
r6 = 0;
StartSpriteAnim(sprite, 1);
- LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6);
+ AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6);
sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5);
sprite->callback = sub_807687C;
StartSpriteAffineAnim(&gSprites[r7], 2);
diff --git a/src/pokedex.c b/src/pokedex.c
index ee5c99334..755a46821 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -75,9 +75,6 @@ struct UnknownStruct4
u8 unk9;
};
-#define HOENN_DEX_COUNT 202
-#define NATIONAL_DEX_COUNT 386
-
extern struct MusicPlayerInfo gMPlayInfo_BGM;
struct PokedexListItem
@@ -132,12 +129,6 @@ struct PokedexView
enum
{
- DEX_MODE_HOENN,
- DEX_MODE_NATIONAL
-};
-
-enum
-{
AREA_SCREEN,
CRY_SCREEN,
SIZE_SCREEN,
@@ -176,7 +167,7 @@ u16 sub_80BD69C(u16, u16);
void sub_80BD8D0(void);
bool8 sub_80BD930(void);
u8 sub_80BDA40(void);
-u16 sub_80BDA8C(u16);
+u16 GetPokemonSpriteToDisplay(u16);
u32 sub_80BDACC(u16, s16, s16);
static void CreateInterfaceSprites(u8);
void sub_80BE470(struct Sprite *sprite);
@@ -1237,7 +1228,7 @@ void ResetPokedex(void)
gUnknown_02039B50 = 0;
gUnknown_02039B52 = 64;
gUnknown_030060B0 = 0;
- gSaveBlock2Ptr->pokedex.unknown1 = 0;
+ gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
gSaveBlock2Ptr->pokedex.order = 0;
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
gSaveBlock2Ptr->pokedex.unknown2 = 0;
@@ -1289,7 +1280,7 @@ static void ResetPokedexView(struct PokedexView *pokedexView)
pokedexView->unk618 = 0;
pokedexView->seenCount = 0;
pokedexView->ownCount = 0;
- for (i = 0; i <= 3; i++)
+ for (i = 0; i < 4; i++)
pokedexView->unk61E[i] |= 0xFFFF;
pokedexView->unk628 = 0;
pokedexView->unk62A = 0;
@@ -1348,7 +1339,7 @@ void CB2_Pokedex(void)
sPokedexView = AllocZeroed(sizeof(struct PokedexView));
ResetPokedexView(sPokedexView);
CreateTask(sub_80BB78C, 0);
- sPokedexView->dexMode = gSaveBlock2Ptr->pokedex.unknown1;
+ sPokedexView->dexMode = gSaveBlock2Ptr->pokedex.mode;
if (!IsNationalPokedexEnabled())
sPokedexView->dexMode = DEX_MODE_HOENN;
sPokedexView->dexOrder = gSaveBlock2Ptr->pokedex.order;
@@ -1571,9 +1562,9 @@ void sub_80BBDE8(u8 taskId)
{
if (!gPaletteFade.active)
{
- gSaveBlock2Ptr->pokedex.unknown1 = sPokedexView->dexMode;
+ gSaveBlock2Ptr->pokedex.mode = sPokedexView->dexMode;
if (!IsNationalPokedexEnabled())
- gSaveBlock2Ptr->pokedex.unknown1 = DEX_MODE_HOENN;
+ gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
gSaveBlock2Ptr->pokedex.order = sPokedexView->dexOrder;
sub_80BDA40();
sub_80BC890();
@@ -1898,6 +1889,9 @@ void sub_80BC890(void)
void sub_80BC8D4(u8 dexMode, u8 sortMode)
{
u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
+#define temp_dexCount vars[0]
+#define temp_isHoennDex vars[1]
+#define temp_dexNum vars[2]
s16 i;
sPokedexView->pokemonListCount = 0;
@@ -1906,19 +1900,19 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
{
default:
case DEX_MODE_HOENN:
- vars[0] = HOENN_DEX_COUNT;
- vars[1] = 1;
+ temp_dexCount = HOENN_DEX_COUNT;
+ temp_isHoennDex = TRUE;
break;
case DEX_MODE_NATIONAL:
if (IsNationalPokedexEnabled())
{
- vars[0] = NATIONAL_DEX_COUNT;
- vars[1] = 0;
+ temp_dexCount = NATIONAL_DEX_COUNT;
+ temp_isHoennDex = FALSE;
}
else
{
- vars[0] = HOENN_DEX_COUNT;
- vars[1] = 1;
+ temp_dexCount = HOENN_DEX_COUNT;
+ temp_isHoennDex = TRUE;
}
break;
}
@@ -1926,14 +1920,14 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
switch (sortMode)
{
case 0:
- if (vars[1])
+ if (temp_isHoennDex)
{
- for (i = 0; i < vars[0]; i++)
+ for (i = 0; i < temp_dexCount; i++)
{
- vars[2] = HoennToNationalOrder(i + 1);
- sPokedexView->pokedexList[i].dexNum = vars[2];
- sPokedexView->pokedexList[i].seen = GetSetPokedexFlag(vars[2], 0);
- sPokedexView->pokedexList[i].owned = GetSetPokedexFlag(vars[2], 1);
+ temp_dexNum = HoennToNationalOrder(i + 1);
+ sPokedexView->pokedexList[i].dexNum = temp_dexNum;
+ sPokedexView->pokedexList[i].seen = GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN);
+ sPokedexView->pokedexList[i].owned = GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT);
if (sPokedexView->pokedexList[i].seen)
sPokedexView->pokemonListCount = i + 1;
}
@@ -1944,17 +1938,17 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
s16 r5;
r10 = r5 = i = 0;
- for (i = 0; i < vars[0]; i++)
+ for (i = 0; i < temp_dexCount; i++)
{
- vars[2] = i + 1;
- if (GetSetPokedexFlag(vars[2], 0))
+ temp_dexNum = i + 1;
+ if (GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN))
r10 = 1;
if (r10)
{
asm(""); //Needed to match for some reason
- sPokedexView->pokedexList[r5].dexNum = vars[2];
- sPokedexView->pokedexList[r5].seen = GetSetPokedexFlag(vars[2], 0);
- sPokedexView->pokedexList[r5].owned = GetSetPokedexFlag(vars[2], 1);
+ sPokedexView->pokedexList[r5].dexNum = temp_dexNum;
+ sPokedexView->pokedexList[r5].seen = GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN);
+ sPokedexView->pokedexList[r5].owned = GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT);
if (sPokedexView->pokedexList[r5].seen)
sPokedexView->pokemonListCount = r5 + 1;
r5++;
@@ -1965,13 +1959,13 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
case 1:
for (i = 0; i < POKEMON_SLOTS_NUMBER - 1; i++)
{
- vars[2] = gPokedexOrder_Alphabetical[i];
+ temp_dexNum = gPokedexOrder_Alphabetical[i];
- if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0))
+ if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN))
{
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1);
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT);
sPokedexView->pokemonListCount++;
}
}
@@ -1979,13 +1973,13 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
case 2:
for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--)
{
- vars[2] = gPokedexOrder_Weight[i];
+ temp_dexNum = gPokedexOrder_Weight[i];
- if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
+ if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT))
{
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE;
sPokedexView->pokemonListCount++;
}
}
@@ -1993,27 +1987,27 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
case 3:
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
{
- vars[2] = gPokedexOrder_Weight[i];
+ temp_dexNum = gPokedexOrder_Weight[i];
- if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
+ if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT))
{
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE;
sPokedexView->pokemonListCount++;
}
}
break;
case 4:
- for (i = NATIONAL_DEX_COUNT - 1; i >=0; i--)
+ for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--)
{
- vars[2] = gPokedexOrder_Height[i];
+ temp_dexNum = gPokedexOrder_Height[i];
- if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
+ if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT))
{
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE;
sPokedexView->pokemonListCount++;
}
}
@@ -2021,13 +2015,13 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
case 5:
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
{
- vars[2] = gPokedexOrder_Height[i];
+ temp_dexNum = gPokedexOrder_Height[i];
- if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
+ if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT))
{
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
- sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE;
sPokedexView->pokemonListCount++;
}
}
@@ -2037,8 +2031,8 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
{
sPokedexView->pokedexList[i].dexNum |= 0xFFFF;
- sPokedexView->pokedexList[i].seen = 0;
- sPokedexView->pokedexList[i].owned = 0;
+ sPokedexView->pokedexList[i].seen = FALSE;
+ sPokedexView->pokedexList[i].owned = FALSE;
}
}
@@ -2192,7 +2186,7 @@ static void CreateInitialPokemonSprites(u16 selectedMon, u16 b)
sPokedexView->unk61E[i] = 0xFFFF;
sPokedexView->selectedMonSpriteId = 0xFFFF;
- unk = sub_80BDA8C(selectedMon - 1);
+ unk = GetPokemonSpriteToDisplay(selectedMon - 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -2200,7 +2194,7 @@ static void CreateInitialPokemonSprites(u16 selectedMon, u16 b)
gSprites[spriteId].data[5] = -32;
}
- unk = sub_80BDA8C(selectedMon);
+ unk = GetPokemonSpriteToDisplay(selectedMon);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -2208,7 +2202,7 @@ static void CreateInitialPokemonSprites(u16 selectedMon, u16 b)
gSprites[spriteId].data[5] = 0;
}
- unk = sub_80BDA8C(selectedMon + 1);
+ unk = GetPokemonSpriteToDisplay(selectedMon + 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -2274,7 +2268,7 @@ static void CreateNewPokemonSprite(u8 direction, u16 selectedMon)
switch (direction)
{
case 1: // up
- unk = sub_80BDA8C(selectedMon - 1);
+ unk = GetPokemonSpriteToDisplay(selectedMon - 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -2287,7 +2281,7 @@ static void CreateNewPokemonSprite(u8 direction, u16 selectedMon)
sPokedexView->unk630 = 15;
break;
case 2: // down
- unk = sub_80BDA8C(selectedMon + 1);
+ unk = GetPokemonSpriteToDisplay(selectedMon + 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -2449,12 +2443,12 @@ u8 sub_80BDA40(void)
return FALSE;
}
-u16 sub_80BDA8C(u16 a1)
+u16 GetPokemonSpriteToDisplay(u16 species)
{
- if (a1 >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[a1].dexNum == 0xFFFF)
+ if (species >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[species].dexNum == 0xFFFF)
return 0xFFFF;
- else if (sPokedexView->pokedexList[a1].seen)
- return sPokedexView->pokedexList[a1].dexNum;
+ else if (sPokedexView->pokedexList[species].seen)
+ return sPokedexView->pokedexList[species].dexNum;
else
return 0;
}
@@ -2467,7 +2461,7 @@ u32 sub_80BDACC(u16 num, s16 x, s16 y)
{
if (sPokedexView->unk61E[i] == 0xFFFF)
{
- u8 spriteId = sub_80C0E9C(num, x, y, i);
+ u8 spriteId = CreateMonSpriteFromNationalDexNumber(num, x, y, i);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.priority = 3;
@@ -2963,7 +2957,7 @@ void sub_80BEA24(u8 taskId)
case 5:
if (gTasks[taskId].data[1] == 0)
{
- gTasks[taskId].data[4] = (u16)sub_80C0E9C(sPokedexListItem->dexNum, 0x30, 0x38, 0);
+ gTasks[taskId].data[4] = (u16)CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 48, 56, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
}
gMain.state++;
@@ -3251,7 +3245,7 @@ void sub_80BF250(u8 taskId)
gMain.state++;
break;
case 5:
- gTasks[taskId].data[4] = sub_80C0E9C(sPokedexListItem->dexNum, 48, 56, 0);
+ gTasks[taskId].data[4] = CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 48, 56, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
gDexCryScreenState = 0;
gMain.state++;
@@ -3459,7 +3453,7 @@ void sub_80BF82C(u8 taskId)
gMain.state++;
break;
case 6:
- spriteId = sub_80C0E9C(sPokedexListItem->dexNum, 88, 56, 1);
+ spriteId = CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 88, 56, 1);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 2;
gSprites[spriteId].oam.priority = 0;
@@ -3790,7 +3784,7 @@ void sub_80BFE38(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 4:
- spriteId = sub_80C0E9C(dexNum, 0x30, 0x38, 0);
+ spriteId = CreateMonSpriteFromNationalDexNumber(dexNum, 48, 56, 0);
gSprites[spriteId].oam.priority = 0;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
SetVBlankCallback(gUnknown_030060B4);
@@ -4348,7 +4342,7 @@ u16 GetHoennPokedexCount(u8 caseID)
u16 count = 0;
u16 i;
- for (i = 0; i < 202; i++)
+ for (i = 0; i < HOENN_DEX_COUNT; i++)
{
switch (caseID)
{
@@ -4417,17 +4411,17 @@ u16 sub_80C0944(void)
for (i = 0; i < 150; i++)
{
- if (GetSetPokedexFlag(i + 1, 1) == 0)
+ if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return 0;
}
for (i = 151; i < 248; i++)
{
- if (GetSetPokedexFlag(i + 1, 1) == 0)
+ if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return 0;
}
for (i = 251; i < 384; i++)
{
- if (GetSetPokedexFlag(i + 1, 1) == 0)
+ if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return 0;
}
return 1;
@@ -4643,10 +4637,10 @@ u32 sub_80C0E68(u16 a)
}
}
-u16 sub_80C0E9C(u16 num, s16 x, s16 y, u16 paletteSlot)
+u16 CreateMonSpriteFromNationalDexNumber(u16 nationalNum, s16 x, s16 y, u16 paletteSlot)
{
- num = NationalPokedexNumToSpecies(num);
- return CreateMonPicSprite_HandleDeoxys(num, 8, sub_80C0E68(num), TRUE, x, y, paletteSlot, 0xFFFF);
+ nationalNum = NationalPokedexNumToSpecies(nationalNum);
+ return CreateMonPicSprite_HandleDeoxys(nationalNum, 8, sub_80C0E68(nationalNum), TRUE, x, y, paletteSlot, 0xFFFF);
}
u16 sub_80C0EF8(u16 species, s16 x, s16 y, s8 paletteSlot)
@@ -4980,10 +4974,10 @@ void sub_80C170C(u8 taskId)
sPokedexView->unk62A = 0x40;
gUnknown_02039B50 = 0;
sPokedexView->unk610 = 0;
- gSaveBlock2Ptr->pokedex.unknown1 = sub_80C2318(taskId, 5);
+ gSaveBlock2Ptr->pokedex.mode = sub_80C2318(taskId, 5);
if (!IsNationalPokedexEnabled())
- gSaveBlock2Ptr->pokedex.unknown1 = 0;
- sPokedexView->unk614 = gSaveBlock2Ptr->pokedex.unknown1;
+ gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
+ sPokedexView->unk614 = gSaveBlock2Ptr->pokedex.mode;
gSaveBlock2Ptr->pokedex.order = sub_80C2318(taskId, 4);
sPokedexView->unk618 = gSaveBlock2Ptr->pokedex.order;
PlaySE(SE_PC_OFF);
diff --git a/src/pokemon.c b/src/pokemon.c
index aea52ecbb..1e8126c5e 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -45,12 +45,6 @@ struct SpeciesItem
u16 item;
};
-// Extracts the upper 16 bits of a 32-bit number
-#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
-
-// Extracts the lower 16 bits of a 32-bit number
-#define LOHALF(n) ((n) & 0xFFFF)
-
extern const struct OamData gUnknown_0831ACB0;
extern const struct OamData gUnknown_0831ACA8;
extern const struct SpriteFrameImage gUnknown_082FF3A8[];
@@ -2755,7 +2749,7 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
CalculateMonStats(mon);
}
-void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src)
+void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src)
{
s32 i;
u8 nickname[30];
@@ -2809,7 +2803,7 @@ void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src)
CalculateMonStats(mon);
}
-void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50)
+void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50)
{
s32 i;
u8 nickname[30];
@@ -2937,7 +2931,7 @@ void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level,
CalculateMonStats(mon);
}
-void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest)
+void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest)
{
s32 i;
u16 heldItem;
@@ -5864,10 +5858,10 @@ u16 HoennPokedexNumToSpecies(u16 hoennNum)
species = 0;
- while (species < 411 && gSpeciesToHoennPokedexNum[species] != hoennNum)
+ while (species < (NUM_SPECIES - 1) && gSpeciesToHoennPokedexNum[species] != hoennNum)
species++;
- if (species == 411)
+ if (species == NUM_SPECIES - 1)
return 0;
return species + 1;
@@ -5882,10 +5876,10 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum)
species = 0;
- while (species < 411 && gSpeciesToNationalPokedexNum[species] != nationalNum)
+ while (species < (NUM_SPECIES - 1) && gSpeciesToNationalPokedexNum[species] != nationalNum)
species++;
- if (species == 411)
+ if (species == NUM_SPECIES - 1)
return 0;
return species + 1;
@@ -5900,10 +5894,10 @@ u16 NationalToHoennOrder(u16 nationalNum)
hoennNum = 0;
- while (hoennNum < 411 && gHoennToNationalOrder[hoennNum] != nationalNum)
+ while (hoennNum < (NUM_SPECIES - 1) && gHoennToNationalOrder[hoennNum] != nationalNum)
hoennNum++;
- if (hoennNum == 411)
+ if (hoennNum == NUM_SPECIES - 1)
return 0;
return hoennNum + 1;
@@ -5935,13 +5929,13 @@ u16 HoennToNationalOrder(u16 hoennNum)
u16 SpeciesToCryId(u16 species)
{
- if (species <= 250)
+ if (species <= SPECIES_CELEBI - 1)
return species;
- if (species < 276)
- return 200;
+ if (species < SPECIES_TREECKO - 1)
+ return SPECIES_UNOWN - 1;
- return gSpeciesIdToCryId[species - 276];
+ return gSpeciesIdToCryId[species - (SPECIES_TREECKO - 1)];
}
void sub_806D544(u16 species, u32 personality, u8 *dest)
@@ -6584,15 +6578,15 @@ u16 SpeciesToPokedexNum(u16 species)
else
{
species = SpeciesToHoennPokedexNum(species);
- if (species <= 202)
+ if (species <= HOENN_DEX_COUNT)
return species;
return 0xFFFF;
}
}
-bool32 sub_806E3F8(u16 species)
+bool32 IsSpeciesInHoennDex(u16 species)
{
- if (SpeciesToHoennPokedexNum(species) > 202)
+ if (SpeciesToHoennPokedexNum(species) > HOENN_DEX_COUNT)
return FALSE;
else
return TRUE;
@@ -6707,12 +6701,6 @@ const u32 *GetMonFrontSpritePal(struct Pokemon *mon)
return GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality);
}
-// Extracts the upper 16 bits of a 32-bit number
-#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
-
-// Extracts the lower 16 bits of a 32-bit number
-#define LOHALF(n) ((n) & 0xFFFF)
-
const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
{
u32 shinyValue;
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 5c3e1b4a6..3028b5ca1 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -6,7 +6,7 @@
#include "dma3.h"
#include "dynamic_placeholder_text_util.h"
#include "event_data.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "field_weather.h"
#include "gpu_regs.h"
#include "graphics.h"
@@ -10198,7 +10198,7 @@ void SetBoxWallpaper(u8 boxId, u8 wallpaperId)
gPokemonStoragePtr->boxWallpapers[boxId] = wallpaperId;
}
-s16 sub_80D214C(struct BoxPokemon *boxMons, s8 currIndex, u8 maxIndex, u8 arg3)
+s16 sub_80D214C(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3)
{
s16 i;
s16 adder = -1;
@@ -10208,7 +10208,7 @@ s16 sub_80D214C(struct BoxPokemon *boxMons, s8 currIndex, u8 maxIndex, u8 arg3)
if (arg3 == 1 || arg3 == 3)
{
- for (i = currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
+ for (i = (s8)currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
{
if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE)
return i;
@@ -10216,7 +10216,7 @@ s16 sub_80D214C(struct BoxPokemon *boxMons, s8 currIndex, u8 maxIndex, u8 arg3)
}
else
{
- for (i = currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
+ for (i = (s8)currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
{
if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetBoxMonData(&boxMons[i], MON_DATA_IS_EGG))
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index ebdb8b21a..a72e83b96 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -129,7 +129,7 @@ struct UnkStruct_61CC04
};
// forward declarations
-bool8 sub_81B1250(void);
+bool8 IsMultiBattle(void);
static bool8 SummaryScreen_LoadGraphics(void);
static void SummaryScreen_LoadingCB2(void);
static void InitBGs(void);
@@ -1500,7 +1500,7 @@ static void sub_81C0604(u8 taskId, s8 a)
}
r4_2 = sub_80D214C(pssData->monList.boxMons, pssData->curMonIndex, pssData->maxMonIndex, a);
}
- else if (sub_81B1250() == 1)
+ else if (IsMultiBattle() == TRUE)
{
r4_2 = sub_81C09B4(a);
}
@@ -3254,7 +3254,7 @@ static void PrintHeldItemName(void)
const u8 *text;
int offset;
- if (pssData->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == TRUE && (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5))
+ if (pssData->summary.item == ITEM_ENIGMA_BERRY && IsMultiBattle() == TRUE && (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5))
{
text = ItemId_GetName(ITEM_ENIGMA_BERRY);
}
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 975b51386..2b497c82b 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -22,8 +22,8 @@
#include "constants/songs.h"
#include "menu.h"
#include "overworld.h"
-#include "field_screen.h"
-#include "fldeff_80F9BCC.h"
+#include "field_screen_effect.h"
+#include "fldeff_misc.h"
#include "script.h"
#include "event_data.h"
#include "lilycove_lady.h"
@@ -647,7 +647,7 @@ static void ReceiveOldManData(OldMan *oldMan, size_t recordSize, u8 which)
static void ReceiveBattleTowerData(void *battleTowerRecord, size_t recordSize, u8 which)
{
struct EmeraldBattleTowerRecord *dest;
- struct UnknownPokemonStruct *btPokemon;
+ struct BattleTowerPokemon *btPokemon;
u32 mixIndices[4];
s32 i;
@@ -1866,7 +1866,7 @@ static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *ds
for (i = 0; i < 4; i++)
{
- struct UnknownPokemonStruct *towerMon = &dst->party[i];
+ struct BattleTowerPokemon *towerMon = &dst->party[i];
if (towerMon->species != 0)
StripExtCtrlCodes(towerMon->nickname);
}
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 7f2eb3746..06d2af5b7 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -226,7 +226,7 @@ static void CreateBattlerSprite(u8 battler)
return;
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
- gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, sub_80A82E4(battler));
+ gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
@@ -241,7 +241,7 @@ static void CreateBattlerSprite(u8 battler)
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(B_POSITION_PLAYER_LEFT));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80,
- sub_80A82E4(0));
+ GetBattlerSpriteSubpriority(0));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
@@ -251,7 +251,7 @@ static void CreateBattlerSprite(u8 battler)
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(0));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].coords) * 4 + 80,
- sub_80A82E4(0));
+ GetBattlerSpriteSubpriority(0));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
@@ -262,7 +262,7 @@ static void CreateBattlerSprite(u8 battler)
return;
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
- gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, sub_80A82E4(battler));
+ gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
diff --git a/src/rock.c b/src/rock.c
index 3b8e505d8..ff3840fb3 100644
--- a/src/rock.c
+++ b/src/rock.c
@@ -340,7 +340,7 @@ static void sub_8110A70(struct Sprite *sprite)
sprite->data[3] = 32;
sprite->data[4] = -24;
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80A6450;
sprite->callback(sprite);
}
@@ -367,16 +367,16 @@ void sub_8110AB4(struct Sprite *sprite)
sprite->data[3] = 0;
sprite->data[4] = 0;
- sprite->callback = sub_80A656C;
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = AnimTranslateLinearSimple;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
}
void sub_8110B38(struct Sprite *sprite)
{
if (gBattleAnimArgs[6] == 0)
- InitAnimSpritePos(sprite, 0);
+ InitSpritePosToAnimAttacker(sprite, 0);
else
- sub_80A6980(sprite, FALSE);
+ InitSpritePosToAnimTarget(sprite, FALSE);
sprite->data[0] = gBattleAnimArgs[3];
sprite->data[1] = gBattleAnimArgs[2];
@@ -555,7 +555,7 @@ void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
void AnimRaiseSprite(struct Sprite *sprite)
{
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
- InitAnimSpritePos(sprite, 0);
+ InitSpritePosToAnimAttacker(sprite, 0);
sprite->data[0] = gBattleAnimArgs[3];
sprite->data[2] = sprite->pos1.x;
diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c
index 0553b9cf4..deec55c9d 100644
--- a/src/rom_8011DC0.c
+++ b/src/rom_8011DC0.c
@@ -32,7 +32,7 @@
#include "decompress.h"
#include "start_menu.h"
#include "data2.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
extern void HealPlayerParty(void);
diff --git a/src/save.c b/src/save.c
index 4ae516fc9..905f075fb 100644
--- a/src/save.c
+++ b/src/save.c
@@ -5,6 +5,7 @@
#include "decompress.h"
#include "load_save.h"
#include "overworld.h"
+#include "pokemon_storage_system.h"
#include "main.h"
#include "constants/game_stat.h"
diff --git a/src/scrcmd.c b/src/scrcmd.c
index f486b93a6..9d9c62a82 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -13,7 +13,6 @@
#include "event_data.h"
#include "field_door.h"
#include "field_effect.h"
-#include "field_fadetransition.h"
#include "event_object_movement.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
@@ -1486,7 +1485,7 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
StringExpandPlaceholders(gStringVar4, ptr + 6);
- width = GetStringWidth(6, gStringVar4, -1) / 8;
+ width = GetStringWidth(6, gStringVar4, -1) / 8u;
if (width > 0x1C)
width = 0x1C;
diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c
index 9f18d4b3a..9e4cb7719 100755
--- a/src/script_pokemon_util_80F87D8.c
+++ b/src/script_pokemon_util_80F87D8.c
@@ -220,7 +220,7 @@ static void ShowContestWinnerCleanup(void)
void ShowContestWinner(void)
{
- SetMainCallback2(sub_812FDEC);
+ SetMainCallback2(CB2_ContestPainting);
gMain.savedCallback = ShowContestWinnerCleanup;
}
@@ -563,8 +563,8 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u
{
case 0:
case 1:
- GetSetPokedexFlag(nationalDexNum, 2);
- GetSetPokedexFlag(nationalDexNum, 3);
+ GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN);
+ GetSetPokedexFlag(nationalDexNum, FLAG_SET_CAUGHT);
break;
}
return sentToPc;
diff --git a/src/secret_base.c b/src/secret_base.c
index 4bf1709d2..a32186419 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -1,5 +1,3 @@
-
-// Includes
#include "global.h"
#include "constants/bg_event_constants.h"
#include "constants/decorations.h"
@@ -19,11 +17,11 @@
#include "fieldmap.h"
#include "field_camera.h"
#include "field_player_avatar.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "field_weather.h"
#include "event_object_movement.h"
#include "field_effect.h"
-#include "fldeff_80F9BCC.h"
+#include "fldeff_misc.h"
#include "metatile_behavior.h"
#include "map_name_popup.h"
#include "string_util.h"
@@ -190,7 +188,7 @@ void sub_80E8B6C(void)
continue;
}
gSpecialVar_Result = TRUE;
- VarSet(VAR_0x4054, i);
+ VarSet(VAR_CURRENT_SECRET_BASE, i);
break;
}
}
@@ -320,7 +318,7 @@ void sub_80E8E18(void)
{
gSaveBlock1Ptr->secretBases[0].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
}
- VarSet(VAR_0x4054, 0);
+ VarSet(VAR_CURRENT_SECRET_BASE, 0);
StringCopyN(gSaveBlock1Ptr->secretBases[0].trainerName, gSaveBlock2Ptr->playerName, sub_80E8DF4(gSaveBlock2Ptr->playerName));
gSaveBlock1Ptr->secretBases[0].gender = gSaveBlock2Ptr->playerGender;
gSaveBlock1Ptr->secretBases[0].language = GAME_LANGUAGE;
@@ -383,7 +381,7 @@ void sub_80E8FD0(u8 taskId)
}
break;
case 1:
- secretBaseRecordId = VarGet(VAR_0x4054);
+ secretBaseRecordId = VarGet(VAR_CURRENT_SECRET_BASE);
if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_10 < 255)
{
gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_10 ++;
@@ -479,7 +477,7 @@ void sub_80E9238(u8 flagIn)
if (CurrentMapIsSecretBase())
{
- curBaseId = VarGet(VAR_0x4054);
+ curBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
decorations = gSaveBlock1Ptr->secretBases[curBaseId].decorations;
decorPos = gSaveBlock1Ptr->secretBases[curBaseId].decorationPos;
for (x = 0; x < 16; x ++)
@@ -522,7 +520,7 @@ void sub_80E933C(void)
}
else
{
- curBase = VarGet(VAR_0x4054);
+ curBase = VarGet(VAR_CURRENT_SECRET_BASE);
roomDecor = gSaveBlock1Ptr->secretBases[curBase].decorations;
roomDecorPos = gSaveBlock1Ptr->secretBases[curBase].decorationPos;
nDecor = 16;
@@ -558,7 +556,7 @@ void sub_80E933C(void)
show_sprite(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
sub_808EBA8(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
sub_808F254(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
- if (CurrentMapIsSecretBase() == TRUE && VarGet(VAR_0x4054) != 0)
+ if (CurrentMapIsSecretBase() == TRUE && VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
if (category == DECORCAT_DOLL)
{
@@ -594,7 +592,7 @@ void sub_80E9578(void)
void sub_80E95D4(void)
{
- VarSet(VAR_OBJ_GFX_ID_F, gUnknown_0858D060[sub_80EA20C(VarGet(VAR_0x4054))]);
+ VarSet(VAR_OBJ_GFX_ID_F, gUnknown_0858D060[sub_80EA20C(VarGet(VAR_CURRENT_SECRET_BASE))]);
}
void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events)
@@ -681,7 +679,7 @@ u8 *sub_80E9780(u8 *dest, u8 secretBaseRecordId)
u8 *GetSecretBaseMapName(u8 *dest)
{
- return sub_80E9780(dest, VarGet(VAR_0x4054));
+ return sub_80E9780(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
void sub_80E980C(void)
@@ -689,7 +687,7 @@ void sub_80E980C(void)
u8 secretBaseRecordId;
const u8 *src;
- secretBaseRecordId = VarGet(VAR_0x4054);
+ secretBaseRecordId = VarGet(VAR_CURRENT_SECRET_BASE);
src = gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName;
*StringCopyN(gStringVar1, src, sub_80E8DF4(src)) = EOS;
ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[secretBaseRecordId].language);
@@ -829,7 +827,7 @@ u8 sub_80E9BA8(void)
void sub_80E9BDC(void)
{
- if (sub_80E9878(VarGet(VAR_0x4054)) == TRUE)
+ if (sub_80E9878(VarGet(VAR_CURRENT_SECRET_BASE)) == TRUE)
{
gSpecialVar_Result = 1;
}
@@ -845,7 +843,7 @@ void sub_80E9BDC(void)
void sub_80E9C2C(void)
{
- gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].sbr_field_1_6 ^= 1;
+ gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_6 ^= 1;
FlagSet(0x10C);
}
@@ -1081,7 +1079,7 @@ void sub_80EA18C(u8 taskId)
void task_pc_turn_off(u8 taskId)
{
- if (VarGet(VAR_0x4054) == 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) == 0)
{
ScriptContext1_SetupScript(gUnknown_0823B4E8);
}
@@ -1101,7 +1099,7 @@ const u8 *GetSecretBaseTrainerLoseText(void)
{
u8 param;
- param = sub_80EA20C(VarGet(VAR_0x4054));
+ param = sub_80EA20C(VarGet(VAR_CURRENT_SECRET_BASE));
if (param == 0)
{
return SecretBase_RedCave1_Text_274966;
@@ -1150,7 +1148,7 @@ void sub_80EA2E4(void)
void sub_80EA30C(void)
{
- gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_Result;
+ gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_5 = gSpecialVar_Result;
}
void sub_80EA354(void)
@@ -1158,7 +1156,7 @@ void sub_80EA354(void)
u16 secretBaseRecordId;
u8 i;
- secretBaseRecordId = VarGet(VAR_0x4054);
+ secretBaseRecordId = VarGet(VAR_CURRENT_SECRET_BASE);
if (!FlagGet(0x922))
{
for (i = 0; i < 20; i ++)
@@ -1183,7 +1181,7 @@ void sub_80EA3E4(u8 taskId)
switch (data[1])
{
case 0:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
gUnknown_0203A01D = TRUE;
}
@@ -1256,7 +1254,7 @@ void sub_80EA3E4(u8 taskId)
}
else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE)
{
- sub_80FA5E4(MapGridGetMetatileIdAt(x, y), x, y);
+ PopSecretBaseBalloon(MapGridGetMetatileIdAt(x, y), x, y);
if (gUnknown_0203A01D == TRUE)
{
switch ((int)MapGridGetMetatileIdAt(x, y))
@@ -1278,7 +1276,7 @@ void sub_80EA3E4(u8 taskId)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x400);
}
- sub_80FA794(x, y);
+ ShatterSecretBaseBreakableDoor(x, y);
}
else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){
if (gUnknown_0203A01D == TRUE) {
@@ -1783,7 +1781,7 @@ void sub_80EB1AC(void)
VarSet(VAR_0x40ED, 0);
VarSet(VAR_0x40EE, 0);
VarSet(VAR_0x40EF, 0);
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40F0, TRUE);
}
@@ -1811,7 +1809,7 @@ void sub_80EB218(void)
void sub_80EB290(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x800);
}
@@ -1819,7 +1817,7 @@ void sub_80EB290(void)
void sub_80EB2C8(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x400);
}
@@ -1827,7 +1825,7 @@ void sub_80EB2C8(void)
void sub_80EB300(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
@@ -1837,7 +1835,7 @@ void sub_80EB300(void)
void sub_80EB368(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
@@ -1847,7 +1845,7 @@ void sub_80EB368(void)
void sub_80EB3D0(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
@@ -1857,7 +1855,7 @@ void sub_80EB3D0(void)
void sub_80EB438(void)
{
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
@@ -1888,7 +1886,7 @@ void sub_80EB498(void)
case 0x332:
case 0x333:
case 0x334:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x4000);
}
@@ -1906,7 +1904,7 @@ void sub_80EB56C(void)
{
case 0x28a:
case 0x28b:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x40);
}
@@ -1929,21 +1927,21 @@ void sub_80EB56C(void)
case 0x2f9:
case 0x2fa:
case 0x2fb:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8);
}
break;
case 0x22c:
case 0x233:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x40);
}
break;
case 0x288:
case 0x289:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
}
@@ -1951,7 +1949,7 @@ void sub_80EB56C(void)
case 0x22d:
case 0x22e:
case 0x22f:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
}
@@ -1979,7 +1977,7 @@ void sub_80EB56C(void)
case 0x2cd:
case 0x2ce:
case 0x2cf:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
}
@@ -2006,7 +2004,7 @@ void sub_80EB9E0(void)
case 0x2be:
case 0x2c3:
case 0x2c6:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
}
@@ -2044,14 +2042,14 @@ void sub_80EBB28(void)
case 0x2c4:
case 0x2c5:
case 0x2c7:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
}
break;
case 0x280:
case 0x281:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
}
@@ -2059,7 +2057,7 @@ void sub_80EBB28(void)
case 0x225:
case 0x226:
case 0x227:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
}
@@ -2077,7 +2075,7 @@ void sub_80EBE7C(void)
{
case 0x28d:
case 0x28e:
- if (VarGet(VAR_0x4054) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4);
}
diff --git a/src/shop.c b/src/shop.c
index b08d94545..c44cbca12 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -6,7 +6,7 @@
#include "decoration_inventory.h"
#include "event_object_movement.h"
#include "field_player_avatar.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
#include "field_weather.h"
#include "fieldmap.h"
#include "gpu_regs.h"
diff --git a/src/start_menu.c b/src/start_menu.c
index 62fdc07d5..ad7b4b6cc 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -88,7 +88,7 @@ extern void sub_80AF688(void);
extern void var_800D_set_xB(void);
extern void sub_808B864(void);
extern void CB2_Pokedex(void);
-extern void play_some_sound(void);
+extern void PlayRainSoundEffect(void);
extern void CB2_PartyMenuFromStartMenu(void);
extern void CB2_PokeNav(void);
extern void sub_80C4DDC(void (*)(void));
@@ -621,7 +621,7 @@ static bool8 StartMenuPokedexCallback(void)
if (!gPaletteFade.active)
{
IncrementGameStat(GAME_STAT_CHECKED_POKEDEX);
- play_some_sound();
+ PlayRainSoundEffect();
RemoveExtraStartMenuWindows();
overworld_free_bg_tilemaps();
SetMainCallback2(CB2_Pokedex);
@@ -636,7 +636,7 @@ static bool8 StartMenuPokemonCallback(void)
{
if (!gPaletteFade.active)
{
- play_some_sound();
+ PlayRainSoundEffect();
RemoveExtraStartMenuWindows();
overworld_free_bg_tilemaps();
SetMainCallback2(CB2_PartyMenuFromStartMenu); // Display party menu
@@ -651,7 +651,7 @@ static bool8 StartMenuBagCallback(void)
{
if (!gPaletteFade.active)
{
- play_some_sound();
+ PlayRainSoundEffect();
RemoveExtraStartMenuWindows();
overworld_free_bg_tilemaps();
SetMainCallback2(CB2_BagMenuFromStartMenu); // Display bag menu
@@ -666,7 +666,7 @@ static bool8 StartMenuPokeNavCallback(void)
{
if (!gPaletteFade.active)
{
- play_some_sound();
+ PlayRainSoundEffect();
RemoveExtraStartMenuWindows();
overworld_free_bg_tilemaps();
SetMainCallback2(CB2_PokeNav); // Display PokeNav
@@ -681,7 +681,7 @@ static bool8 StartMenuPlayerNameCallback(void)
{
if (!gPaletteFade.active)
{
- play_some_sound();
+ PlayRainSoundEffect();
RemoveExtraStartMenuWindows();
overworld_free_bg_tilemaps();
@@ -720,7 +720,7 @@ static bool8 StartMenuOptionCallback(void)
{
if (!gPaletteFade.active)
{
- play_some_sound();
+ PlayRainSoundEffect();
RemoveExtraStartMenuWindows();
overworld_free_bg_tilemaps();
SetMainCallback2(CB2_InitOptionMenu); // Display option menu
@@ -753,7 +753,7 @@ static bool8 StartMenuLinkModePlayerNameCallback(void)
{
if (!gPaletteFade.active)
{
- play_some_sound();
+ PlayRainSoundEffect();
overworld_free_bg_tilemaps();
TrainerCard_ShowLinkCard(gUnknown_03005DB4, CB2_ReturnToFieldWithOpenMenu);
@@ -782,7 +782,7 @@ static bool8 StartMenuBattlePyramidBagCallback(void)
{
if (!gPaletteFade.active)
{
- play_some_sound();
+ PlayRainSoundEffect();
RemoveExtraStartMenuWindows();
overworld_free_bg_tilemaps();
SetMainCallback2(CB2_PyramidBagMenuFromStartMenu);
diff --git a/src/tv.c b/src/tv.c
index 032bcde6a..0ae105580 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -2572,13 +2572,13 @@ void sub_80EEA70(void)
show->secretBaseSecrets.flags = VarGet(0x40ee) + (VarGet(0x40ef) << 16);
tv_store_id_3x(show);
show->secretBaseSecrets.language = gGameLanguage;
- if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language == LANGUAGE_JAPANESE)
+ if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language == LANGUAGE_JAPANESE)
{
show->secretBaseSecrets.baseOwnersNameLanguage = LANGUAGE_JAPANESE;
}
else
{
- show->secretBaseSecrets.baseOwnersNameLanguage = gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language;
+ show->secretBaseSecrets.baseOwnersNameLanguage = gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language;
}
}
}
@@ -3229,9 +3229,9 @@ u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies)
species = (Random() % (NUM_SPECIES - 1)) + 1;
initSpecies = species;
- while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) != 1 || species == passedSpecies)
+ while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN) != TRUE || species == passedSpecies)
{
- if (species == 1)
+ if (species == SPECIES_NONE + 1)
{
species = NUM_SPECIES - 1;
}
@@ -4376,7 +4376,7 @@ void SetTvShowInactive(u8 showIdx)
static void sub_80F0B24(u16 species, u8 showIdx)
{
- if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0)
+ if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN))
{
gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
}
diff --git a/src/walda_phrase.c b/src/walda_phrase.c
index 10a899583..83004777f 100644
--- a/src/walda_phrase.c
+++ b/src/walda_phrase.c
@@ -8,7 +8,7 @@
#include "new_game.h"
#include "overworld.h"
#include "pokemon_storage_system.h"
-#include "field_screen.h"
+#include "field_screen_effect.h"
extern const u8 gText_Peekaboo[];
diff --git a/src/water.c b/src/water.c
index 955526ccd..42ab1d67f 100644
--- a/src/water.c
+++ b/src/water.c
@@ -1,21 +1,60 @@
#include "global.h"
+#include "battle.h"
#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "palette.h"
+#include "random.h"
+#include "scanline_effect.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "util.h"
+#include "constants/battle.h"
#include "constants/rgb.h"
extern void sub_810721C(struct Sprite *);
+extern void sub_8107228(struct Sprite *);
extern void sub_8107260(struct Sprite *);
+extern void sub_8107380(struct Sprite *);
+extern void sub_8107408(struct Sprite *);
+extern void sub_8107430(struct Sprite *);
extern void sub_810744C(struct Sprite *);
+extern void sub_81074E4(struct Sprite *);
extern void sub_81075EC(struct Sprite *);
+extern void sub_8107674(struct Sprite *);
extern void sub_8107730(struct Sprite *);
+extern void sub_81077A4(struct Sprite *);
extern void sub_81077C0(struct Sprite *);
extern void sub_80A78AC(struct Sprite *);
extern void sub_8107894(struct Sprite *);
extern void sub_81078D0(struct Sprite *);
+extern void sub_810790C(struct Sprite *);
extern void sub_8108034(struct Sprite *);
+extern void sub_8108098(struct Sprite *);
extern void sub_810851C(struct Sprite *);
+extern void sub_81087C0(struct Sprite *);
+extern void sub_810886C(struct Sprite *);
+extern void sub_8108B2C(struct Sprite *);
+extern void sub_8108B94(struct Sprite *);
extern void sub_8108BE0(struct Sprite *);
+extern void sub_8108C08(struct Sprite *);
extern void sub_8108C54(struct Sprite *);
+extern void sub_8108CDC(struct Sprite *);
extern void sub_80A8EE4(struct Sprite *);
+void sub_810756C(u8);
+void sub_81076F4(u8);
+void sub_8107B84(u8);
+void sub_8107CC4(u8);
+void sub_8107D58(u8);
+void sub_8108140(u8);
+void sub_810862C(u8);
+void sub_8108978(u8);
+u8 sub_8108384(void);
+void sub_8108408(struct Task*, u8);
+void sub_810871C(struct Task*, u8);
+void sub_8108AC0(struct Task*);
+void sub_8108D54(struct Sprite*, int, int);
extern const union AffineAnimCmd *const gUnknown_08593420[];
extern const union AffineAnimCmd *const gUnknown_08596208[];
@@ -440,3 +479,2149 @@ const struct SpriteTemplate gUnknown_08595328 =
.affineAnims = gUnknown_085952F4,
.callback = sub_80A8EE4,
};
+
+extern const struct SpriteTemplate gUnknown_08597388;
+
+void AnimTask_CreateRaindrops(u8 taskId)
+{
+ u8 x, y;
+
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ }
+ gTasks[taskId].data[0]++;
+ if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1)
+ {
+ x = Random2() % 240;
+ y = Random2() % 80;
+ CreateSprite(&gUnknown_08595020, x, y, 4);
+ }
+ if (gTasks[taskId].data[0] == gTasks[taskId].data[3])
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_810721C(struct Sprite *sprite)
+{
+ sprite->callback = sub_8107228;
+}
+
+void sub_8107228(struct Sprite *sprite)
+{
+ if (++sprite->data[0] <= 13)
+ {
+ sprite->pos2.x++;
+ sprite->pos2.y += 4;
+ }
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+void sub_8107260(struct Sprite *sprite)
+{
+ u8 spriteId;
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
+ sprite->animPaused = TRUE;
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
+ sprite->animPaused = TRUE;
+ }
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[6];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ InitAnimLinearTranslation(sprite);
+ spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ sprite->data[5] = spriteId;
+ sprite->pos1.x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]);
+ sprite->pos1.y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]);
+ gSprites[spriteId].data[0] = gBattleAnimArgs[2];
+ gSprites[spriteId].data[1] = gBattleAnimArgs[3];
+ gSprites[spriteId].data[2] = gBattleAnimArgs[5];
+ gSprites[spriteId].data[3] = (u8)gBattleAnimArgs[4] * 256;
+ gSprites[spriteId].data[4] = gBattleAnimArgs[6];
+ sprite->callback = sub_8107380;
+ sprite->callback(sprite);
+}
+
+void sub_8107380(struct Sprite *sprite)
+{
+ u8 otherSpriteId = sprite->data[5];
+ u8 timer = gSprites[otherSpriteId].data[4];
+ u16 trigIndex = gSprites[otherSpriteId].data[3];
+
+ sprite->data[0] = 1;
+ AnimTranslateLinear(sprite);
+ sprite->pos2.x += Sin(trigIndex >> 8, gSprites[otherSpriteId].data[0]);
+ sprite->pos2.y += Cos(trigIndex >> 8, gSprites[otherSpriteId].data[1]);
+ gSprites[otherSpriteId].data[3] = trigIndex + gSprites[otherSpriteId].data[2];
+ if (--timer != 0)
+ {
+ gSprites[otherSpriteId].data[4] = timer;
+ }
+ else
+ {
+ sprite->callback = sub_8107408;
+ DestroySprite(&gSprites[otherSpriteId]);
+ }
+}
+
+void sub_8107408(struct Sprite *sprite)
+{
+ sprite->animPaused = FALSE;
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ StoreSpriteCallbackInData6(sprite, sub_8107430);
+}
+
+void sub_8107430(struct Sprite *sprite)
+{
+ sprite->data[0] = 10;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+}
+
+void sub_810744C(struct Sprite *sprite)
+{
+ s16 unkArg;
+
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ unkArg = -gBattleAnimArgs[2];
+ else
+ unkArg = gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + unkArg;
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = sub_81074E4;
+ sprite->affineAnimPaused = TRUE;
+ sprite->callback(sprite);
+}
+
+void sub_81074E4(struct Sprite *sprite)
+{
+ if ((u16)gBattleAnimArgs[ARG_RET_ID] == 0xFFFF)
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->affineAnimPaused = FALSE;
+ }
+ if (AnimTranslateLinear(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8107528(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_RAINBOW_RINGS) * 16 + 256;
+ gTasks[taskId].func = sub_810756C;
+}
+
+#ifdef NONMATCHING
+void sub_810756C(u8 taskId)
+{
+ int i;
+ u16 palIndex;
+ u16 *palPtr1;
+ u16 *palPtr2;
+ u16 rgbBuffer;
+
+ if (++gTasks[taskId].data[10] == 3)
+ {
+ gTasks[taskId].data[10] = 0;
+ palIndex = gTasks[taskId].data[2] + 1;
+ palPtr1 = &gPlttBufferFaded[palIndex];
+ rgbBuffer = *palPtr1;
+ palPtr2 = &palPtr1[1];
+ for (i = 0; i < 7; i++)
+ palPtr1[i] = palPtr2[i];
+ gPlttBufferFaded[palIndex + 7] = rgbBuffer;
+ }
+ if (++gTasks[taskId].data[11] == gTasks[taskId].data[0])
+ DestroyAnimVisualTask(taskId);
+}
+#else
+NAKED
+void sub_810756C(u8 taskId)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ ldr r1, =gTasks\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 3\n\
+ adds r2, r0, r1\n\
+ ldrh r0, [r2, 0x1C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x1C]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ mov r12, r1\n\
+ cmp r0, 0x3\n\
+ bne _081075BE\n\
+ movs r0, 0\n\
+ strh r0, [r2, 0x1C]\n\
+ ldrh r0, [r2, 0xC]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldr r1, =gPlttBufferFaded\n\
+ lsls r0, r5, 1\n\
+ adds r0, r1\n\
+ ldrh r6, [r0]\n\
+ adds r7, r1, 0\n\
+ adds r3, r0, 0x2\n\
+ movs r1, 0x6\n\
+ adds r2, r0, 0\n\
+_081075A8:\n\
+ ldrh r0, [r3]\n\
+ strh r0, [r2]\n\
+ adds r3, 0x2\n\
+ adds r2, 0x2\n\
+ subs r1, 0x1\n\
+ cmp r1, 0\n\
+ bge _081075A8\n\
+ adds r0, r5, 0x7\n\
+ lsls r0, 1\n\
+ adds r0, r7\n\
+ strh r6, [r0]\n\
+_081075BE:\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 3\n\
+ add r0, r12\n\
+ ldrh r1, [r0, 0x1E]\n\
+ adds r1, 0x1\n\
+ strh r1, [r0, 0x1E]\n\
+ lsls r1, 16\n\
+ asrs r1, 16\n\
+ movs r2, 0x8\n\
+ ldrsh r0, [r0, r2]\n\
+ cmp r1, r0\n\
+ bne _081075DE\n\
+ adds r0, r4, 0\n\
+ bl DestroyAnimVisualTask\n\
+_081075DE:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n");
+}
+#endif
+
+void sub_81075EC(struct Sprite *sprite)
+{
+ u16 retArg;
+
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = 30;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5] = 0xD200 / sprite->data[0];
+ sprite->data[7] = gBattleAnimArgs[3];
+ retArg = gBattleAnimArgs[ARG_RET_ID];
+ if (gBattleAnimArgs[ARG_RET_ID] > 127)
+ {
+ sprite->data[6] = (retArg - 127) * 256;
+ sprite->data[7] = -sprite->data[7];
+ }
+ else
+ {
+ sprite->data[6] = retArg * 256;
+ }
+ sprite->callback = sub_8107674;
+ sprite->callback(sprite);
+}
+
+void sub_8107674(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ DestroyAnimSprite(sprite);
+ sprite->pos2.y += Sin(sprite->data[6] >> 8, sprite->data[7]);
+ if ((sprite->data[6] + sprite->data[5]) >> 8 > 127)
+ {
+ sprite->data[6] = 0;
+ sprite->data[7] = -sprite->data[7];
+ }
+ else
+ {
+ sprite->data[6] += sprite->data[5];
+ }
+}
+
+void sub_81076C8(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gBattleAnimArgs[ARG_RET_ID] = 0;
+ gTasks[taskId].func = sub_81076F4;
+}
+
+void sub_81076F4(u8 taskId)
+{
+ gBattleAnimArgs[ARG_RET_ID] = (gBattleAnimArgs[ARG_RET_ID] + 3) & 0xFF;
+ if (--gTasks[taskId].data[0] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8107730(struct Sprite *sprite)
+{
+ u8 priority;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->pos2.y = -10;
+ priority = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
+ if (!IsContest())
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos2.x = 10;
+ sprite->subpriority = priority + 2;
+ }
+ else
+ {
+ sprite->pos2.x = -10;
+ sprite->subpriority = priority - 2;
+ }
+ }
+ else
+ {
+ sprite->pos2.x = -10;
+ sprite->subpriority = priority + 2;
+ }
+ sprite->callback = sub_81077A4;
+}
+
+void sub_81077A4(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81077C0(struct Sprite *sprite)
+{
+ bool8 animType;
+ u8 coordType;
+ if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
+ {
+ gBattleAnimArgs[0] *= -1;
+ if (GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_PLAYER_LEFT || GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_OPPONENT_LEFT)
+ gBattleAnimArgs[0] *= -1;
+ }
+ if ((gBattleAnimArgs[5] & 0xFF00) == 0)
+ animType = TRUE;
+ else
+ animType = FALSE;
+ if ((u8)gBattleAnimArgs[5] == 0)
+ coordType = 3;
+ else
+ coordType = 1;
+ InitSpritePosToAnimAttacker(sprite, animType);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_8107894(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_81078D0(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[3])
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ else
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[7] = gBattleAnimArgs[2];
+ sprite->callback = sub_810790C;
+}
+
+void sub_810790C(struct Sprite *sprite)
+{
+ sprite->data[0] = (sprite->data[0] + 11) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[0], 4);
+ sprite->data[1] += 48;
+ sprite->pos2.y = -(sprite->data[1] >> 8);
+ if (--sprite->data[7] == -1)
+ DestroyAnimSprite(sprite);
+}
+
+#ifdef NONMATCHING
+void AnimTask_CreateSurfWave(u8 taskId)
+{
+ struct UnknownAnimStruct2 unk;
+ u8 taskId2;
+
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
+ sub_80A6B30(&unk);
+ if (!IsContest())
+ {
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ sub_80A6D48(unk.bgId, gUnknown_08D95E00);
+ else
+ sub_80A6D48(unk.bgId, gUnknown_08D960D0);
+ }
+ else
+ {
+ sub_80A6D60(&unk, gUnknown_08D963A4, 1);
+ }
+ sub_80A6CC0(unk.bgId, gBattleAnimBackgroundImage_Surf, unk.tilesOffset);
+ if (gBattleAnimArgs[0] == 0)
+ LoadCompressedPalette(gBattleAnimBackgroundPalette_Surf, unk.unk8 * 16, 32);
+ else
+ LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, unk.unk8 * 16, 32);
+ taskId2 = CreateTask(sub_8107D58, gTasks[taskId].priority + 1);
+ gTasks[taskId].data[15] = taskId2;
+ gTasks[taskId2].data[0] = 0;
+ gTasks[taskId2].data[1] = 0x1000;
+ gTasks[taskId2].data[2] = 0x1000;
+ if (IsContest())
+ {
+ gBattle_BG1_X = -80;
+ gBattle_BG1_Y = -48;
+ gTasks[taskId].data[0] = 2;
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId2].data[3] = 0;
+ }
+ else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ {
+ gBattle_BG1_X = -224;
+ gBattle_BG1_Y = 256;
+ gTasks[taskId].data[0] = 2;
+ gTasks[taskId].data[1] = -1;
+ gTasks[taskId2].data[3] = 1;
+ }
+ else
+ {
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = -48;
+ gTasks[taskId].data[0] = -2;
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId2].data[3] = 0;
+ }
+ SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
+ SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
+ if (gTasks[taskId2].data[3] == 0)
+ {
+ gTasks[taskId2].data[4] = 48;
+ gTasks[taskId2].data[5] = 112;
+ }
+ else
+ {
+ gTasks[taskId2].data[4] = 0;
+ gTasks[taskId2].data[5] = 0;
+ }
+ gTasks[taskId].data[6] = 1;
+ gTasks[taskId].func = sub_8107B84;
+}
+#else
+NAKED
+void AnimTask_CreateSurfWave(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, 0x10\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldr r1, =0x00003f42\n\
+ movs r0, 0x50\n\
+ bl SetGpuReg\n\
+ movs r1, 0x80\n\
+ lsls r1, 5\n\
+ movs r0, 0x52\n\
+ bl SetGpuReg\n\
+ movs r0, 0x1\n\
+ movs r1, 0x4\n\
+ movs r2, 0x1\n\
+ bl SetAnimBgAttribute\n\
+ movs r0, 0x1\n\
+ movs r1, 0\n\
+ movs r2, 0x1\n\
+ bl SetAnimBgAttribute\n\
+ mov r0, sp\n\
+ bl sub_80A6B30\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _081079E0\n\
+ movs r0, 0x1\n\
+ movs r1, 0x3\n\
+ movs r2, 0x1\n\
+ bl SetAnimBgAttribute\n\
+ ldr r0, =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _081079D0\n\
+ mov r0, sp\n\
+ ldrb r0, [r0, 0x9]\n\
+ ldr r1, =gUnknown_08D95E00\n\
+ bl sub_80A6D48\n\
+ b _081079EA\n\
+ .pool\n\
+_081079D0:\n\
+ mov r0, sp\n\
+ ldrb r0, [r0, 0x9]\n\
+ ldr r1, =gUnknown_08D960D0\n\
+ bl sub_80A6D48\n\
+ b _081079EA\n\
+ .pool\n\
+_081079E0:\n\
+ ldr r1, =gUnknown_08D963A4\n\
+ mov r0, sp\n\
+ movs r2, 0x1\n\
+ bl sub_80A6D60\n\
+_081079EA:\n\
+ mov r0, sp\n\
+ ldrb r0, [r0, 0x9]\n\
+ ldr r1, =gBattleAnimBackgroundImage_Surf\n\
+ mov r2, sp\n\
+ ldrh r2, [r2, 0xA]\n\
+ bl sub_80A6CC0\n\
+ ldr r0, =gBattleAnimArgs\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ cmp r0, 0\n\
+ bne _08107A24\n\
+ ldr r0, =gBattleAnimBackgroundPalette_Surf\n\
+ mov r1, sp\n\
+ ldrb r1, [r1, 0x8]\n\
+ lsls r1, 4\n\
+ movs r2, 0x20\n\
+ bl LoadCompressedPalette\n\
+ b _08107A32\n\
+ .pool\n\
+_08107A24:\n\
+ ldr r0, =gBattleAnimBackgroundImageMuddyWater_Pal\n\
+ mov r1, sp\n\
+ ldrb r1, [r1, 0x8]\n\
+ lsls r1, 4\n\
+ movs r2, 0x20\n\
+ bl LoadCompressedPalette\n\
+_08107A32:\n\
+ ldr r0, =sub_8107D58\n\
+ ldr r4, =gTasks\n\
+ mov r2, r10\n\
+ lsls r5, r2, 2\n\
+ adds r1, r5, r2\n\
+ lsls r1, 3\n\
+ adds r6, r1, r4\n\
+ ldrb r1, [r6, 0x7]\n\
+ adds r1, 0x1\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ bl CreateTask\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ movs r0, 0\n\
+ mov r9, r0\n\
+ mov r1, r8\n\
+ strh r1, [r6, 0x26]\n\
+ mov r2, r8\n\
+ lsls r0, r2, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r7, r0, r4\n\
+ mov r0, r9\n\
+ strh r0, [r7, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ strh r0, [r7, 0xA]\n\
+ strh r0, [r7, 0xC]\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0\n\
+ beq _08107AB4\n\
+ ldr r1, =0x0000ffb0\n\
+ adds r0, r1, 0\n\
+ ldr r2, =gBattle_BG1_X\n\
+ strh r0, [r2]\n\
+ adds r1, 0x20\n\
+ adds r0, r1, 0\n\
+ ldr r2, =gBattle_BG1_Y\n\
+ strh r0, [r2]\n\
+ movs r0, 0x2\n\
+ strh r0, [r6, 0x8]\n\
+ movs r0, 0x1\n\
+ strh r0, [r6, 0xA]\n\
+ mov r0, r9\n\
+ strh r0, [r7, 0xE]\n\
+ b _08107B0E\n\
+ .pool\n\
+_08107AB4:\n\
+ ldr r0, =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSide\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0x1\n\
+ bne _08107AF8\n\
+ ldr r2, =0x0000ff20\n\
+ adds r0, r2, 0\n\
+ ldr r2, =gBattle_BG1_X\n\
+ strh r0, [r2]\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ adds r0, r2, 0\n\
+ ldr r2, =gBattle_BG1_Y\n\
+ strh r0, [r2]\n\
+ movs r0, 0x2\n\
+ strh r0, [r6, 0x8]\n\
+ ldr r0, =0x0000ffff\n\
+ strh r0, [r6, 0xA]\n\
+ strh r1, [r7, 0xE]\n\
+ b _08107B0E\n\
+ .pool\n\
+_08107AF8:\n\
+ ldr r0, =gBattle_BG1_X\n\
+ strh r4, [r0]\n\
+ ldr r1, =0x0000ffd0\n\
+ adds r0, r1, 0\n\
+ ldr r2, =gBattle_BG1_Y\n\
+ strh r0, [r2]\n\
+ ldr r0, =0x0000fffe\n\
+ strh r0, [r6, 0x8]\n\
+ movs r0, 0x1\n\
+ strh r0, [r6, 0xA]\n\
+ strh r4, [r7, 0xE]\n\
+_08107B0E:\n\
+ ldr r0, =gBattle_BG1_X\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x14\n\
+ bl SetGpuReg\n\
+ ldr r2, =gBattle_BG1_Y\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x16\n\
+ bl SetGpuReg\n\
+ ldr r1, =gTasks\n\
+ mov r2, r8\n\
+ lsls r0, r2, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r1, r0, r1\n\
+ movs r2, 0xE\n\
+ ldrsh r0, [r1, r2]\n\
+ cmp r0, 0\n\
+ bne _08107B54\n\
+ movs r0, 0x30\n\
+ strh r0, [r1, 0x10]\n\
+ movs r0, 0x70\n\
+ b _08107B58\n\
+ .pool\n\
+_08107B54:\n\
+ movs r0, 0\n\
+ strh r0, [r1, 0x10]\n\
+_08107B58:\n\
+ strh r0, [r1, 0x12]\n\
+ ldr r1, =gTasks\n\
+ mov r2, r10\n\
+ adds r0, r5, r2\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x14]\n\
+ ldr r1, =sub_8107B84\n\
+ str r1, [r0]\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\
+ .pool\n");
+}
+#endif
+
+#ifdef NONMATCHING
+void sub_8107B84(u8 taskId)
+{
+ struct UnknownAnimStruct2 unk;
+ u8 i;
+ u16 rgbBuffer;
+ u16 *BGptrX = &gBattle_BG1_X;
+ u16 *BGptrY = &gBattle_BG1_Y;
+ s16 unkUse;
+ u32 palOffset;
+ u16 palNum;
+
+ *BGptrX += gTasks[taskId].data[0];
+ *BGptrY += gTasks[taskId].data[1];
+ sub_80A6B30(&unk);
+ gTasks[taskId].data[2] += gTasks[taskId].data[1];
+ if (++gTasks[taskId].data[5] == 4)
+ {
+ rgbBuffer = gPlttBufferFaded[unk.unk8 * 16 + 7];
+ for (i = 6; i != 0; i--)
+ {
+ palNum = unk.unk8 * 16;
+ palOffset = 1 + i;
+ gPlttBufferFaded[palNum + palOffset] = gPlttBufferFaded[palNum + palOffset - 1];
+ }
+ gPlttBufferFaded[unk.unk8 * 16 + 1] = rgbBuffer;
+ gTasks[taskId].data[5] = 0;
+ }
+ if (++gTasks[taskId].data[6] > 1)
+ {
+ gTasks[taskId].data[6] = 0;
+ unkUse = ++gTasks[taskId].data[3];
+ if (unkUse <= 13)
+ {
+ gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ gTasks[taskId].data[4]++;
+ }
+ if (gTasks[taskId].data[3] > 54)
+ {
+ unkUse = --gTasks[taskId].data[4];
+ gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ }
+ }
+ if (!(gTasks[gTasks[taskId].data[15]].data[1] & 0x1F))
+ {
+ gTasks[taskId].data[0] = gTasks[gTasks[taskId].data[15]].data[1] & 0x1F;
+ gTasks[taskId].func = sub_8107CC4;
+ }
+}
+#else
+NAKED
+void sub_8107B84(u8 taskId)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ sub sp, 0x10\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, =gBattle_BG1_X\n\
+ ldr r2, =gBattle_BG1_Y\n\
+ ldr r0, =gTasks\n\
+ lsls r4, r5, 2\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r4, r0\n\
+ ldrh r0, [r4, 0x8]\n\
+ ldrh r3, [r1]\n\
+ adds r0, r3\n\
+ strh r0, [r1]\n\
+ ldrh r0, [r4, 0xA]\n\
+ ldrh r1, [r2]\n\
+ adds r0, r1\n\
+ strh r0, [r2]\n\
+ mov r0, sp\n\
+ bl sub_80A6B30\n\
+ ldrh r0, [r4, 0xA]\n\
+ ldrh r3, [r4, 0xC]\n\
+ adds r0, r3\n\
+ strh r0, [r4, 0xC]\n\
+ ldrh r0, [r4, 0x12]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x4\n\
+ bne _08107C18\n\
+ ldr r1, =gPlttBufferFaded\n\
+ mov r0, sp\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 4\n\
+ adds r0, 0x7\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r6, [r0]\n\
+ movs r2, 0x6\n\
+ adds r7, r1, 0\n\
+ adds r3, r7, 0\n\
+ mov r4, sp\n\
+_08107BDE:\n\
+ ldrb r0, [r4, 0x8]\n\
+ lsls r0, 4\n\
+ adds r1, r2, 0x1\n\
+ adds r0, r1\n\
+ lsls r1, r0, 1\n\
+ adds r1, r3\n\
+ subs r0, 0x1\n\
+ lsls r0, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+ subs r0, r2, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r2, 0\n\
+ bne _08107BDE\n\
+ mov r0, sp\n\
+ ldrb r0, [r0, 0x8]\n\
+ lsls r0, 4\n\
+ adds r0, 0x1\n\
+ lsls r0, 1\n\
+ adds r0, r7\n\
+ strh r6, [r0]\n\
+ ldr r1, =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ strh r2, [r0, 0x12]\n\
+_08107C18:\n\
+ ldr r1, =gTasks\n\
+ lsls r2, r5, 2\n\
+ adds r0, r2, r5\n\
+ lsls r0, 3\n\
+ adds r3, r0, r1\n\
+ ldrh r0, [r3, 0x14]\n\
+ adds r0, 0x1\n\
+ strh r0, [r3, 0x14]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ adds r4, r1, 0\n\
+ adds r6, r2, 0\n\
+ cmp r0, 0x1\n\
+ ble _08107C86\n\
+ movs r0, 0\n\
+ strh r0, [r3, 0x14]\n\
+ ldrh r0, [r3, 0xE]\n\
+ adds r2, r0, 0x1\n\
+ strh r2, [r3, 0xE]\n\
+ lsls r0, r2, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0xD\n\
+ bgt _08107C62\n\
+ movs r1, 0x26\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r4\n\
+ movs r0, 0x10\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ orrs r2, r0\n\
+ strh r2, [r1, 0xA]\n\
+ ldrh r0, [r3, 0x10]\n\
+ adds r0, 0x1\n\
+ strh r0, [r3, 0x10]\n\
+_08107C62:\n\
+ movs r1, 0xE\n\
+ ldrsh r0, [r3, r1]\n\
+ cmp r0, 0x36\n\
+ ble _08107C86\n\
+ ldrh r2, [r3, 0x10]\n\
+ subs r2, 0x1\n\
+ strh r2, [r3, 0x10]\n\
+ movs r1, 0x26\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r4\n\
+ movs r0, 0x10\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ orrs r2, r0\n\
+ strh r2, [r1, 0xA]\n\
+_08107C86:\n\
+ adds r0, r6, r5\n\
+ lsls r0, 3\n\
+ adds r2, r0, r4\n\
+ movs r3, 0x26\n\
+ ldrsh r1, [r2, r3]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r4\n\
+ ldrh r0, [r0, 0xA]\n\
+ movs r3, 0x1F\n\
+ ands r3, r0\n\
+ cmp r3, 0\n\
+ bne _08107CA8\n\
+ strh r3, [r2, 0x8]\n\
+ ldr r0, =sub_8107CC4\n\
+ str r0, [r2]\n\
+_08107CA8:\n\
+ add sp, 0x10\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n");
+}
+#endif
+
+void sub_8107CC4(u8 taskId)
+{
+ u16 *BGptrX = &gBattle_BG1_X;
+ u16 *BGptrY = &gBattle_BG1_Y;
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_80A6C68(1);
+ sub_80A6C68(2);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+ *BGptrX = 0;
+ *BGptrY = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0));
+ gTasks[gTasks[taskId].data[15]].data[15] = -1;
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+#ifdef NONMATCHING
+void sub_8107D58(u8 taskId)
+{
+ s16 i;
+ struct ScanlineEffectParams params;
+ struct Task *task = &gTasks[taskId];
+ // u16 *scanlineBuffer;
+
+ switch (task->data[0])
+ {
+ case 0:
+ for (i = 0; i < task->data[4]; i++)
+ {
+ /* scanlineBuffer = &gScanlineEffectRegBuffers[0][i];
+ *(u16 *)(&gScanlineEffect) = task->data[2];
+ *scanlineBuffer = task->data[2] & -1; */
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[2] & 0xFFFF));
+ }
+ for (i = task->data[4]; i < task->data[5]; i++)
+ {
+ gScanlineEffectRegBuffers[1][i] = task->data[1];
+ gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[1] & 0xFFFF));
+ }
+ for (i = task->data[5]; i < 160; i++)
+ {
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[2] & 0xFFFF));
+ }
+ if (task->data[4] == 0)
+ {
+ gScanlineEffectRegBuffers[1][i] = task->data[1];
+ gScanlineEffectRegBuffers[0][i] = task->data[1];
+ }
+ else
+ {
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ gScanlineEffectRegBuffers[0][i] = task->data[2];
+ }
+ params.dmaDest = (vu16 *)REG_ADDR_BLDALPHA;
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
+ task->data[0]++;
+ break;
+ case 1:
+ if (task->data[3] == 0)
+ {
+ if (--task->data[4] <= 0)
+ {
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ }
+ else if (++task->data[5] > 111)
+ {
+ task->data[0]++;
+ }
+ for (i = 0; i < task->data[4]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ }
+ for (i = task->data[4]; i < task->data[5]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
+ }
+ for (i = task->data[5]; i < 160; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ }
+ break;
+ case 2:
+ for (i = 0; i < task->data[4]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ }
+ for (i = task->data[4]; i < task->data[5]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
+ }
+ for (i = task->data[5]; i < 160; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ }
+ if (task->data[15] == -1)
+ {
+ ScanlineEffect_Stop();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+#else
+NAKED
+void sub_8107D58(u8 taskId)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ sub sp, 0xC\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ ldr r1, =gTasks\n\
+ adds r4, r0, r1\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0x1\n\
+ bne _08107D74\n\
+ b _08107EAC\n\
+_08107D74:\n\
+ cmp r0, 0x1\n\
+ bgt _08107D84\n\
+ cmp r0, 0\n\
+ beq _08107D8C\n\
+ b _08108022\n\
+ .pool\n\
+_08107D84:\n\
+ cmp r0, 0x2\n\
+ bne _08107D8A\n\
+ b _08107F78\n\
+_08107D8A:\n\
+ b _08108022\n\
+_08107D8C:\n\
+ movs r3, 0\n\
+ movs r2, 0x10\n\
+ ldrsh r0, [r4, r2]\n\
+ ldr r1, =gScanlineEffectRegBuffers\n\
+ mov r12, r1\n\
+ cmp r3, r0\n\
+ bge _08107DCA\n\
+ mov r7, r12\n\
+ movs r5, 0xF0\n\
+ lsls r5, 3\n\
+ add r5, r12\n\
+ ldr r6, =0x0000ffff\n\
+_08107DA4:\n\
+ lsls r2, r3, 16\n\
+ asrs r2, 16\n\
+ lsls r1, r2, 1\n\
+ adds r3, r1, r7\n\
+ adds r1, r5\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r1]\n\
+ ldrh r1, [r4, 0xC]\n\
+ adds r0, r6, 0\n\
+ ands r0, r1\n\
+ strh r0, [r3]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ asrs r2, 16\n\
+ movs r1, 0x10\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r2, r0\n\
+ blt _08107DA4\n\
+_08107DCA:\n\
+ ldrh r3, [r4, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ bge _08107E04\n\
+ ldr r5, =gScanlineEffectRegBuffers\n\
+ movs r0, 0xF0\n\
+ lsls r0, 3\n\
+ adds r6, r5, r0\n\
+ ldr r7, =0x0000ffff\n\
+_08107DE2:\n\
+ asrs r2, 16\n\
+ lsls r1, r2, 1\n\
+ adds r3, r1, r5\n\
+ adds r1, r6\n\
+ ldrh r0, [r4, 0xA]\n\
+ strh r0, [r1]\n\
+ ldrh r1, [r4, 0xA]\n\
+ adds r0, r7, 0\n\
+ ands r0, r1\n\
+ strh r0, [r3]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ blt _08107DE2\n\
+_08107E04:\n\
+ ldrh r3, [r4, 0x12]\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08107E3A\n\
+ ldr r5, =gScanlineEffectRegBuffers\n\
+ movs r0, 0xF0\n\
+ lsls r0, 3\n\
+ adds r6, r5, r0\n\
+ ldr r7, =0x0000ffff\n\
+_08107E18:\n\
+ asrs r2, 16\n\
+ lsls r1, r2, 1\n\
+ adds r3, r1, r5\n\
+ adds r1, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r1]\n\
+ ldrh r1, [r4, 0xC]\n\
+ adds r0, r7, 0\n\
+ ands r0, r1\n\
+ strh r0, [r3]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, 0x9F\n\
+ ble _08107E18\n\
+_08107E3A:\n\
+ movs r1, 0x10\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0\n\
+ bne _08107E64\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 15\n\
+ mov r3, r12\n\
+ adds r2, r0, r3\n\
+ movs r1, 0xF0\n\
+ lsls r1, 3\n\
+ add r1, r12\n\
+ adds r0, r1\n\
+ ldrh r1, [r4, 0xA]\n\
+ strh r1, [r0]\n\
+ ldrh r0, [r4, 0xA]\n\
+ b _08107E7A\n\
+ .pool\n\
+_08107E64:\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 15\n\
+ mov r1, r12\n\
+ adds r2, r0, r1\n\
+ movs r1, 0xF0\n\
+ lsls r1, 3\n\
+ add r1, r12\n\
+ adds r0, r1\n\
+ ldrh r1, [r4, 0xC]\n\
+ strh r1, [r0]\n\
+ ldrh r0, [r4, 0xC]\n\
+_08107E7A:\n\
+ strh r0, [r2]\n\
+ ldr r0, =0x04000052\n\
+ str r0, [sp]\n\
+ ldr r0, =0xa2600001\n\
+ str r0, [sp, 0x4]\n\
+ mov r1, sp\n\
+ movs r2, 0\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x8]\n\
+ mov r0, sp\n\
+ strb r2, [r0, 0x9]\n\
+ ldr r0, [sp]\n\
+ ldr r1, [sp, 0x4]\n\
+ ldr r2, [sp, 0x8]\n\
+ bl ScanlineEffect_SetParams\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ b _08108022\n\
+ .pool\n\
+_08107EAC:\n\
+ movs r2, 0xE\n\
+ ldrsh r1, [r4, r2]\n\
+ cmp r1, 0\n\
+ bne _08107EC4\n\
+ ldrh r0, [r4, 0x10]\n\
+ subs r0, 0x1\n\
+ strh r0, [r4, 0x10]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bgt _08107ED8\n\
+ strh r1, [r4, 0x10]\n\
+ b _08107ED2\n\
+_08107EC4:\n\
+ ldrh r0, [r4, 0x12]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x6F\n\
+ ble _08107ED8\n\
+_08107ED2:\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+_08107ED8:\n\
+ movs r3, 0\n\
+ movs r1, 0x10\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r3, r0\n\
+ bge _08107F0C\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_08107EE6:\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r3, r1, 1\n\
+ ldrb r2, [r5, 0x14]\n\
+ lsls r0, r2, 4\n\
+ subs r0, r2\n\
+ lsls r0, 7\n\
+ adds r3, r0\n\
+ adds r3, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r3]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ movs r2, 0x10\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r1, r0\n\
+ blt _08107EE6\n\
+_08107F0C:\n\
+ ldrh r3, [r4, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ bge _08107F40\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_08107F1E:\n\
+ asrs r3, r2, 16\n\
+ lsls r2, r3, 1\n\
+ ldrb r1, [r5, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r2, r0\n\
+ adds r2, r6\n\
+ ldrh r0, [r4, 0xA]\n\
+ strh r0, [r2]\n\
+ adds r3, 0x1\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ blt _08107F1E\n\
+_08107F40:\n\
+ ldrh r3, [r4, 0x12]\n\
+ lsls r1, r3, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08108022\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_08107F4E:\n\
+ asrs r3, r1, 16\n\
+ lsls r2, r3, 1\n\
+ ldrb r1, [r5, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r2, r0\n\
+ adds r2, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r2]\n\
+ adds r3, 0x1\n\
+ lsls r1, r3, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x9F\n\
+ ble _08107F4E\n\
+ b _08108022\n\
+ .pool\n\
+_08107F78:\n\
+ movs r3, 0\n\
+ movs r1, 0x10\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r3, r0\n\
+ bge _08107FAC\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_08107F86:\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r3, r1, 1\n\
+ ldrb r2, [r5, 0x14]\n\
+ lsls r0, r2, 4\n\
+ subs r0, r2\n\
+ lsls r0, 7\n\
+ adds r3, r0\n\
+ adds r3, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r3]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ movs r2, 0x10\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r1, r0\n\
+ blt _08107F86\n\
+_08107FAC:\n\
+ ldrh r3, [r4, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ bge _08107FE0\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_08107FBE:\n\
+ asrs r3, r2, 16\n\
+ lsls r2, r3, 1\n\
+ ldrb r1, [r5, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r2, r0\n\
+ adds r2, r6\n\
+ ldrh r0, [r4, 0xA]\n\
+ strh r0, [r2]\n\
+ adds r3, 0x1\n\
+ lsls r2, r3, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r1, r0\n\
+ blt _08107FBE\n\
+_08107FE0:\n\
+ ldrh r3, [r4, 0x12]\n\
+ lsls r1, r3, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _0810800C\n\
+ ldr r6, =gScanlineEffectRegBuffers\n\
+ ldr r5, =gScanlineEffect\n\
+_08107FEE:\n\
+ asrs r3, r1, 16\n\
+ lsls r2, r3, 1\n\
+ ldrb r1, [r5, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r2, r0\n\
+ adds r2, r6\n\
+ ldrh r0, [r4, 0xC]\n\
+ strh r0, [r2]\n\
+ adds r3, 0x1\n\
+ lsls r1, r3, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x9F\n\
+ ble _08107FEE\n\
+_0810800C:\n\
+ movs r0, 0x26\n\
+ ldrsh r1, [r4, r0]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ cmp r1, r0\n\
+ bne _08108022\n\
+ bl ScanlineEffect_Stop\n\
+ adds r0, r7, 0\n\
+ bl DestroyTask\n\
+_08108022:\n\
+ add sp, 0xC\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n");
+}
+#endif
+
+void sub_8108034(struct Sprite *sprite)
+{
+ s16 randData;
+ s16 randData2;
+
+ sprite->oam.tileNum += 8;
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ randData = (Random2() & 0xFF) | 256;
+ randData2 = (Random2() & 0x1FF);
+ if (randData2 > 255)
+ randData2 = 256 - randData2;
+ sprite->data[1] = randData;
+ sprite->data[2] = randData2;
+ sprite->callback = sub_8108098;
+}
+
+void sub_8108098(struct Sprite *sprite)
+{
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ if (sprite->data[1] & 1)
+ sprite->pos2.x = -(sprite->data[3] >> 8);
+ else
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ if (++sprite->data[0] == 21)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81080E4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ task->data[5] = gSprites[task->data[15]].pos1.y;
+ task->data[1] = sub_8108384();
+ PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
+ task->func = sub_8108140;
+}
+
+void sub_8108140(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_80A805C(task, task->data[15], 0x100, 0x100, 224, 0x200, 32);
+ task->data[0]++;
+ case 1:
+ if (++task->data[3] > 1)
+ {
+ task->data[3] = 0;
+ if (++task->data[4] & 1)
+ {
+ gSprites[task->data[15]].pos2.x = 3;
+ gSprites[task->data[15]].pos1.y++;
+ }
+ else
+ {
+ gSprites[task->data[15]].pos2.x = -3;
+ }
+ }
+ if (sub_80A80C8(task) == 0)
+ {
+ SetBattlerSpriteYOffsetFromYScale(task->data[15]);
+ gSprites[task->data[15]].pos2.x = 0;
+ task->data[3] = 0;
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (++task->data[3] > 4)
+ {
+ sub_80A805C(task, task->data[15], 224, 0x200, 384, 224, 8);
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (sub_80A80C8(task) == 0)
+ {
+ task->data[3] = 0;
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 4:
+ sub_8108408(task, taskId);
+ task->data[0]++;
+ case 5:
+ if (++task->data[3] > 1)
+ {
+ task->data[3] = 0;
+ if (++task->data[4] & 1)
+ gSprites[task->data[15]].pos2.y += 2;
+ else
+ gSprites[task->data[15]].pos2.y -= 2;
+ if (task->data[4] == 10)
+ {
+ sub_80A805C(task, task->data[15], 384, 224, 0x100, 0x100, 8);
+ task->data[3] = 0;
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ }
+ break;
+ case 6:
+ gSprites[task->data[15]].pos1.y--;
+ if (sub_80A80C8(task) == 0)
+ {
+ ResetSpriteRotScale(task->data[15]);
+ gSprites[task->data[15]].pos1.y = task->data[5];
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 7:
+ if (task->data[2] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+u8 sub_8108384(void)
+{
+ u8 i;
+ u16 hp;
+ u16 maxhp;
+ u16 partyIndex;
+ struct Pokemon *slot;
+
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ partyIndex = gBattlerPartyIndexes[gBattleAnimAttacker];
+ slot = &gPlayerParty[partyIndex];
+ maxhp = GetMonData(slot, MON_DATA_MAX_HP);
+ hp = GetMonData(slot, MON_DATA_HP);
+ maxhp /= 4;
+ }
+ else
+ {
+ partyIndex = gBattlerPartyIndexes[gBattleAnimAttacker];
+ slot = &gEnemyParty[partyIndex];
+ maxhp = GetMonData(slot, MON_DATA_MAX_HP);
+ hp = GetMonData(slot, MON_DATA_HP);
+ maxhp /= 4;
+ }
+ for (i = 0; i < 3; i++)
+ {
+ if (hp < maxhp * (i + 1))
+ return i;
+ }
+ return 3;
+}
+
+void sub_8108408(struct Task *task, u8 taskId)
+{
+ s16 i;
+ s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ s16 trigIndex = 172;
+ u8 subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
+ s16 increment = 4 - task->data[1];
+ u8 spriteId;
+
+ if (increment <= 0)
+ increment = 1;
+ for (i = 0; i < 20; i += increment)
+ {
+ spriteId = CreateSprite(&gUnknown_08595268, attackerCoordX, attackerCoordY, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[1] = i;
+ gSprites[spriteId].data[2] = attackerCoordX * 16;
+ gSprites[spriteId].data[3] = attackerCoordY * 16;
+ gSprites[spriteId].data[4] = Cos(trigIndex, 64);
+ gSprites[spriteId].data[5] = Sin(trigIndex, 64);
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 2;
+ if (task->data[2] & 1)
+ sub_810851C(&gSprites[spriteId]);
+ task->data[2]++;
+ }
+ trigIndex = (trigIndex + increment * 2);
+ trigIndex &= 0xFF;
+ }
+}
+
+void sub_810851C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[4] += (sprite->data[1] % 6) * 3;
+ sprite->data[5] += (sprite->data[1] % 3) * 3;
+ sprite->data[0]++;
+ case 1:
+ sprite->data[2] += sprite->data[4];
+ sprite->data[3] += sprite->data[5];
+ sprite->pos1.x = sprite->data[2] >> 4;
+ sprite->pos1.y = sprite->data[3] >> 4;
+ if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_81085C8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[1] = sub_8108384();
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ task->data[4] = 136;
+ task->data[6] = 40;
+ }
+ else
+ {
+ task->data[4] = 16;
+ task->data[6] = 80;
+ }
+ task->data[5] = 98;
+ task->data[7] = task->data[4] + 49;
+ task->data[12] = task->data[1] * 5 + 5;
+ task->func = sub_810862C;
+}
+
+void sub_810862C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ u8 taskId2;
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[2] > 2)
+ {
+ task->data[2] = 0;
+ sub_810871C(task, taskId);
+ }
+ if (task->data[10] != 0 && task->data[13] == 0)
+ {
+ gBattleAnimArgs[0] = 1;
+ gBattleAnimArgs[1] = 0;
+ gBattleAnimArgs[2] = 12;
+ taskId2 = CreateTask(sub_81152DC, 80);
+ if (taskId2 != 0xFF)
+ {
+ gTasks[taskId2].func(taskId2);
+ gAnimVisualTaskCount++;
+ }
+ gBattleAnimArgs[0] = 3;
+ taskId2 = CreateTask(sub_81152DC, 80);
+ if (taskId2 != 0xFF)
+ {
+ gTasks[taskId2].func(taskId2);
+ gAnimVisualTaskCount++;
+ }
+ task->data[13] = 1;
+ }
+ if (task->data[11] >= task->data[12])
+ task->data[0]++;
+ break;
+ case 1:
+ if (task->data[9] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_810871C(struct Task *task, u8 taskId)
+{
+ u16 yPosArg = ((gSineTable[task->data[8]] + 3) >> 4) + task->data[6];
+ u8 spriteId = CreateSprite(&gUnknown_08595268, task->data[7], 0, 0);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].callback = sub_81087C0;
+ gSprites[spriteId].data[5] = yPosArg;
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 9;
+ task->data[9]++;
+ }
+ task->data[11]++;
+ task->data[8] = (task->data[8] + 39) & 0xFF;
+ task->data[7] = ((task->data[7] * 0x41c64e6d + 0x3039) % task->data[5]) + task->data[4];
+}
+
+void sub_81087C0(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->pos1.y += 8;
+ if (sprite->pos1.y >= sprite->data[5])
+ {
+ gTasks[sprite->data[6]].data[10] = 1;
+ sprite->data[1] = CreateSprite(&gUnknown_08597388, sprite->pos1.x, sprite->pos1.y, 1);
+ if (sprite->data[1] != MAX_SPRITES)
+ {
+ StartSpriteAffineAnim(&gSprites[sprite->data[1]], 3);
+ gSprites[sprite->data[1]].data[6] = sprite->data[6];
+ gSprites[sprite->data[1]].data[7] = sprite->data[7];
+ gSprites[sprite->data[1]].callback = sub_810886C;
+ }
+ DestroySprite(sprite);
+ }
+ }
+}
+
+void sub_810886C(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] == 12)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+ }
+ }
+}
+
+void sub_81088E4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ task->data[7] = (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) ? 1 : -1;
+ if (IsContest())
+ task->data[7] *= -1;
+ task->data[5] = task->data[3] + task->data[7] * 8;
+ task->data[6] = task->data[4] - task->data[7] * 8;
+ task->data[9] = -32;
+ task->data[1] = 0;
+ task->data[0] = 0;
+ task->func = sub_8108978;
+}
+
+void sub_8108978(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_8108AC0(task);
+ if (task->data[10] != 0)
+ task->data[0]++;
+ break;
+ case 1:
+ sub_8108AC0(task);
+ if (++task->data[1] > 16)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ sub_8108AC0(task);
+ task->data[5] += task->data[7] * 6;
+ if (!(task->data[5] >= -16 && task->data[5] <= 256))
+ {
+ if (++task->data[12] > 2)
+ {
+ task->data[13] = 1;
+ task->data[0] = 6;
+ task->data[1] = 0;
+ }
+ else
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ }
+ break;
+ case 3:
+ sub_8108AC0(task);
+ task->data[6] -= task->data[7] * 2;
+ if (++task->data[1] > 7)
+ task->data[0]++;
+ break;
+ case 4:
+ sub_8108AC0(task);
+ task->data[5] -= task->data[7] * 6;
+ if (!(task->data[5] >= -16 && task->data[5] <= 256))
+ {
+ task->data[12]++;
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 5:
+ sub_8108AC0(task);
+ task->data[6] -= task->data[7] * 2;
+ if (++task->data[1] > 7)
+ task->data[0] = 2;
+ break;
+ case 6:
+ if (task->data[8] == 0)
+ task->data[0]++;
+ break;
+ default:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8108AC0(struct Task *task)
+{
+ u8 spriteId;
+
+ if (++task->data[2] > 1)
+ {
+ task->data[2] = 0;
+ spriteId = CreateSprite(&gUnknown_08595268, task->data[3], task->data[4], 10);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 16;
+ gSprites[spriteId].data[2] = task->data[5];
+ gSprites[spriteId].data[4] = task->data[6];
+ gSprites[spriteId].data[5] = task->data[9];
+ InitAnimArcTranslation(&gSprites[spriteId]);
+ gSprites[spriteId].callback = sub_8108B2C;
+ task->data[8]++;
+ }
+ }
+}
+
+void sub_8108B2C(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->data[0] = 6;
+ sprite->data[2] = (Random2() & 0x1F) - 16 + sprite->pos1.x;
+ sprite->data[4] = (Random2() & 0x1F) - 16 + sprite->pos1.y;
+ sprite->data[5] = ~(Random2() & 7);
+ InitAnimArcTranslation(sprite);
+ sprite->callback = sub_8108B94;
+ }
+}
+
+void sub_8108B94(struct Sprite *sprite)
+{
+ u16 i;
+
+ if (TranslateAnimArc(sprite))
+ {
+ for (i = 0; i < NUM_TASKS; i++)
+ {
+ if (gTasks[i].func == sub_8108978)
+ {
+ gTasks[i].data[10] = 1;
+ gTasks[i].data[8]--;
+ DestroySprite(sprite);
+ }
+ }
+ }
+}
+
+void sub_8108BE0(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = gBattleAnimArgs[5];
+ sprite->callback = sub_8108C08;
+}
+
+void sub_8108C08(struct Sprite *sprite)
+{
+ sprite->data[4] -= sprite->data[0];
+ sprite->pos2.y = sprite->data[4] / 10;
+ sprite->data[5] = (sprite->data[5] + sprite->data[1]) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[5], sprite->data[2]);
+ if (--sprite->data[3] == 0)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8108C54(struct Sprite *sprite)
+{
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 7;
+ sprite->pos2.y = sprite->data[4] >> 7;
+ if (--sprite->data[0] == 0)
+ {
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+void sub_8108C94(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[3] = gBattleAnimArgs[2];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->callback = sub_8108CDC;
+}
+
+void sub_8108CDC(struct Sprite *sprite)
+{
+ int xDiff = sprite->data[1] - sprite->pos1.x;
+ int yDiff = sprite->data[2] - sprite->pos1.y;
+
+ sprite->pos2.x = (sprite->data[0] * xDiff) / sprite->data[3];
+ sprite->pos2.y = (sprite->data[0] * yDiff) / sprite->data[3];
+ if (++sprite->data[5] == sprite->data[4])
+ {
+ sprite->data[5] = 0;
+ sub_8108D54(sprite, xDiff, yDiff);
+ }
+ if (sprite->data[3] == sprite->data[0])
+ DestroyAnimSprite(sprite);
+ sprite->data[0]++;
+}
+
+#ifdef NONMATCHING
+void sub_8108D54(struct Sprite *sprite, int xDiff, int yDiff)
+{
+ s16 something = sprite->data[0] / 2;
+ s16 combinedX = sprite->pos1.x + sprite->pos2.x;
+ s16 combinedY = sprite->pos1.y + sprite->pos2.y;
+ s16 randomSomethingY = yDiff + (Random2() % 10) - 5;
+ s16 randomSomethingX = -xDiff + (Random2() % 10) - 5;
+ s16 i;
+ u8 spriteId;
+
+ for (i = 0; i <= 0; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_08595310, combinedX, combinedY + something, 130);
+ gSprites[spriteId].data[0] = 20;
+ gSprites[spriteId].data[1] = randomSomethingY;
+ gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
+ if (randomSomethingX < 0)
+ gSprites[spriteId].data[2] = -randomSomethingX;
+ else
+ gSprites[spriteId].data[2] = randomSomethingX;
+ }
+ for (i = 0; i <= 0; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_08595310, combinedX, combinedY - something, 130);
+ gSprites[spriteId].data[0] = 20;
+ gSprites[spriteId].data[1] = randomSomethingY;
+ gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
+ if (randomSomethingX > 0)
+ gSprites[spriteId].data[2] = -randomSomethingX;
+ else
+ gSprites[spriteId].data[2] = randomSomethingX;
+ }
+}
+#else
+NAKED
+void sub_8108D54(struct Sprite *sprite, int xDiff, int yDiff)
+{
+ 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, 0x18\n\
+ adds r4, r1, 0\n\
+ adds r5, r2, 0\n\
+ movs r2, 0x2E\n\
+ ldrsh r1, [r0, r2]\n\
+ lsrs r2, r1, 31\n\
+ adds r1, r2\n\
+ lsls r1, 15\n\
+ lsrs r1, 16\n\
+ str r1, [sp]\n\
+ ldrh r1, [r0, 0x24]\n\
+ ldrh r3, [r0, 0x20]\n\
+ adds r1, r3\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r8, r1\n\
+ ldrh r1, [r0, 0x26]\n\
+ ldrh r0, [r0, 0x22]\n\
+ adds r1, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r10, r1\n\
+ bl Random2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, r5, r0\n\
+ subs r0, 0x5\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r9, r0\n\
+ bl Random2\n\
+ negs r4, r4\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r4, r0\n\
+ subs r4, 0x5\n\
+ lsls r4, 16\n\
+ lsrs r7, r4, 16\n\
+ movs r6, 0\n\
+ mov r0, r8\n\
+ lsls r0, 16\n\
+ mov r8, r0\n\
+ mov r1, r10\n\
+ lsls r1, 16\n\
+ str r1, [sp, 0xC]\n\
+ ldr r2, [sp]\n\
+ lsls r2, 16\n\
+ str r2, [sp, 0x10]\n\
+ asrs r1, 16\n\
+ lsls r0, r7, 16\n\
+ asrs r5, r0, 16\n\
+ str r0, [sp, 0x14]\n\
+ negs r3, r5\n\
+ str r3, [sp, 0x4]\n\
+ asrs r0, r2, 16\n\
+ adds r1, r0\n\
+ lsls r1, 16\n\
+ mov r10, r1\n\
+_08108DE2:\n\
+ ldr r0, =gUnknown_08595310\n\
+ mov r2, r8\n\
+ asrs r1, r2, 16\n\
+ mov r3, r10\n\
+ asrs r2, r3, 16\n\
+ movs r3, 0x82\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r1, =gSprites\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r4, r0, r1\n\
+ movs r0, 0x14\n\
+ strh r0, [r4, 0x2E]\n\
+ mov r0, r9\n\
+ strh r0, [r4, 0x30]\n\
+ ldr r0, =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSpriteSubpriority\n\
+ subs r0, 0x1\n\
+ adds r1, r4, 0\n\
+ adds r1, 0x43\n\
+ strb r0, [r1]\n\
+ cmp r5, 0\n\
+ bge _08108E30\n\
+ mov r1, sp\n\
+ ldrh r1, [r1, 0x4]\n\
+ strh r1, [r4, 0x32]\n\
+ b _08108E32\n\
+ .pool\n\
+_08108E30:\n\
+ strh r7, [r4, 0x32]\n\
+_08108E32:\n\
+ lsls r0, r6, 16\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r2\n\
+ lsrs r6, r0, 16\n\
+ cmp r0, 0\n\
+ ble _08108DE2\n\
+ movs r6, 0\n\
+ ldr r3, [sp, 0xC]\n\
+ asrs r1, r3, 16\n\
+ ldr r0, [sp, 0x14]\n\
+ asrs r5, r0, 16\n\
+ negs r2, r5\n\
+ str r2, [sp, 0x8]\n\
+ ldr r3, [sp, 0x10]\n\
+ asrs r0, r3, 16\n\
+ subs r1, r0\n\
+ lsls r1, 16\n\
+ mov r10, r1\n\
+_08108E58:\n\
+ ldr r0, =gUnknown_08595310\n\
+ mov r2, r8\n\
+ asrs r1, r2, 16\n\
+ mov r3, r10\n\
+ asrs r2, r3, 16\n\
+ movs r3, 0x82\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r1, =gSprites\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r4, r0, r1\n\
+ movs r0, 0x14\n\
+ strh r0, [r4, 0x2E]\n\
+ mov r0, r9\n\
+ strh r0, [r4, 0x30]\n\
+ ldr r0, =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSpriteSubpriority\n\
+ subs r0, 0x1\n\
+ adds r1, r4, 0\n\
+ adds r1, 0x43\n\
+ strb r0, [r1]\n\
+ cmp r5, 0\n\
+ ble _08108EA8\n\
+ mov r1, sp\n\
+ ldrh r1, [r1, 0x8]\n\
+ strh r1, [r4, 0x32]\n\
+ b _08108EAA\n\
+ .pool\n\
+_08108EA8:\n\
+ strh r7, [r4, 0x32]\n\
+_08108EAA:\n\
+ lsls r0, r6, 16\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r2\n\
+ lsrs r6, r0, 16\n\
+ cmp r0, 0\n\
+ ble _08108E58\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");
+}
+#endif
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index d21f2e1d7..00650fc8c 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -40,4558 +40,7 @@ static bool8 IsAbilityAllowingEncounter(u8 level);
EWRAM_DATA static u8 sWildEncountersDisabled = 0;
EWRAM_DATA static u32 sFeebasRngValue = 0;
-// const rom data
-const struct WildPokemon gRoute101_LandMons[] =
-{
- {2, 2, SPECIES_WURMPLE},
- {2, 2, SPECIES_POOCHYENA},
- {2, 2, SPECIES_WURMPLE},
- {3, 3, SPECIES_WURMPLE},
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_WURMPLE},
- {3, 3, SPECIES_POOCHYENA},
- {2, 2, SPECIES_ZIGZAGOON},
- {2, 2, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
-};
-
-const struct WildPokemonInfo gRoute101_LandMonsInfo = {20, gRoute101_LandMons};
-
-const struct WildPokemon gRoute102_LandMons[] =
-{
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_WURMPLE},
- {4, 4, SPECIES_POOCHYENA},
- {4, 4, SPECIES_WURMPLE},
- {3, 3, SPECIES_LOTAD},
- {4, 4, SPECIES_LOTAD},
- {3, 3, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
- {4, 4, SPECIES_ZIGZAGOON},
- {4, 4, SPECIES_RALTS},
- {4, 4, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_SEEDOT},
-};
-
-const struct WildPokemonInfo gRoute102_LandMonsInfo = {20, gRoute102_LandMons};
-
-const struct WildPokemon gRoute102_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute102_WaterMonsInfo = {4, gRoute102_WaterMons};
-
-const struct WildPokemon gRoute102_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_CORPHISH},
- {25, 30, SPECIES_CORPHISH},
- {30, 35, SPECIES_CORPHISH},
- {20, 25, SPECIES_CORPHISH},
- {35, 40, SPECIES_CORPHISH},
- {40, 45, SPECIES_CORPHISH},
-};
-
-const struct WildPokemonInfo gRoute102_FishingMonsInfo = {30, gRoute102_FishingMons};
-
-const struct WildPokemon gRoute103_LandMons[] =
-{
- {2, 2, SPECIES_POOCHYENA},
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_POOCHYENA},
- {4, 4, SPECIES_POOCHYENA},
- {2, 2, SPECIES_WINGULL},
- {3, 3, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
- {4, 4, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_WINGULL},
- {3, 3, SPECIES_WINGULL},
- {2, 2, SPECIES_WINGULL},
- {4, 4, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gRoute103_LandMonsInfo = {20, gRoute103_LandMons};
-
-const struct WildPokemon gRoute103_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute103_WaterMonsInfo = {4, gRoute103_WaterMons};
-
-const struct WildPokemon gRoute103_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute103_FishingMonsInfo = {30, gRoute103_FishingMons};
-
-const struct WildPokemon gRoute104_LandMons[] =
-{
- {4, 4, SPECIES_POOCHYENA},
- {4, 4, SPECIES_WURMPLE},
- {5, 5, SPECIES_POOCHYENA},
- {5, 5, SPECIES_MARILL},
- {4, 4, SPECIES_MARILL},
- {5, 5, SPECIES_POOCHYENA},
- {4, 4, SPECIES_TAILLOW},
- {5, 5, SPECIES_TAILLOW},
- {4, 4, SPECIES_WINGULL},
- {4, 4, SPECIES_WINGULL},
- {3, 3, SPECIES_WINGULL},
- {5, 5, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gRoute104_LandMonsInfo = {20, gRoute104_LandMons};
-
-const struct WildPokemon gRoute104_WaterMons[] =
-{
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute104_WaterMonsInfo = {4, gRoute104_WaterMons};
-
-const struct WildPokemon gRoute104_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_MAGIKARP},
- {30, 35, SPECIES_MAGIKARP},
- {20, 25, SPECIES_MAGIKARP},
- {35, 40, SPECIES_MAGIKARP},
- {40, 45, SPECIES_MAGIKARP},
-};
-
-const struct WildPokemonInfo gRoute104_FishingMonsInfo = {30, gRoute104_FishingMons};
-
-const struct WildPokemon gRoute105_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute105_WaterMonsInfo = {4, gRoute105_WaterMons};
-
-const struct WildPokemon gRoute105_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute105_FishingMonsInfo = {30, gRoute105_FishingMons};
-
-const struct WildPokemon gRoute110_LandMons[] =
-{
- {12, 12, SPECIES_POOCHYENA},
- {12, 12, SPECIES_ELECTRIKE},
- {12, 12, SPECIES_GULPIN},
- {13, 13, SPECIES_ELECTRIKE},
- {13, 13, SPECIES_MINUN},
- {13, 13, SPECIES_ODDISH},
- {13, 13, SPECIES_MINUN},
- {13, 13, SPECIES_GULPIN},
- {12, 12, SPECIES_WINGULL},
- {12, 12, SPECIES_WINGULL},
- {12, 12, SPECIES_PLUSLE},
- {13, 13, SPECIES_PLUSLE},
-};
-
-const struct WildPokemonInfo gRoute110_LandMonsInfo = {20, gRoute110_LandMons};
-
-const struct WildPokemon gRoute110_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute110_WaterMonsInfo = {4, gRoute110_WaterMons};
-
-const struct WildPokemon gRoute110_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute110_FishingMonsInfo = {30, gRoute110_FishingMons};
-
-const struct WildPokemon gRoute111_LandMons[] =
-{
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {19, 19, SPECIES_BALTOY},
- {21, 21, SPECIES_BALTOY},
- {19, 19, SPECIES_SANDSHREW},
- {19, 19, SPECIES_TRAPINCH},
- {20, 20, SPECIES_BALTOY},
- {20, 20, SPECIES_CACNEA},
- {22, 22, SPECIES_CACNEA},
- {22, 22, SPECIES_CACNEA},
-};
-
-const struct WildPokemonInfo gRoute111_LandMonsInfo = {10, gRoute111_LandMons};
-
-const struct WildPokemon gRoute111_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute111_WaterMonsInfo = {4, gRoute111_WaterMons};
-
-const struct WildPokemon gRoute111_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gRoute111_RockSmashMonsInfo = {20, gRoute111_RockSmashMons};
-
-const struct WildPokemon gRoute111_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gRoute111_FishingMonsInfo = {30, gRoute111_FishingMons};
-
-const struct WildPokemon gRoute112_LandMons[] =
-{
- {15, 15, SPECIES_NUMEL},
- {15, 15, SPECIES_NUMEL},
- {15, 15, SPECIES_MARILL},
- {14, 14, SPECIES_NUMEL},
- {14, 14, SPECIES_NUMEL},
- {14, 14, SPECIES_MARILL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_MARILL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_NUMEL},
-};
-
-const struct WildPokemonInfo gRoute112_LandMonsInfo = {20, gRoute112_LandMons};
-
-const struct WildPokemon gRoute113_LandMons[] =
-{
- {15, 15, SPECIES_SPINDA},
- {15, 15, SPECIES_SPINDA},
- {15, 15, SPECIES_SLUGMA},
- {14, 14, SPECIES_SPINDA},
- {14, 14, SPECIES_SPINDA},
- {14, 14, SPECIES_SLUGMA},
- {16, 16, SPECIES_SPINDA},
- {16, 16, SPECIES_SLUGMA},
- {16, 16, SPECIES_SPINDA},
- {16, 16, SPECIES_SKARMORY},
- {16, 16, SPECIES_SPINDA},
- {16, 16, SPECIES_SKARMORY},
-};
-
-const struct WildPokemonInfo gRoute113_LandMonsInfo = {20, gRoute113_LandMons};
-
-const struct WildPokemon gRoute114_LandMons[] =
-{
- {16, 16, SPECIES_SWABLU},
- {16, 16, SPECIES_LOTAD},
- {17, 17, SPECIES_SWABLU},
- {15, 15, SPECIES_SWABLU},
- {15, 15, SPECIES_LOTAD},
- {16, 16, SPECIES_LOMBRE},
- {16, 16, SPECIES_LOMBRE},
- {18, 18, SPECIES_LOMBRE},
- {17, 17, SPECIES_SEVIPER},
- {15, 15, SPECIES_SEVIPER},
- {17, 17, SPECIES_SEVIPER},
- {15, 15, SPECIES_NUZLEAF},
-};
-
-const struct WildPokemonInfo gRoute114_LandMonsInfo = {20, gRoute114_LandMons};
-
-const struct WildPokemon gRoute114_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute114_WaterMonsInfo = {4, gRoute114_WaterMons};
-
-const struct WildPokemon gRoute114_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gRoute114_RockSmashMonsInfo = {20, gRoute114_RockSmashMons};
-
-const struct WildPokemon gRoute114_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gRoute114_FishingMonsInfo = {30, gRoute114_FishingMons};
-
-const struct WildPokemon gRoute116_LandMons[] =
-{
- {6, 6, SPECIES_POOCHYENA},
- {6, 6, SPECIES_WHISMUR},
- {6, 6, SPECIES_NINCADA},
- {7, 7, SPECIES_ABRA},
- {7, 7, SPECIES_NINCADA},
- {6, 6, SPECIES_TAILLOW},
- {7, 7, SPECIES_TAILLOW},
- {8, 8, SPECIES_TAILLOW},
- {7, 7, SPECIES_POOCHYENA},
- {8, 8, SPECIES_POOCHYENA},
- {7, 7, SPECIES_SKITTY},
- {8, 8, SPECIES_SKITTY},
-};
-
-const struct WildPokemonInfo gRoute116_LandMonsInfo = {20, gRoute116_LandMons};
-
-const struct WildPokemon gRoute117_LandMons[] =
-{
- {13, 13, SPECIES_POOCHYENA},
- {13, 13, SPECIES_ODDISH},
- {14, 14, SPECIES_POOCHYENA},
- {14, 14, SPECIES_ODDISH},
- {13, 13, SPECIES_MARILL},
- {13, 13, SPECIES_ODDISH},
- {13, 13, SPECIES_ILLUMISE},
- {13, 13, SPECIES_ILLUMISE},
- {14, 14, SPECIES_ILLUMISE},
- {14, 14, SPECIES_ILLUMISE},
- {13, 13, SPECIES_VOLBEAT},
- {13, 13, SPECIES_SEEDOT},
-};
-
-const struct WildPokemonInfo gRoute117_LandMonsInfo = {20, gRoute117_LandMons};
-
-const struct WildPokemon gRoute117_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute117_WaterMonsInfo = {4, gRoute117_WaterMons};
-
-const struct WildPokemon gRoute117_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_CORPHISH},
- {25, 30, SPECIES_CORPHISH},
- {30, 35, SPECIES_CORPHISH},
- {20, 25, SPECIES_CORPHISH},
- {35, 40, SPECIES_CORPHISH},
- {40, 45, SPECIES_CORPHISH},
-};
-
-const struct WildPokemonInfo gRoute117_FishingMonsInfo = {30, gRoute117_FishingMons};
-
-const struct WildPokemon gRoute118_LandMons[] =
-{
- {24, 24, SPECIES_ZIGZAGOON},
- {24, 24, SPECIES_ELECTRIKE},
- {26, 26, SPECIES_ZIGZAGOON},
- {26, 26, SPECIES_ELECTRIKE},
- {26, 26, SPECIES_LINOONE},
- {26, 26, SPECIES_MANECTRIC},
- {25, 25, SPECIES_WINGULL},
- {25, 25, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute118_LandMonsInfo = {20, gRoute118_LandMons};
-
-const struct WildPokemon gRoute118_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute118_WaterMonsInfo = {4, gRoute118_WaterMons};
-
-const struct WildPokemon gRoute118_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_CARVANHA},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_CARVANHA},
- {20, 25, SPECIES_CARVANHA},
- {35, 40, SPECIES_CARVANHA},
- {40, 45, SPECIES_CARVANHA},
-};
-
-const struct WildPokemonInfo gRoute118_FishingMonsInfo = {30, gRoute118_FishingMons};
-
-const struct WildPokemon gRoute124_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute124_WaterMonsInfo = {4, gRoute124_WaterMons};
-
-const struct WildPokemon gRoute124_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute124_FishingMonsInfo = {30, gRoute124_FishingMons};
-
-const struct WildPokemon gPetalburgWoods_LandMons[] =
-{
- {5, 5, SPECIES_POOCHYENA},
- {5, 5, SPECIES_WURMPLE},
- {5, 5, SPECIES_SHROOMISH},
- {6, 6, SPECIES_POOCHYENA},
- {5, 5, SPECIES_SILCOON},
- {5, 5, SPECIES_CASCOON},
- {6, 6, SPECIES_WURMPLE},
- {6, 6, SPECIES_SHROOMISH},
- {5, 5, SPECIES_TAILLOW},
- {5, 5, SPECIES_SLAKOTH},
- {6, 6, SPECIES_TAILLOW},
- {6, 6, SPECIES_SLAKOTH},
-};
-
-const struct WildPokemonInfo gPetalburgWoods_LandMonsInfo = {20, gPetalburgWoods_LandMons};
-
-const struct WildPokemon gRusturfTunnel_LandMons[] =
-{
- {6, 6, SPECIES_WHISMUR},
- {7, 7, SPECIES_WHISMUR},
- {6, 6, SPECIES_WHISMUR},
- {6, 6, SPECIES_WHISMUR},
- {7, 7, SPECIES_WHISMUR},
- {7, 7, SPECIES_WHISMUR},
- {5, 5, SPECIES_WHISMUR},
- {8, 8, SPECIES_WHISMUR},
- {5, 5, SPECIES_WHISMUR},
- {8, 8, SPECIES_WHISMUR},
- {5, 5, SPECIES_WHISMUR},
- {8, 8, SPECIES_WHISMUR},
-};
-
-const struct WildPokemonInfo gRusturfTunnel_LandMonsInfo = {10, gRusturfTunnel_LandMons};
-
-const struct WildPokemon gGraniteCave_1F_LandMons[] =
-{
- {7, 7, SPECIES_ZUBAT},
- {8, 8, SPECIES_MAKUHITA},
- {7, 7, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ZUBAT},
- {9, 9, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ABRA},
- {10, 10, SPECIES_MAKUHITA},
- {6, 6, SPECIES_MAKUHITA},
- {7, 7, SPECIES_GEODUDE},
- {8, 8, SPECIES_GEODUDE},
- {6, 6, SPECIES_GEODUDE},
- {9, 9, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gGraniteCave_1F_LandMonsInfo = {10, gGraniteCave_1F_LandMons};
-
-const struct WildPokemon gGraniteCave_B1F_LandMons[] =
-{
- {9, 9, SPECIES_ZUBAT},
- {10, 10, SPECIES_ARON},
- {9, 9, SPECIES_ARON},
- {11, 11, SPECIES_ARON},
- {10, 10, SPECIES_ZUBAT},
- {9, 9, SPECIES_ABRA},
- {10, 10, SPECIES_MAKUHITA},
- {11, 11, SPECIES_MAKUHITA},
- {10, 10, SPECIES_SABLEYE},
- {10, 10, SPECIES_SABLEYE},
- {9, 9, SPECIES_SABLEYE},
- {11, 11, SPECIES_SABLEYE},
-};
-
-const struct WildPokemonInfo gGraniteCave_B1F_LandMonsInfo = {10, gGraniteCave_B1F_LandMons};
-
-const struct WildPokemon gMtPyre_1F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
-};
-
-const struct WildPokemonInfo gMtPyre_1F_LandMonsInfo = {10, gMtPyre_1F_LandMons};
-
-const struct WildPokemon gVictoryRoad_1F_LandMons[] =
-{
- {40, 40, SPECIES_GOLBAT},
- {40, 40, SPECIES_HARIYAMA},
- {40, 40, SPECIES_LAIRON},
- {40, 40, SPECIES_LOUDRED},
- {36, 36, SPECIES_ZUBAT},
- {36, 36, SPECIES_MAKUHITA},
- {38, 38, SPECIES_GOLBAT},
- {38, 38, SPECIES_HARIYAMA},
- {36, 36, SPECIES_ARON},
- {36, 36, SPECIES_WHISMUR},
- {36, 36, SPECIES_ARON},
- {36, 36, SPECIES_WHISMUR},
-};
-
-const struct WildPokemonInfo gVictoryRoad_1F_LandMonsInfo = {10, gVictoryRoad_1F_LandMons};
-
-const struct WildPokemon gSafariZone_South_LandMons[] =
-{
- {25, 25, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {25, 25, SPECIES_GIRAFARIG},
- {27, 27, SPECIES_GIRAFARIG},
- {25, 25, SPECIES_NATU},
- {25, 25, SPECIES_DODUO},
- {25, 25, SPECIES_GLOOM},
- {27, 27, SPECIES_WOBBUFFET},
- {25, 25, SPECIES_PIKACHU},
- {27, 27, SPECIES_WOBBUFFET},
- {27, 27, SPECIES_PIKACHU},
- {29, 29, SPECIES_WOBBUFFET},
-};
-
-const struct WildPokemonInfo gSafariZone_South_LandMonsInfo = {25, gSafariZone_South_LandMons};
-
-const struct WildPokemon gUnderwater2_WaterMons[] =
-{
- {20, 30, SPECIES_CLAMPERL},
- {20, 30, SPECIES_CHINCHOU},
- {30, 35, SPECIES_CLAMPERL},
- {30, 35, SPECIES_RELICANTH},
- {30, 35, SPECIES_RELICANTH},
-};
-
-const struct WildPokemonInfo gUnderwater2_WaterMonsInfo = {4, gUnderwater2_WaterMons};
-
-const struct WildPokemon gAbandonedShip_Rooms_B1F_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_WaterMonsInfo = {4, gAbandonedShip_Rooms_B1F_WaterMons};
-
-const struct WildPokemon gAbandonedShip_Rooms_B1F_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_TENTACOOL},
- {25, 30, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
- {25, 30, SPECIES_TENTACRUEL},
- {20, 25, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_FishingMonsInfo = {20, gAbandonedShip_Rooms_B1F_FishingMons};
-
-const struct WildPokemon gGraniteCave_B2F_LandMons[] =
-{
- {10, 10, SPECIES_ZUBAT},
- {11, 11, SPECIES_ARON},
- {10, 10, SPECIES_ARON},
- {11, 11, SPECIES_ZUBAT},
- {12, 12, SPECIES_ARON},
- {10, 10, SPECIES_ABRA},
- {10, 10, SPECIES_SABLEYE},
- {11, 11, SPECIES_SABLEYE},
- {12, 12, SPECIES_SABLEYE},
- {10, 10, SPECIES_SABLEYE},
- {12, 12, SPECIES_SABLEYE},
- {10, 10, SPECIES_SABLEYE},
-};
-
-const struct WildPokemonInfo gGraniteCave_B2F_LandMonsInfo = {10, gGraniteCave_B2F_LandMons};
-
-const struct WildPokemon gGraniteCave_B2F_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {10, 20, SPECIES_NOSEPASS},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gGraniteCave_B2F_RockSmashMonsInfo = {20, gGraniteCave_B2F_RockSmashMons};
-
-const struct WildPokemon gFieryPath_LandMons[] =
-{
- {15, 15, SPECIES_NUMEL},
- {15, 15, SPECIES_KOFFING},
- {16, 16, SPECIES_NUMEL},
- {15, 15, SPECIES_MACHOP},
- {15, 15, SPECIES_TORKOAL},
- {15, 15, SPECIES_SLUGMA},
- {16, 16, SPECIES_KOFFING},
- {16, 16, SPECIES_MACHOP},
- {14, 14, SPECIES_TORKOAL},
- {16, 16, SPECIES_TORKOAL},
- {14, 14, SPECIES_GRIMER},
- {14, 14, SPECIES_GRIMER},
-};
-
-const struct WildPokemonInfo gFieryPath_LandMonsInfo = {10, gFieryPath_LandMons};
-
-const struct WildPokemon gMeteorFalls_B1F_2R_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {30, 30, SPECIES_BAGON},
- {35, 35, SPECIES_SOLROCK},
- {35, 35, SPECIES_BAGON},
- {37, 37, SPECIES_SOLROCK},
- {25, 25, SPECIES_BAGON},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_2R_LandMonsInfo = {10, gMeteorFalls_B1F_2R_LandMons};
-
-const struct WildPokemon gMeteorFalls_B1F_2R_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_2R_WaterMonsInfo = {4, gMeteorFalls_B1F_2R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_B1F_2R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_2R_FishingMonsInfo = {30, gMeteorFalls_B1F_2R_FishingMons};
-
-const struct WildPokemon gJaggedPass_LandMons[] =
-{
- {21, 21, SPECIES_NUMEL},
- {21, 21, SPECIES_NUMEL},
- {21, 21, SPECIES_MACHOP},
- {20, 20, SPECIES_NUMEL},
- {20, 20, SPECIES_SPOINK},
- {20, 20, SPECIES_MACHOP},
- {21, 21, SPECIES_SPOINK},
- {22, 22, SPECIES_MACHOP},
- {22, 22, SPECIES_NUMEL},
- {22, 22, SPECIES_SPOINK},
- {22, 22, SPECIES_NUMEL},
- {22, 22, SPECIES_SPOINK},
-};
-
-const struct WildPokemonInfo gJaggedPass_LandMonsInfo = {20, gJaggedPass_LandMons};
-
-const struct WildPokemon gRoute106_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute106_WaterMonsInfo = {4, gRoute106_WaterMons};
-
-const struct WildPokemon gRoute106_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute106_FishingMonsInfo = {30, gRoute106_FishingMons};
-
-const struct WildPokemon gRoute107_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute107_WaterMonsInfo = {4, gRoute107_WaterMons};
-
-const struct WildPokemon gRoute107_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute107_FishingMonsInfo = {30, gRoute107_FishingMons};
-
-const struct WildPokemon gRoute108_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute108_WaterMonsInfo = {4, gRoute108_WaterMons};
-
-const struct WildPokemon gRoute108_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute108_FishingMonsInfo = {30, gRoute108_FishingMons};
-
-const struct WildPokemon gRoute109_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute109_WaterMonsInfo = {4, gRoute109_WaterMons};
-
-const struct WildPokemon gRoute109_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute109_FishingMonsInfo = {30, gRoute109_FishingMons};
-
-const struct WildPokemon gRoute115_LandMons[] =
-{
- {23, 23, SPECIES_SWABLU},
- {23, 23, SPECIES_TAILLOW},
- {25, 25, SPECIES_SWABLU},
- {24, 24, SPECIES_TAILLOW},
- {25, 25, SPECIES_TAILLOW},
- {25, 25, SPECIES_SWELLOW},
- {24, 24, SPECIES_JIGGLYPUFF},
- {25, 25, SPECIES_JIGGLYPUFF},
- {24, 24, SPECIES_WINGULL},
- {24, 24, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {25, 25, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gRoute115_LandMonsInfo = {20, gRoute115_LandMons};
-
-const struct WildPokemon gRoute115_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute115_WaterMonsInfo = {4, gRoute115_WaterMons};
-
-const struct WildPokemon gRoute115_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute115_FishingMonsInfo = {30, gRoute115_FishingMons};
-
-const struct WildPokemon gNewMauville_Inside_LandMons[] =
-{
- {24, 24, SPECIES_VOLTORB},
- {24, 24, SPECIES_MAGNEMITE},
- {25, 25, SPECIES_VOLTORB},
- {25, 25, SPECIES_MAGNEMITE},
- {23, 23, SPECIES_VOLTORB},
- {23, 23, SPECIES_MAGNEMITE},
- {26, 26, SPECIES_VOLTORB},
- {26, 26, SPECIES_MAGNEMITE},
- {22, 22, SPECIES_VOLTORB},
- {22, 22, SPECIES_MAGNEMITE},
- {26, 26, SPECIES_ELECTRODE},
- {26, 26, SPECIES_MAGNETON},
-};
-
-const struct WildPokemonInfo gNewMauville_Inside_LandMonsInfo = {10, gNewMauville_Inside_LandMons};
-
-const struct WildPokemon gRoute119_LandMons[] =
-{
- {25, 25, SPECIES_ZIGZAGOON},
- {25, 25, SPECIES_LINOONE},
- {27, 27, SPECIES_ZIGZAGOON},
- {25, 25, SPECIES_ODDISH},
- {27, 27, SPECIES_LINOONE},
- {26, 26, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {24, 24, SPECIES_ODDISH},
- {25, 25, SPECIES_TROPIUS},
- {26, 26, SPECIES_TROPIUS},
- {27, 27, SPECIES_TROPIUS},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute119_LandMonsInfo = {15, gRoute119_LandMons};
-
-const struct WildPokemon gRoute119_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute119_WaterMonsInfo = {4, gRoute119_WaterMons};
-
-const struct WildPokemon gRoute119_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_CARVANHA},
- {25, 30, SPECIES_CARVANHA},
- {30, 35, SPECIES_CARVANHA},
- {20, 25, SPECIES_CARVANHA},
- {35, 40, SPECIES_CARVANHA},
- {40, 45, SPECIES_CARVANHA},
-};
-
-const struct WildPokemonInfo gRoute119_FishingMonsInfo = {30, gRoute119_FishingMons};
-
-const struct WildPokemon gRoute120_LandMons[] =
-{
- {25, 25, SPECIES_POOCHYENA},
- {25, 25, SPECIES_MIGHTYENA},
- {27, 27, SPECIES_MIGHTYENA},
- {25, 25, SPECIES_ODDISH},
- {25, 25, SPECIES_MARILL},
- {26, 26, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {27, 27, SPECIES_MARILL},
- {25, 25, SPECIES_ABSOL},
- {27, 27, SPECIES_ABSOL},
- {25, 25, SPECIES_KECLEON},
- {25, 25, SPECIES_SEEDOT},
-};
-
-const struct WildPokemonInfo gRoute120_LandMonsInfo = {20, gRoute120_LandMons};
-
-const struct WildPokemon gRoute120_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute120_WaterMonsInfo = {4, gRoute120_WaterMons};
-
-const struct WildPokemon gRoute120_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gRoute120_FishingMonsInfo = {30, gRoute120_FishingMons};
-
-const struct WildPokemon gRoute121_LandMons[] =
-{
- {26, 26, SPECIES_POOCHYENA},
- {26, 26, SPECIES_SHUPPET},
- {26, 26, SPECIES_MIGHTYENA},
- {28, 28, SPECIES_SHUPPET},
- {28, 28, SPECIES_MIGHTYENA},
- {26, 26, SPECIES_ODDISH},
- {28, 28, SPECIES_ODDISH},
- {28, 28, SPECIES_GLOOM},
- {26, 26, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {28, 28, SPECIES_WINGULL},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute121_LandMonsInfo = {20, gRoute121_LandMons};
-
-const struct WildPokemon gRoute121_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute121_WaterMonsInfo = {4, gRoute121_WaterMons};
-
-const struct WildPokemon gRoute121_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute121_FishingMonsInfo = {30, gRoute121_FishingMons};
-
-const struct WildPokemon gRoute122_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute122_WaterMonsInfo = {4, gRoute122_WaterMons};
-
-const struct WildPokemon gRoute122_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute122_FishingMonsInfo = {30, gRoute122_FishingMons};
-
-const struct WildPokemon gRoute123_LandMons[] =
-{
- {26, 26, SPECIES_POOCHYENA},
- {26, 26, SPECIES_SHUPPET},
- {26, 26, SPECIES_MIGHTYENA},
- {28, 28, SPECIES_SHUPPET},
- {28, 28, SPECIES_MIGHTYENA},
- {26, 26, SPECIES_ODDISH},
- {28, 28, SPECIES_ODDISH},
- {28, 28, SPECIES_GLOOM},
- {26, 26, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {28, 28, SPECIES_WINGULL},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute123_LandMonsInfo = {20, gRoute123_LandMons};
-
-const struct WildPokemon gRoute123_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute123_WaterMonsInfo = {4, gRoute123_WaterMons};
-
-const struct WildPokemon gRoute123_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute123_FishingMonsInfo = {30, gRoute123_FishingMons};
-
-const struct WildPokemon gMtPyre_2F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
-};
-
-const struct WildPokemonInfo gMtPyre_2F_LandMonsInfo = {10, gMtPyre_2F_LandMons};
-
-const struct WildPokemon gMtPyre_3F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
-};
-
-const struct WildPokemonInfo gMtPyre_3F_LandMonsInfo = {10, gMtPyre_3F_LandMons};
-
-const struct WildPokemon gMtPyre_4F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {27, 27, SPECIES_DUSKULL},
- {27, 27, SPECIES_DUSKULL},
- {25, 25, SPECIES_DUSKULL},
- {29, 29, SPECIES_DUSKULL},
-};
-
-const struct WildPokemonInfo gMtPyre_4F_LandMonsInfo = {10, gMtPyre_4F_LandMons};
-
-const struct WildPokemon gMtPyre_5F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {27, 27, SPECIES_DUSKULL},
- {27, 27, SPECIES_DUSKULL},
- {25, 25, SPECIES_DUSKULL},
- {29, 29, SPECIES_DUSKULL},
-};
-
-const struct WildPokemonInfo gMtPyre_5F_LandMonsInfo = {10, gMtPyre_5F_LandMons};
-
-const struct WildPokemon gMtPyre_6F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {27, 27, SPECIES_DUSKULL},
- {27, 27, SPECIES_DUSKULL},
- {25, 25, SPECIES_DUSKULL},
- {29, 29, SPECIES_DUSKULL},
-};
-
-const struct WildPokemonInfo gMtPyre_6F_LandMonsInfo = {10, gMtPyre_6F_LandMons};
-
-const struct WildPokemon gMtPyre_Exterior_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {29, 29, SPECIES_VULPIX},
- {27, 27, SPECIES_VULPIX},
- {29, 29, SPECIES_VULPIX},
- {25, 25, SPECIES_VULPIX},
- {27, 27, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {28, 28, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gMtPyre_Exterior_LandMonsInfo = {10, gMtPyre_Exterior_LandMons};
-
-const struct WildPokemon gMtPyre_Summit_LandMons[] =
-{
- {28, 28, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {27, 27, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {30, 30, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {28, 28, SPECIES_DUSKULL},
- {26, 26, SPECIES_DUSKULL},
- {30, 30, SPECIES_DUSKULL},
- {28, 28, SPECIES_CHIMECHO},
- {28, 28, SPECIES_CHIMECHO},
-};
-
-const struct WildPokemonInfo gMtPyre_Summit_LandMonsInfo = {10, gMtPyre_Summit_LandMons};
-
-const struct WildPokemon gGraniteCave_StevensRoom_LandMons[] =
-{
- {7, 7, SPECIES_ZUBAT},
- {8, 8, SPECIES_MAKUHITA},
- {7, 7, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ZUBAT},
- {9, 9, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ABRA},
- {10, 10, SPECIES_MAKUHITA},
- {6, 6, SPECIES_MAKUHITA},
- {7, 7, SPECIES_ARON},
- {8, 8, SPECIES_ARON},
- {7, 7, SPECIES_ARON},
- {8, 8, SPECIES_ARON},
-};
-
-const struct WildPokemonInfo gGraniteCave_StevensRoom_LandMonsInfo = {10, gGraniteCave_StevensRoom_LandMons};
-
-const struct WildPokemon gRoute125_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute125_WaterMonsInfo = {4, gRoute125_WaterMons};
-
-const struct WildPokemon gRoute125_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute125_FishingMonsInfo = {30, gRoute125_FishingMons};
-
-const struct WildPokemon gRoute126_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute126_WaterMonsInfo = {4, gRoute126_WaterMons};
-
-const struct WildPokemon gRoute126_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute126_FishingMonsInfo = {30, gRoute126_FishingMons};
-
-const struct WildPokemon gRoute127_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute127_WaterMonsInfo = {4, gRoute127_WaterMons};
-
-const struct WildPokemon gRoute127_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute127_FishingMonsInfo = {30, gRoute127_FishingMons};
-
-const struct WildPokemon gRoute128_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute128_WaterMonsInfo = {4, gRoute128_WaterMons};
-
-const struct WildPokemon gRoute128_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_LUVDISC},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_LUVDISC},
- {30, 35, SPECIES_WAILMER},
- {30, 35, SPECIES_CORSOLA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute128_FishingMonsInfo = {30, gRoute128_FishingMons};
-
-const struct WildPokemon gRoute129_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_WAILORD},
-};
-
-const struct WildPokemonInfo gRoute129_WaterMonsInfo = {4, gRoute129_WaterMons};
-
-const struct WildPokemon gRoute129_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute129_FishingMonsInfo = {30, gRoute129_FishingMons};
-
-const struct WildPokemon gRoute130_LandMons[] =
-{
- {30, 30, SPECIES_WYNAUT},
- {35, 35, SPECIES_WYNAUT},
- {25, 25, SPECIES_WYNAUT},
- {40, 40, SPECIES_WYNAUT},
- {20, 20, SPECIES_WYNAUT},
- {45, 45, SPECIES_WYNAUT},
- {15, 15, SPECIES_WYNAUT},
- {50, 50, SPECIES_WYNAUT},
- {10, 10, SPECIES_WYNAUT},
- {5, 5, SPECIES_WYNAUT},
- {10, 10, SPECIES_WYNAUT},
- {5, 5, SPECIES_WYNAUT},
-};
-
-const struct WildPokemonInfo gRoute130_LandMonsInfo = {20, gRoute130_LandMons};
-
-const struct WildPokemon gRoute130_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute130_WaterMonsInfo = {4, gRoute130_WaterMons};
-
-const struct WildPokemon gRoute130_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute130_FishingMonsInfo = {30, gRoute130_FishingMons};
-
-const struct WildPokemon gRoute131_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute131_WaterMonsInfo = {4, gRoute131_WaterMons};
-
-const struct WildPokemon gRoute131_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute131_FishingMonsInfo = {30, gRoute131_FishingMons};
-
-const struct WildPokemon gRoute132_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute132_WaterMonsInfo = {4, gRoute132_WaterMons};
-
-const struct WildPokemon gRoute132_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_HORSEA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute132_FishingMonsInfo = {30, gRoute132_FishingMons};
-
-const struct WildPokemon gRoute133_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute133_WaterMonsInfo = {4, gRoute133_WaterMons};
-
-const struct WildPokemon gRoute133_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_HORSEA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute133_FishingMonsInfo = {30, gRoute133_FishingMons};
-
-const struct WildPokemon gRoute134_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute134_WaterMonsInfo = {4, gRoute134_WaterMons};
-
-const struct WildPokemon gRoute134_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_HORSEA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute134_FishingMonsInfo = {30, gRoute134_FishingMons};
-
-const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo = {4, gAbandonedShip_HiddenFloorCorridors_WaterMons};
-
-const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_TENTACOOL},
- {25, 30, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
- {25, 30, SPECIES_TENTACRUEL},
- {20, 25, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo = {20, gAbandonedShip_HiddenFloorCorridors_FishingMons};
-
-const struct WildPokemon gSeafloorCavern_Room1_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room1_LandMonsInfo = {4, gSeafloorCavern_Room1_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room2_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room2_LandMonsInfo = {4, gSeafloorCavern_Room2_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room3_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room3_LandMonsInfo = {4, gSeafloorCavern_Room3_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room4_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room4_LandMonsInfo = {4, gSeafloorCavern_Room4_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room5_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room5_LandMonsInfo = {4, gSeafloorCavern_Room5_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room6_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room6_LandMonsInfo = {4, gSeafloorCavern_Room6_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room6_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room6_WaterMonsInfo = {4, gSeafloorCavern_Room6_WaterMons};
-
-const struct WildPokemon gSeafloorCavern_Room6_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room6_FishingMonsInfo = {10, gSeafloorCavern_Room6_FishingMons};
-
-const struct WildPokemon gSeafloorCavern_Room7_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room7_LandMonsInfo = {4, gSeafloorCavern_Room7_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room7_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room7_WaterMonsInfo = {4, gSeafloorCavern_Room7_WaterMons};
-
-const struct WildPokemon gSeafloorCavern_Room7_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room7_FishingMonsInfo = {10, gSeafloorCavern_Room7_FishingMons};
-
-const struct WildPokemon gSeafloorCavern_Room8_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room8_LandMonsInfo = {4, gSeafloorCavern_Room8_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Entrance_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Entrance_WaterMonsInfo = {4, gSeafloorCavern_Entrance_WaterMons};
-
-const struct WildPokemon gSeafloorCavern_Entrance_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Entrance_FishingMonsInfo = {10, gSeafloorCavern_Entrance_FishingMons};
-
-const struct WildPokemon gCaveOfOrigin_Entrance_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_Entrance_LandMonsInfo = {4, gCaveOfOrigin_Entrance_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_1F_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_1F_LandMonsInfo = {4, gCaveOfOrigin_1F_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap1_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap1_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap2_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap2_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap3_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap3_LandMons};
-
-const struct WildPokemon gNewMauville_Entrance_LandMons[] =
-{
- {24, 24, SPECIES_VOLTORB},
- {24, 24, SPECIES_MAGNEMITE},
- {25, 25, SPECIES_VOLTORB},
- {25, 25, SPECIES_MAGNEMITE},
- {23, 23, SPECIES_VOLTORB},
- {23, 23, SPECIES_MAGNEMITE},
- {26, 26, SPECIES_VOLTORB},
- {26, 26, SPECIES_MAGNEMITE},
- {22, 22, SPECIES_VOLTORB},
- {22, 22, SPECIES_MAGNEMITE},
- {22, 22, SPECIES_VOLTORB},
- {22, 22, SPECIES_MAGNEMITE},
-};
-
-const struct WildPokemonInfo gNewMauville_Entrance_LandMonsInfo = {10, gNewMauville_Entrance_LandMons};
-
-const struct WildPokemon gSafariZone_Southwest_LandMons[] =
-{
- {25, 25, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {25, 25, SPECIES_GIRAFARIG},
- {27, 27, SPECIES_GIRAFARIG},
- {25, 25, SPECIES_NATU},
- {27, 27, SPECIES_DODUO},
- {25, 25, SPECIES_GLOOM},
- {27, 27, SPECIES_WOBBUFFET},
- {25, 25, SPECIES_PIKACHU},
- {27, 27, SPECIES_WOBBUFFET},
- {27, 27, SPECIES_PIKACHU},
- {29, 29, SPECIES_WOBBUFFET},
-};
-
-const struct WildPokemonInfo gSafariZone_Southwest_LandMonsInfo = {25, gSafariZone_Southwest_LandMons};
-
-const struct WildPokemon gSafariZone_Southwest_WaterMons[] =
-{
- {20, 30, SPECIES_PSYDUCK},
- {20, 30, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
-};
-
-const struct WildPokemonInfo gSafariZone_Southwest_WaterMonsInfo = {9, gSafariZone_Southwest_WaterMons};
-
-const struct WildPokemon gSafariZone_Southwest_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 25, SPECIES_GOLDEEN},
- {10, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_GOLDEEN},
- {30, 35, SPECIES_GOLDEEN},
- {30, 35, SPECIES_SEAKING},
- {35, 40, SPECIES_SEAKING},
- {25, 30, SPECIES_SEAKING},
-};
-
-const struct WildPokemonInfo gSafariZone_Southwest_FishingMonsInfo = {35, gSafariZone_Southwest_FishingMons};
-
-const struct WildPokemon gSafariZone_North_LandMons[] =
-{
- {27, 27, SPECIES_PHANPY},
- {27, 27, SPECIES_ODDISH},
- {29, 29, SPECIES_PHANPY},
- {29, 29, SPECIES_ODDISH},
- {27, 27, SPECIES_NATU},
- {29, 29, SPECIES_GLOOM},
- {31, 31, SPECIES_GLOOM},
- {29, 29, SPECIES_NATU},
- {29, 29, SPECIES_XATU},
- {27, 27, SPECIES_HERACROSS},
- {31, 31, SPECIES_XATU},
- {29, 29, SPECIES_HERACROSS},
-};
-
-const struct WildPokemonInfo gSafariZone_North_LandMonsInfo = {25, gSafariZone_North_LandMons};
-
-const struct WildPokemon gSafariZone_North_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {20, 25, SPECIES_GEODUDE},
- {25, 30, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gSafariZone_North_RockSmashMonsInfo = {25, gSafariZone_North_RockSmashMons};
-
-const struct WildPokemon gSafariZone_Northwest_LandMons[] =
-{
- {27, 27, SPECIES_RHYHORN},
- {27, 27, SPECIES_ODDISH},
- {29, 29, SPECIES_RHYHORN},
- {29, 29, SPECIES_ODDISH},
- {27, 27, SPECIES_DODUO},
- {29, 29, SPECIES_GLOOM},
- {31, 31, SPECIES_GLOOM},
- {29, 29, SPECIES_DODUO},
- {29, 29, SPECIES_DODRIO},
- {27, 27, SPECIES_PINSIR},
- {31, 31, SPECIES_DODRIO},
- {29, 29, SPECIES_PINSIR},
-};
-
-const struct WildPokemonInfo gSafariZone_Northwest_LandMonsInfo = {25, gSafariZone_Northwest_LandMons};
-
-const struct WildPokemon gSafariZone_Northwest_WaterMons[] =
-{
- {20, 30, SPECIES_PSYDUCK},
- {20, 30, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
- {30, 35, SPECIES_GOLDUCK},
- {25, 40, SPECIES_GOLDUCK},
-};
-
-const struct WildPokemonInfo gSafariZone_Northwest_WaterMonsInfo = {9, gSafariZone_Northwest_WaterMons};
-
-const struct WildPokemon gSafariZone_Northwest_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 25, SPECIES_GOLDEEN},
- {10, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_GOLDEEN},
- {30, 35, SPECIES_GOLDEEN},
- {30, 35, SPECIES_SEAKING},
- {35, 40, SPECIES_SEAKING},
- {25, 30, SPECIES_SEAKING},
-};
-
-const struct WildPokemonInfo gSafariZone_Northwest_FishingMonsInfo = {35, gSafariZone_Northwest_FishingMons};
-
-const struct WildPokemon gVictoryRoad_B1F_LandMons[] =
-{
- {40, 40, SPECIES_GOLBAT},
- {40, 40, SPECIES_HARIYAMA},
- {40, 40, SPECIES_LAIRON},
- {40, 40, SPECIES_LAIRON},
- {38, 38, SPECIES_GOLBAT},
- {38, 38, SPECIES_HARIYAMA},
- {42, 42, SPECIES_GOLBAT},
- {42, 42, SPECIES_HARIYAMA},
- {42, 42, SPECIES_LAIRON},
- {38, 38, SPECIES_MAWILE},
- {42, 42, SPECIES_LAIRON},
- {38, 38, SPECIES_MAWILE},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B1F_LandMonsInfo = {10, gVictoryRoad_B1F_LandMons};
-
-const struct WildPokemon gVictoryRoad_B1F_RockSmashMons[] =
-{
- {30, 40, SPECIES_GRAVELER},
- {30, 40, SPECIES_GEODUDE},
- {35, 40, SPECIES_GRAVELER},
- {35, 40, SPECIES_GRAVELER},
- {35, 40, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B1F_RockSmashMonsInfo = {20, gVictoryRoad_B1F_RockSmashMons};
-
-const struct WildPokemon gVictoryRoad_B2F_LandMons[] =
-{
- {40, 40, SPECIES_GOLBAT},
- {40, 40, SPECIES_SABLEYE},
- {40, 40, SPECIES_LAIRON},
- {40, 40, SPECIES_LAIRON},
- {42, 42, SPECIES_GOLBAT},
- {42, 42, SPECIES_SABLEYE},
- {44, 44, SPECIES_GOLBAT},
- {44, 44, SPECIES_SABLEYE},
- {42, 42, SPECIES_LAIRON},
- {42, 42, SPECIES_MAWILE},
- {44, 44, SPECIES_LAIRON},
- {44, 44, SPECIES_MAWILE},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B2F_LandMonsInfo = {10, gVictoryRoad_B2F_LandMons};
-
-const struct WildPokemon gVictoryRoad_B2F_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {25, 30, SPECIES_GOLBAT},
- {35, 40, SPECIES_GOLBAT},
- {35, 40, SPECIES_GOLBAT},
- {35, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B2F_WaterMonsInfo = {4, gVictoryRoad_B2F_WaterMons};
-
-const struct WildPokemon gVictoryRoad_B2F_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B2F_FishingMonsInfo = {30, gVictoryRoad_B2F_FishingMons};
-
-const struct WildPokemon gMeteorFalls_1F_1R_LandMons[] =
-{
- {16, 16, SPECIES_ZUBAT},
- {17, 17, SPECIES_ZUBAT},
- {18, 18, SPECIES_ZUBAT},
- {15, 15, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
- {16, 16, SPECIES_SOLROCK},
- {18, 18, SPECIES_SOLROCK},
- {14, 14, SPECIES_SOLROCK},
- {19, 19, SPECIES_ZUBAT},
- {20, 20, SPECIES_ZUBAT},
- {19, 19, SPECIES_ZUBAT},
- {20, 20, SPECIES_ZUBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_1R_LandMonsInfo = {10, gMeteorFalls_1F_1R_LandMons};
-
-const struct WildPokemon gMeteorFalls_1F_1R_WaterMons[] =
-{
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_1R_WaterMonsInfo = {4, gMeteorFalls_1F_1R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_1F_1R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_1R_FishingMonsInfo = {30, gMeteorFalls_1F_1R_FishingMons};
-
-const struct WildPokemon gMeteorFalls_1F_2R_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_SOLROCK},
- {33, 33, SPECIES_SOLROCK},
- {37, 37, SPECIES_SOLROCK},
- {35, 35, SPECIES_GOLBAT},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_2R_LandMonsInfo = {10, gMeteorFalls_1F_2R_LandMons};
-
-const struct WildPokemon gMeteorFalls_1F_2R_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_2R_WaterMonsInfo = {4, gMeteorFalls_1F_2R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_1F_2R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_2R_FishingMonsInfo = {30, gMeteorFalls_1F_2R_FishingMons};
-
-const struct WildPokemon gMeteorFalls_B1F_1R_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_SOLROCK},
- {33, 33, SPECIES_SOLROCK},
- {37, 37, SPECIES_SOLROCK},
- {35, 35, SPECIES_GOLBAT},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_1R_LandMonsInfo = {10, gMeteorFalls_B1F_1R_LandMons};
-
-const struct WildPokemon gMeteorFalls_B1F_1R_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_1R_WaterMonsInfo = {4, gMeteorFalls_B1F_1R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_B1F_1R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_1R_FishingMonsInfo = {30, gMeteorFalls_B1F_1R_FishingMons};
-
-const struct WildPokemon gShoalCave_LowTideStairsRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideStairsRoom_LandMonsInfo = {10, gShoalCave_LowTideStairsRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideLowerRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideLowerRoom_LandMonsInfo = {10, gShoalCave_LowTideLowerRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideInnerRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_LandMonsInfo = {10, gShoalCave_LowTideInnerRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideInnerRoom_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {25, 30, SPECIES_SPHEAL},
- {25, 30, SPECIES_SPHEAL},
- {25, 35, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_WaterMonsInfo = {4, gShoalCave_LowTideInnerRoom_WaterMons};
-
-const struct WildPokemon gShoalCave_LowTideInnerRoom_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_FishingMonsInfo = {10, gShoalCave_LowTideInnerRoom_FishingMons};
-
-const struct WildPokemon gShoalCave_LowTideEntranceRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_LandMonsInfo = {10, gShoalCave_LowTideEntranceRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideEntranceRoom_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {25, 30, SPECIES_SPHEAL},
- {25, 30, SPECIES_SPHEAL},
- {25, 35, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_WaterMonsInfo = {4, gShoalCave_LowTideEntranceRoom_WaterMons};
-
-const struct WildPokemon gShoalCave_LowTideEntranceRoom_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_FishingMonsInfo = {10, gShoalCave_LowTideEntranceRoom_FishingMons};
-
-const struct WildPokemon gLilycoveCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gLilycoveCity_WaterMonsInfo = {4, gLilycoveCity_WaterMons};
-
-const struct WildPokemon gLilycoveCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_STARYU},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gLilycoveCity_FishingMonsInfo = {10, gLilycoveCity_FishingMons};
-
-const struct WildPokemon gDewfordTown_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gDewfordTown_WaterMonsInfo = {4, gDewfordTown_WaterMons};
-
-const struct WildPokemon gDewfordTown_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gDewfordTown_FishingMonsInfo = {10, gDewfordTown_FishingMons};
-
-const struct WildPokemon gSlateportCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gSlateportCity_WaterMonsInfo = {4, gSlateportCity_WaterMons};
-
-const struct WildPokemon gSlateportCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSlateportCity_FishingMonsInfo = {10, gSlateportCity_FishingMons};
-
-const struct WildPokemon gMossdeepCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gMossdeepCity_WaterMonsInfo = {4, gMossdeepCity_WaterMons};
-
-const struct WildPokemon gMossdeepCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gMossdeepCity_FishingMonsInfo = {10, gMossdeepCity_FishingMons};
-
-const struct WildPokemon gPacifidlogTown_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gPacifidlogTown_WaterMonsInfo = {4, gPacifidlogTown_WaterMons};
-
-const struct WildPokemon gPacifidlogTown_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gPacifidlogTown_FishingMonsInfo = {10, gPacifidlogTown_FishingMons};
-
-const struct WildPokemon gEverGrandeCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gEverGrandeCity_WaterMonsInfo = {4, gEverGrandeCity_WaterMons};
-
-const struct WildPokemon gEverGrandeCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_LUVDISC},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_LUVDISC},
- {30, 35, SPECIES_WAILMER},
- {30, 35, SPECIES_CORSOLA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gEverGrandeCity_FishingMonsInfo = {10, gEverGrandeCity_FishingMons};
-
-const struct WildPokemon gPetalburgCity_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
-};
-
-const struct WildPokemonInfo gPetalburgCity_WaterMonsInfo = {1, gPetalburgCity_WaterMons};
-
-const struct WildPokemon gPetalburgCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_CORPHISH},
- {25, 30, SPECIES_CORPHISH},
- {30, 35, SPECIES_CORPHISH},
- {20, 25, SPECIES_CORPHISH},
- {35, 40, SPECIES_CORPHISH},
- {40, 45, SPECIES_CORPHISH},
-};
-
-const struct WildPokemonInfo gPetalburgCity_FishingMonsInfo = {10, gPetalburgCity_FishingMons};
-
-const struct WildPokemon gUnderwater1_WaterMons[] =
-{
- {20, 30, SPECIES_CLAMPERL},
- {20, 30, SPECIES_CHINCHOU},
- {30, 35, SPECIES_CLAMPERL},
- {30, 35, SPECIES_RELICANTH},
- {30, 35, SPECIES_RELICANTH},
-};
-
-const struct WildPokemonInfo gUnderwater1_WaterMonsInfo = {4, gUnderwater1_WaterMons};
-
-const struct WildPokemon gShoalCave_LowTideIceRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {26, 26, SPECIES_SNORUNT},
- {32, 32, SPECIES_SPHEAL},
- {30, 30, SPECIES_GOLBAT},
- {28, 28, SPECIES_SNORUNT},
- {32, 32, SPECIES_GOLBAT},
- {30, 30, SPECIES_SNORUNT},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideIceRoom_LandMonsInfo = {10, gShoalCave_LowTideIceRoom_LandMons};
-
-const struct WildPokemon gSkyPillar_1F_LandMons[] =
-{
- {33, 33, SPECIES_SABLEYE},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {34, 34, SPECIES_SABLEYE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_BANETTE},
- {38, 38, SPECIES_BANETTE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
-};
-
-const struct WildPokemonInfo gSkyPillar_1F_LandMonsInfo = {10, gSkyPillar_1F_LandMons};
-
-const struct WildPokemon gSootopolisCity_WaterMons[] =
-{
- {5, 35, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {15, 25, SPECIES_MAGIKARP},
- {25, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_MAGIKARP},
-};
-
-const struct WildPokemonInfo gSootopolisCity_WaterMonsInfo = {1, gSootopolisCity_WaterMons};
-
-const struct WildPokemon gSootopolisCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {30, 35, SPECIES_MAGIKARP},
- {30, 35, SPECIES_MAGIKARP},
- {35, 40, SPECIES_GYARADOS},
- {35, 45, SPECIES_GYARADOS},
- {5, 45, SPECIES_GYARADOS},
-};
-
-const struct WildPokemonInfo gSootopolisCity_FishingMonsInfo = {10, gSootopolisCity_FishingMons};
-
-const struct WildPokemon gSkyPillar_3F_LandMons[] =
-{
- {33, 33, SPECIES_SABLEYE},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {34, 34, SPECIES_SABLEYE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_BANETTE},
- {38, 38, SPECIES_BANETTE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
-};
-
-const struct WildPokemonInfo gSkyPillar_3F_LandMonsInfo = {10, gSkyPillar_3F_LandMons};
-
-const struct WildPokemon gSkyPillar_5F_LandMons[] =
-{
- {33, 33, SPECIES_SABLEYE},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {34, 34, SPECIES_SABLEYE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_BANETTE},
- {38, 38, SPECIES_BANETTE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_ALTARIA},
- {39, 39, SPECIES_ALTARIA},
- {39, 39, SPECIES_ALTARIA},
-};
-
-const struct WildPokemonInfo gSkyPillar_5F_LandMonsInfo = {10, gSkyPillar_5F_LandMons};
-
-const struct WildPokemon gSafariZone_Southeast_LandMons[] =
-{
- {33, 33, SPECIES_SUNKERN},
- {34, 34, SPECIES_MAREEP},
- {35, 35, SPECIES_SUNKERN},
- {36, 36, SPECIES_MAREEP},
- {34, 34, SPECIES_AIPOM},
- {33, 33, SPECIES_SPINARAK},
- {35, 35, SPECIES_HOOTHOOT},
- {34, 34, SPECIES_SNUBBULL},
- {36, 36, SPECIES_STANTLER},
- {37, 37, SPECIES_GLIGAR},
- {39, 39, SPECIES_STANTLER},
- {40, 40, SPECIES_GLIGAR},
-};
-
-const struct WildPokemonInfo gSafariZone_Southeast_LandMonsInfo = {25, gSafariZone_Southeast_LandMons};
-
-const struct WildPokemon gSafariZone_Southeast_WaterMons[] =
-{
- {25, 30, SPECIES_WOOPER},
- {25, 30, SPECIES_MARILL},
- {25, 30, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {35, 40, SPECIES_QUAGSIRE},
-};
-
-const struct WildPokemonInfo gSafariZone_Southeast_WaterMonsInfo = {9, gSafariZone_Southeast_WaterMons};
-
-const struct WildPokemon gSafariZone_Southeast_FishingMons[] =
-{
- {25, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_GOLDEEN},
- {30, 35, SPECIES_REMORAID},
- {25, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_REMORAID},
- {30, 35, SPECIES_REMORAID},
- {30, 35, SPECIES_REMORAID},
- {35, 40, SPECIES_OCTILLERY},
-};
-
-const struct WildPokemonInfo gSafariZone_Southeast_FishingMonsInfo = {35, gSafariZone_Southeast_FishingMons};
-
-const struct WildPokemon gSafariZone_Northeast_LandMons[] =
-{
- {33, 33, SPECIES_AIPOM},
- {34, 34, SPECIES_TEDDIURSA},
- {35, 35, SPECIES_AIPOM},
- {36, 36, SPECIES_TEDDIURSA},
- {34, 34, SPECIES_SUNKERN},
- {33, 33, SPECIES_LEDYBA},
- {35, 35, SPECIES_HOOTHOOT},
- {34, 34, SPECIES_PINECO},
- {36, 36, SPECIES_HOUNDOUR},
- {37, 37, SPECIES_MILTANK},
- {39, 39, SPECIES_HOUNDOUR},
- {40, 40, SPECIES_MILTANK},
-};
-
-const struct WildPokemonInfo gSafariZone_Northeast_LandMonsInfo = {25, gSafariZone_Northeast_LandMons};
-
-const struct WildPokemon gSafariZone_Northeast_RockSmashMons[] =
-{
- {25, 30, SPECIES_SHUCKLE},
- {20, 25, SPECIES_SHUCKLE},
- {30, 35, SPECIES_SHUCKLE},
- {30, 35, SPECIES_SHUCKLE},
- {35, 40, SPECIES_SHUCKLE},
-};
-
-const struct WildPokemonInfo gSafariZone_Northeast_RockSmashMonsInfo = {25, gSafariZone_Northeast_RockSmashMons};
-
-const struct WildPokemon gMagmaHideout_1F_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_1F_LandMonsInfo = {10, gMagmaHideout_1F_LandMons};
-
-const struct WildPokemon gMagmaHideout_2F_1R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_2F_1R_LandMonsInfo = {10, gMagmaHideout_2F_1R_LandMons};
-
-const struct WildPokemon gMagmaHideout_2F_2R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_2F_2R_LandMonsInfo = {10, gMagmaHideout_2F_2R_LandMons};
-
-const struct WildPokemon gMagmaHideout_3F_1R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_3F_1R_LandMonsInfo = {10, gMagmaHideout_3F_1R_LandMons};
-
-const struct WildPokemon gMagmaHideout_3F_2R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_3F_2R_LandMonsInfo = {10, gMagmaHideout_3F_2R_LandMons};
-
-const struct WildPokemon gMagmaHideout_4F_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_4F_LandMonsInfo = {10, gMagmaHideout_4F_LandMons};
-
-const struct WildPokemon gMagmaHideout_3F_3R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_3F_3R_LandMonsInfo = {10, gMagmaHideout_3F_3R_LandMons};
-
-const struct WildPokemon gMagmaHideout_2F_3R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_2F_3R_LandMonsInfo = {10, gMagmaHideout_2F_3R_LandMons};
-
-const struct WildPokemon gMirageTower_1F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_1F_LandMonsInfo = {10, gMirageTower_1F_LandMons};
-
-const struct WildPokemon gMirageTower_2F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_2F_LandMonsInfo = {10, gMirageTower_2F_LandMons};
-
-const struct WildPokemon gMirageTower_3F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_3F_LandMonsInfo = {10, gMirageTower_3F_LandMons};
-
-const struct WildPokemon gMirageTower_4F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_4F_LandMonsInfo = {10, gMirageTower_4F_LandMons};
-
-const struct WildPokemon gDesertUnderpass_LandMons[] =
-{
- {38, 38, SPECIES_DITTO},
- {35, 35, SPECIES_WHISMUR},
- {40, 40, SPECIES_DITTO},
- {40, 40, SPECIES_LOUDRED},
- {41, 41, SPECIES_DITTO},
- {36, 36, SPECIES_WHISMUR},
- {38, 38, SPECIES_LOUDRED},
- {42, 42, SPECIES_DITTO},
- {38, 38, SPECIES_WHISMUR},
- {43, 43, SPECIES_DITTO},
- {44, 44, SPECIES_LOUDRED},
- {45, 45, SPECIES_DITTO},
-};
-
-const struct WildPokemonInfo gDesertUnderpass_LandMonsInfo = {10, gDesertUnderpass_LandMons};
-
-const struct WildPokemon gArtisanCave_B1F_LandMons[] =
-{
- {40, 40, SPECIES_SMEARGLE},
- {41, 41, SPECIES_SMEARGLE},
- {42, 42, SPECIES_SMEARGLE},
- {43, 43, SPECIES_SMEARGLE},
- {44, 44, SPECIES_SMEARGLE},
- {45, 45, SPECIES_SMEARGLE},
- {46, 46, SPECIES_SMEARGLE},
- {47, 47, SPECIES_SMEARGLE},
- {48, 48, SPECIES_SMEARGLE},
- {49, 49, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
-};
-
-const struct WildPokemonInfo gArtisanCave_B1F_LandMonsInfo = {10, gArtisanCave_B1F_LandMons};
-
-const struct WildPokemon gArtisanCave_1F_LandMons[] =
-{
- {40, 40, SPECIES_SMEARGLE},
- {41, 41, SPECIES_SMEARGLE},
- {42, 42, SPECIES_SMEARGLE},
- {43, 43, SPECIES_SMEARGLE},
- {44, 44, SPECIES_SMEARGLE},
- {45, 45, SPECIES_SMEARGLE},
- {46, 46, SPECIES_SMEARGLE},
- {47, 47, SPECIES_SMEARGLE},
- {48, 48, SPECIES_SMEARGLE},
- {49, 49, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
-};
-
-const struct WildPokemonInfo gArtisanCave_1F_LandMonsInfo = {10, gArtisanCave_1F_LandMons};
-
-const struct WildPokemon gAlteringCave1_LandMons[] =
-{
- {10, 10, SPECIES_ZUBAT},
- {12, 12, SPECIES_ZUBAT},
- {8, 8, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
- {10, 10, SPECIES_ZUBAT},
- {12, 12, SPECIES_ZUBAT},
- {16, 16, SPECIES_ZUBAT},
- {6, 6, SPECIES_ZUBAT},
- {8, 8, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
- {8, 8, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
-};
-
-const struct WildPokemonInfo gAlteringCave1_LandMonsInfo = {7, gAlteringCave1_LandMons};
-
-const struct WildPokemon gAlteringCave2_LandMons[] =
-{
- {7, 7, SPECIES_MAREEP},
- {9, 9, SPECIES_MAREEP},
- {5, 5, SPECIES_MAREEP},
- {11, 11, SPECIES_MAREEP},
- {7, 7, SPECIES_MAREEP},
- {9, 9, SPECIES_MAREEP},
- {13, 13, SPECIES_MAREEP},
- {3, 3, SPECIES_MAREEP},
- {5, 5, SPECIES_MAREEP},
- {11, 11, SPECIES_MAREEP},
- {5, 5, SPECIES_MAREEP},
- {11, 11, SPECIES_MAREEP},
-};
-
-const struct WildPokemonInfo gAlteringCave2_LandMonsInfo = {7, gAlteringCave2_LandMons};
-
-const struct WildPokemon gAlteringCave3_LandMons[] =
-{
- {23, 23, SPECIES_PINECO},
- {25, 25, SPECIES_PINECO},
- {22, 22, SPECIES_PINECO},
- {27, 27, SPECIES_PINECO},
- {23, 23, SPECIES_PINECO},
- {25, 25, SPECIES_PINECO},
- {29, 29, SPECIES_PINECO},
- {19, 19, SPECIES_PINECO},
- {21, 21, SPECIES_PINECO},
- {27, 27, SPECIES_PINECO},
- {21, 21, SPECIES_PINECO},
- {27, 27, SPECIES_PINECO},
-};
-
-const struct WildPokemonInfo gAlteringCave3_LandMonsInfo = {7, gAlteringCave3_LandMons};
-
-const struct WildPokemon gAlteringCave4_LandMons[] =
-{
- {16, 16, SPECIES_HOUNDOUR},
- {18, 18, SPECIES_HOUNDOUR},
- {14, 14, SPECIES_HOUNDOUR},
- {20, 20, SPECIES_HOUNDOUR},
- {16, 16, SPECIES_HOUNDOUR},
- {18, 18, SPECIES_HOUNDOUR},
- {22, 22, SPECIES_HOUNDOUR},
- {12, 12, SPECIES_HOUNDOUR},
- {14, 14, SPECIES_HOUNDOUR},
- {20, 20, SPECIES_HOUNDOUR},
- {14, 14, SPECIES_HOUNDOUR},
- {20, 20, SPECIES_HOUNDOUR},
-};
-
-const struct WildPokemonInfo gAlteringCave4_LandMonsInfo = {7, gAlteringCave4_LandMons};
-
-const struct WildPokemon gAlteringCave5_LandMons[] =
-{
- {10, 10, SPECIES_TEDDIURSA},
- {12, 12, SPECIES_TEDDIURSA},
- {8, 8, SPECIES_TEDDIURSA},
- {14, 14, SPECIES_TEDDIURSA},
- {10, 10, SPECIES_TEDDIURSA},
- {12, 12, SPECIES_TEDDIURSA},
- {16, 16, SPECIES_TEDDIURSA},
- {6, 6, SPECIES_TEDDIURSA},
- {8, 8, SPECIES_TEDDIURSA},
- {14, 14, SPECIES_TEDDIURSA},
- {8, 8, SPECIES_TEDDIURSA},
- {14, 14, SPECIES_TEDDIURSA},
-};
-
-const struct WildPokemonInfo gAlteringCave5_LandMonsInfo = {7, gAlteringCave5_LandMons};
-
-const struct WildPokemon gAlteringCave6_LandMons[] =
-{
- {22, 22, SPECIES_AIPOM},
- {24, 24, SPECIES_AIPOM},
- {20, 20, SPECIES_AIPOM},
- {26, 26, SPECIES_AIPOM},
- {22, 22, SPECIES_AIPOM},
- {24, 24, SPECIES_AIPOM},
- {28, 28, SPECIES_AIPOM},
- {18, 18, SPECIES_AIPOM},
- {20, 20, SPECIES_AIPOM},
- {26, 26, SPECIES_AIPOM},
- {20, 20, SPECIES_AIPOM},
- {26, 26, SPECIES_AIPOM},
-};
-
-const struct WildPokemonInfo gAlteringCave6_LandMonsInfo = {7, gAlteringCave6_LandMons};
-
-const struct WildPokemon gAlteringCave7_LandMons[] =
-{
- {22, 22, SPECIES_SHUCKLE},
- {24, 24, SPECIES_SHUCKLE},
- {20, 20, SPECIES_SHUCKLE},
- {26, 26, SPECIES_SHUCKLE},
- {22, 22, SPECIES_SHUCKLE},
- {24, 24, SPECIES_SHUCKLE},
- {28, 28, SPECIES_SHUCKLE},
- {18, 18, SPECIES_SHUCKLE},
- {20, 20, SPECIES_SHUCKLE},
- {26, 26, SPECIES_SHUCKLE},
- {20, 20, SPECIES_SHUCKLE},
- {26, 26, SPECIES_SHUCKLE},
-};
-
-const struct WildPokemonInfo gAlteringCave7_LandMonsInfo = {7, gAlteringCave7_LandMons};
-
-const struct WildPokemon gAlteringCave8_LandMons[] =
-{
- {22, 22, SPECIES_STANTLER},
- {24, 24, SPECIES_STANTLER},
- {20, 20, SPECIES_STANTLER},
- {26, 26, SPECIES_STANTLER},
- {22, 22, SPECIES_STANTLER},
- {24, 24, SPECIES_STANTLER},
- {28, 28, SPECIES_STANTLER},
- {18, 18, SPECIES_STANTLER},
- {20, 20, SPECIES_STANTLER},
- {26, 26, SPECIES_STANTLER},
- {20, 20, SPECIES_STANTLER},
- {26, 26, SPECIES_STANTLER},
-};
-
-const struct WildPokemonInfo gAlteringCave8_LandMonsInfo = {7, gAlteringCave8_LandMons};
-
-const struct WildPokemon gAlteringCave9_LandMons[] =
-{
- {22, 22, SPECIES_SMEARGLE},
- {24, 24, SPECIES_SMEARGLE},
- {20, 20, SPECIES_SMEARGLE},
- {26, 26, SPECIES_SMEARGLE},
- {22, 22, SPECIES_SMEARGLE},
- {24, 24, SPECIES_SMEARGLE},
- {28, 28, SPECIES_SMEARGLE},
- {18, 18, SPECIES_SMEARGLE},
- {20, 20, SPECIES_SMEARGLE},
- {26, 26, SPECIES_SMEARGLE},
- {20, 20, SPECIES_SMEARGLE},
- {26, 26, SPECIES_SMEARGLE},
-};
-
-const struct WildPokemonInfo gAlteringCave9_LandMonsInfo = {7, gAlteringCave9_LandMons};
-
-const struct WildPokemon gMeteorFalls_StevensCave_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_SOLROCK},
- {33, 33, SPECIES_SOLROCK},
- {37, 37, SPECIES_SOLROCK},
- {35, 35, SPECIES_GOLBAT},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_StevensCave_LandMonsInfo = {10, gMeteorFalls_StevensCave_LandMons};
-
-const struct WildPokemonHeader gWildMonHeaders[] =
-{
- {
- .mapGroup = MAP_GROUP(ROUTE101),
- .mapNum = MAP_NUM(ROUTE101),
- .landMonsInfo = &gRoute101_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE102),
- .mapNum = MAP_NUM(ROUTE102),
- .landMonsInfo = &gRoute102_LandMonsInfo,
- .waterMonsInfo = &gRoute102_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute102_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE103),
- .mapNum = MAP_NUM(ROUTE103),
- .landMonsInfo = &gRoute103_LandMonsInfo,
- .waterMonsInfo = &gRoute103_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute103_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE104),
- .mapNum = MAP_NUM(ROUTE104),
- .landMonsInfo = &gRoute104_LandMonsInfo,
- .waterMonsInfo = &gRoute104_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute104_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE105),
- .mapNum = MAP_NUM(ROUTE105),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute105_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute105_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE110),
- .mapNum = MAP_NUM(ROUTE110),
- .landMonsInfo = &gRoute110_LandMonsInfo,
- .waterMonsInfo = &gRoute110_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute110_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE111),
- .mapNum = MAP_NUM(ROUTE111),
- .landMonsInfo = &gRoute111_LandMonsInfo,
- .waterMonsInfo = &gRoute111_WaterMonsInfo,
- .rockSmashMonsInfo = &gRoute111_RockSmashMonsInfo,
- .fishingMonsInfo = &gRoute111_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE112),
- .mapNum = MAP_NUM(ROUTE112),
- .landMonsInfo = &gRoute112_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE113),
- .mapNum = MAP_NUM(ROUTE113),
- .landMonsInfo = &gRoute113_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE114),
- .mapNum = MAP_NUM(ROUTE114),
- .landMonsInfo = &gRoute114_LandMonsInfo,
- .waterMonsInfo = &gRoute114_WaterMonsInfo,
- .rockSmashMonsInfo = &gRoute114_RockSmashMonsInfo,
- .fishingMonsInfo = &gRoute114_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE116),
- .mapNum = MAP_NUM(ROUTE116),
- .landMonsInfo = &gRoute116_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE117),
- .mapNum = MAP_NUM(ROUTE117),
- .landMonsInfo = &gRoute117_LandMonsInfo,
- .waterMonsInfo = &gRoute117_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute117_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE118),
- .mapNum = MAP_NUM(ROUTE118),
- .landMonsInfo = &gRoute118_LandMonsInfo,
- .waterMonsInfo = &gRoute118_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute118_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE124),
- .mapNum = MAP_NUM(ROUTE124),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute124_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute124_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(PETALBURG_WOODS),
- .mapNum = MAP_NUM(PETALBURG_WOODS),
- .landMonsInfo = &gPetalburgWoods_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(RUSTURF_TUNNEL),
- .mapNum = MAP_NUM(RUSTURF_TUNNEL),
- .landMonsInfo = &gRusturfTunnel_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_1F),
- .mapNum = MAP_NUM(GRANITE_CAVE_1F),
- .landMonsInfo = &gGraniteCave_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_B1F),
- .mapNum = MAP_NUM(GRANITE_CAVE_B1F),
- .landMonsInfo = &gGraniteCave_B1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_1F),
- .mapNum = MAP_NUM(MT_PYRE_1F),
- .landMonsInfo = &gMtPyre_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(VICTORY_ROAD_1F),
- .mapNum = MAP_NUM(VICTORY_ROAD_1F),
- .landMonsInfo = &gVictoryRoad_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTH),
- .mapNum = MAP_NUM(SAFARI_ZONE_SOUTH),
- .landMonsInfo = &gSafariZone_South_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(UNDERWATER2),
- .mapNum = MAP_NUM(UNDERWATER2),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gUnderwater2_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ABANDONED_SHIP_ROOMS_B1F),
- .mapNum = MAP_NUM(ABANDONED_SHIP_ROOMS_B1F),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gAbandonedShip_Rooms_B1F_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gAbandonedShip_Rooms_B1F_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_B2F),
- .mapNum = MAP_NUM(GRANITE_CAVE_B2F),
- .landMonsInfo = &gGraniteCave_B2F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gGraniteCave_B2F_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(FIERY_PATH),
- .mapNum = MAP_NUM(FIERY_PATH),
- .landMonsInfo = &gFieryPath_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_2R),
- .mapNum = MAP_NUM(METEOR_FALLS_B1F_2R),
- .landMonsInfo = &gMeteorFalls_B1F_2R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_B1F_2R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_B1F_2R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(JAGGED_PASS),
- .mapNum = MAP_NUM(JAGGED_PASS),
- .landMonsInfo = &gJaggedPass_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE106),
- .mapNum = MAP_NUM(ROUTE106),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute106_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute106_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE107),
- .mapNum = MAP_NUM(ROUTE107),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute107_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute107_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE108),
- .mapNum = MAP_NUM(ROUTE108),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute108_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute108_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE109),
- .mapNum = MAP_NUM(ROUTE109),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute109_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute109_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE115),
- .mapNum = MAP_NUM(ROUTE115),
- .landMonsInfo = &gRoute115_LandMonsInfo,
- .waterMonsInfo = &gRoute115_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute115_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(NEW_MAUVILLE_INSIDE),
- .mapNum = MAP_NUM(NEW_MAUVILLE_INSIDE),
- .landMonsInfo = &gNewMauville_Inside_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE119),
- .mapNum = MAP_NUM(ROUTE119),
- .landMonsInfo = &gRoute119_LandMonsInfo,
- .waterMonsInfo = &gRoute119_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute119_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE120),
- .mapNum = MAP_NUM(ROUTE120),
- .landMonsInfo = &gRoute120_LandMonsInfo,
- .waterMonsInfo = &gRoute120_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute120_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE121),
- .mapNum = MAP_NUM(ROUTE121),
- .landMonsInfo = &gRoute121_LandMonsInfo,
- .waterMonsInfo = &gRoute121_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute121_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE122),
- .mapNum = MAP_NUM(ROUTE122),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute122_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute122_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE123),
- .mapNum = MAP_NUM(ROUTE123),
- .landMonsInfo = &gRoute123_LandMonsInfo,
- .waterMonsInfo = &gRoute123_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute123_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_2F),
- .mapNum = MAP_NUM(MT_PYRE_2F),
- .landMonsInfo = &gMtPyre_2F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_3F),
- .mapNum = MAP_NUM(MT_PYRE_3F),
- .landMonsInfo = &gMtPyre_3F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_4F),
- .mapNum = MAP_NUM(MT_PYRE_4F),
- .landMonsInfo = &gMtPyre_4F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_5F),
- .mapNum = MAP_NUM(MT_PYRE_5F),
- .landMonsInfo = &gMtPyre_5F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_6F),
- .mapNum = MAP_NUM(MT_PYRE_6F),
- .landMonsInfo = &gMtPyre_6F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_EXTERIOR),
- .mapNum = MAP_NUM(MT_PYRE_EXTERIOR),
- .landMonsInfo = &gMtPyre_Exterior_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_SUMMIT),
- .mapNum = MAP_NUM(MT_PYRE_SUMMIT),
- .landMonsInfo = &gMtPyre_Summit_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_STEVENS_ROOM),
- .mapNum = MAP_NUM(GRANITE_CAVE_STEVENS_ROOM),
- .landMonsInfo = &gGraniteCave_StevensRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE125),
- .mapNum = MAP_NUM(ROUTE125),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute125_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute125_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE126),
- .mapNum = MAP_NUM(ROUTE126),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute126_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute126_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE127),
- .mapNum = MAP_NUM(ROUTE127),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute127_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute127_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE128),
- .mapNum = MAP_NUM(ROUTE128),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute128_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute128_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE129),
- .mapNum = MAP_NUM(ROUTE129),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute129_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute129_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE130),
- .mapNum = MAP_NUM(ROUTE130),
- .landMonsInfo = &gRoute130_LandMonsInfo,
- .waterMonsInfo = &gRoute130_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute130_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE131),
- .mapNum = MAP_NUM(ROUTE131),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute131_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute131_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE132),
- .mapNum = MAP_NUM(ROUTE132),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute132_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute132_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE133),
- .mapNum = MAP_NUM(ROUTE133),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute133_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute133_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE134),
- .mapNum = MAP_NUM(ROUTE134),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute134_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute134_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
- .mapNum = MAP_NUM(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM1),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM1),
- .landMonsInfo = &gSeafloorCavern_Room1_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM2),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM2),
- .landMonsInfo = &gSeafloorCavern_Room2_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM3),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM3),
- .landMonsInfo = &gSeafloorCavern_Room3_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM4),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM4),
- .landMonsInfo = &gSeafloorCavern_Room4_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM5),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM5),
- .landMonsInfo = &gSeafloorCavern_Room5_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM6),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM6),
- .landMonsInfo = &gSeafloorCavern_Room6_LandMonsInfo,
- .waterMonsInfo = &gSeafloorCavern_Room6_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSeafloorCavern_Room6_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM7),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM7),
- .landMonsInfo = &gSeafloorCavern_Room7_LandMonsInfo,
- .waterMonsInfo = &gSeafloorCavern_Room7_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSeafloorCavern_Room7_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM8),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM8),
- .landMonsInfo = &gSeafloorCavern_Room8_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ENTRANCE),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ENTRANCE),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gSeafloorCavern_Entrance_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSeafloorCavern_Entrance_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_ENTRANCE),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_ENTRANCE),
- .landMonsInfo = &gCaveOfOrigin_Entrance_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_1F),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_1F),
- .landMonsInfo = &gCaveOfOrigin_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
- .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
- .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
- .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(NEW_MAUVILLE_ENTRANCE),
- .mapNum = MAP_NUM(NEW_MAUVILLE_ENTRANCE),
- .landMonsInfo = &gNewMauville_Entrance_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHWEST),
- .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHWEST),
- .landMonsInfo = &gSafariZone_Southwest_LandMonsInfo,
- .waterMonsInfo = &gSafariZone_Southwest_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSafariZone_Southwest_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTH),
- .mapNum = MAP_NUM(SAFARI_ZONE_NORTH),
- .landMonsInfo = &gSafariZone_North_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gSafariZone_North_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHWEST),
- .mapNum = MAP_NUM(SAFARI_ZONE_NORTHWEST),
- .landMonsInfo = &gSafariZone_Northwest_LandMonsInfo,
- .waterMonsInfo = &gSafariZone_Northwest_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSafariZone_Northwest_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(VICTORY_ROAD_B1F),
- .mapNum = MAP_NUM(VICTORY_ROAD_B1F),
- .landMonsInfo = &gVictoryRoad_B1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gVictoryRoad_B1F_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(VICTORY_ROAD_B2F),
- .mapNum = MAP_NUM(VICTORY_ROAD_B2F),
- .landMonsInfo = &gVictoryRoad_B2F_LandMonsInfo,
- .waterMonsInfo = &gVictoryRoad_B2F_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gVictoryRoad_B2F_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_1F_1R),
- .mapNum = MAP_NUM(METEOR_FALLS_1F_1R),
- .landMonsInfo = &gMeteorFalls_1F_1R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_1F_1R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_1F_1R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_1F_2R),
- .mapNum = MAP_NUM(METEOR_FALLS_1F_2R),
- .landMonsInfo = &gMeteorFalls_1F_2R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_1F_2R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_1F_2R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_1R),
- .mapNum = MAP_NUM(METEOR_FALLS_B1F_1R),
- .landMonsInfo = &gMeteorFalls_B1F_1R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_B1F_1R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_B1F_1R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
- .landMonsInfo = &gShoalCave_LowTideStairsRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
- .landMonsInfo = &gShoalCave_LowTideLowerRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
- .landMonsInfo = &gShoalCave_LowTideInnerRoom_LandMonsInfo,
- .waterMonsInfo = &gShoalCave_LowTideInnerRoom_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gShoalCave_LowTideInnerRoom_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
- .landMonsInfo = &gShoalCave_LowTideEntranceRoom_LandMonsInfo,
- .waterMonsInfo = &gShoalCave_LowTideEntranceRoom_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gShoalCave_LowTideEntranceRoom_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(LILYCOVE_CITY),
- .mapNum = MAP_NUM(LILYCOVE_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gLilycoveCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gLilycoveCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(DEWFORD_TOWN),
- .mapNum = MAP_NUM(DEWFORD_TOWN),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gDewfordTown_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gDewfordTown_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SLATEPORT_CITY),
- .mapNum = MAP_NUM(SLATEPORT_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gSlateportCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSlateportCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(MOSSDEEP_CITY),
- .mapNum = MAP_NUM(MOSSDEEP_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gMossdeepCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMossdeepCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(PACIFIDLOG_TOWN),
- .mapNum = MAP_NUM(PACIFIDLOG_TOWN),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gPacifidlogTown_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gPacifidlogTown_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(EVER_GRANDE_CITY),
- .mapNum = MAP_NUM(EVER_GRANDE_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gEverGrandeCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gEverGrandeCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(PETALBURG_CITY),
- .mapNum = MAP_NUM(PETALBURG_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gPetalburgCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gPetalburgCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(UNDERWATER1),
- .mapNum = MAP_NUM(UNDERWATER1),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gUnderwater1_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
- .landMonsInfo = &gShoalCave_LowTideIceRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SKY_PILLAR_1F),
- .mapNum = MAP_NUM(SKY_PILLAR_1F),
- .landMonsInfo = &gSkyPillar_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SOOTOPOLIS_CITY),
- .mapNum = MAP_NUM(SOOTOPOLIS_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gSootopolisCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSootopolisCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SKY_PILLAR_3F),
- .mapNum = MAP_NUM(SKY_PILLAR_3F),
- .landMonsInfo = &gSkyPillar_3F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SKY_PILLAR_5F),
- .mapNum = MAP_NUM(SKY_PILLAR_5F),
- .landMonsInfo = &gSkyPillar_5F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHEAST),
- .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHEAST),
- .landMonsInfo = &gSafariZone_Southeast_LandMonsInfo,
- .waterMonsInfo = &gSafariZone_Southeast_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSafariZone_Southeast_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHEAST),
- .mapNum = MAP_NUM(SAFARI_ZONE_NORTHEAST),
- .landMonsInfo = &gSafariZone_Northeast_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gSafariZone_Northeast_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_1F),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_1F),
- .landMonsInfo = &gMagmaHideout_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_1R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_1R),
- .landMonsInfo = &gMagmaHideout_2F_1R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_2R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_2R),
- .landMonsInfo = &gMagmaHideout_2F_2R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_1R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_1R),
- .landMonsInfo = &gMagmaHideout_3F_1R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_2R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_2R),
- .landMonsInfo = &gMagmaHideout_3F_2R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_4F),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_4F),
- .landMonsInfo = &gMagmaHideout_4F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_3R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_3R),
- .landMonsInfo = &gMagmaHideout_3F_3R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_3R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_3R),
- .landMonsInfo = &gMagmaHideout_2F_3R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_1F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_1F),
- .landMonsInfo = &gMirageTower_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_2F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_2F),
- .landMonsInfo = &gMirageTower_2F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_3F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_3F),
- .landMonsInfo = &gMirageTower_3F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_4F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_4F),
- .landMonsInfo = &gMirageTower_4F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(DESERT_UNDERPASS),
- .mapNum = MAP_NUM(DESERT_UNDERPASS),
- .landMonsInfo = &gDesertUnderpass_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ARTISAN_CAVE_B1F),
- .mapNum = MAP_NUM(ARTISAN_CAVE_B1F),
- .landMonsInfo = &gArtisanCave_B1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ARTISAN_CAVE_1F),
- .mapNum = MAP_NUM(ARTISAN_CAVE_1F),
- .landMonsInfo = &gArtisanCave_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave1_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave2_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave3_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave4_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave5_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave6_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave7_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave8_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave9_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_STEVENS_CAVE),
- .mapNum = MAP_NUM(METEOR_FALLS_STEVENS_CAVE),
- .landMonsInfo = &gMeteorFalls_StevensCave_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(UNDEFINED),
- .mapNum = MAP_NUM(UNDEFINED),
- .landMonsInfo = NULL,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
-};
-
-const struct WildPokemon gBattlePyramidPlaceholders_1[] =
-{
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_1Info = {4, gBattlePyramidPlaceholders_1};
-
-const struct WildPokemon gBattlePyramidPlaceholders_2[] =
-{
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMANDER},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_2Info = {4, gBattlePyramidPlaceholders_2};
-
-const struct WildPokemon gBattlePyramidPlaceholders_3[] =
-{
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_3Info = {4, gBattlePyramidPlaceholders_3};
-
-const struct WildPokemon gBattlePyramidPlaceholders_4[] =
-{
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_SQUIRTLE},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_4Info = {4, gBattlePyramidPlaceholders_4};
-
-const struct WildPokemon gBattlePyramidPlaceholders_5[] =
-{
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_WARTORTLE},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_5Info = {4, gBattlePyramidPlaceholders_5};
-
-const struct WildPokemon gBattlePyramidPlaceholders_6[] =
-{
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_6Info = {4, gBattlePyramidPlaceholders_6};
-
-const struct WildPokemon gBattlePyramidPlaceholders_7[] =
-{
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_7Info = {8, gBattlePyramidPlaceholders_7};
-
-const struct WildPokemonHeader gBattlePyramidWildMonHeaders[] =
-{
- {
- .mapGroup = 0,
- .mapNum = 1,
- .landMonsInfo = &gBattlePyramidPlaceholders_1Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 2,
- .landMonsInfo = &gBattlePyramidPlaceholders_2Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 3,
- .landMonsInfo = &gBattlePyramidPlaceholders_3Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 4,
- .landMonsInfo = &gBattlePyramidPlaceholders_4Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 5,
- .landMonsInfo = &gBattlePyramidPlaceholders_5Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 6,
- .landMonsInfo = &gBattlePyramidPlaceholders_6Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 7,
- .landMonsInfo = &gBattlePyramidPlaceholders_7Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 255,
- .mapNum = 255,
- .landMonsInfo = NULL,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
-};
-
-const struct WildPokemon gBattlePikeMons_1[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_1 = {10, gBattlePikeMons_1};
-
-const struct WildPokemon gBattlePikeMons_2[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_2 = {10, gBattlePikeMons_2};
-
-const struct WildPokemon gBattlePikeMons_3[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_3 = {10, gBattlePikeMons_3};
-
-const struct WildPokemon gBattlePikeMons_4[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_4 = {10, gBattlePikeMons_4};
-
-const struct WildPokemonHeader gBattlePikeWildMonHeaders[] =
-{
- {
- .mapGroup = 0,
- .mapNum = 1,
- .landMonsInfo = &gBattlePikeMonsInfo_1,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 2,
- .landMonsInfo = &gBattlePikeMonsInfo_2,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 3,
- .landMonsInfo = &gBattlePikeMonsInfo_3,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 4,
- .landMonsInfo = &gBattlePikeMonsInfo_4,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 255,
- .mapNum = 255,
- .landMonsInfo = NULL,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
-};
-
-const struct WildPokemon gWildFeebasRoute119Data = {20, 25, SPECIES_FEEBAS};
-
-const u16 gRoute119WaterTileData[] =
-{
- 0, 0x2D, 0,
- 0x2E, 0x5B, 0x83,
- 0x5C, 0x8B, 0x12A,
-};
+#include "data/wild_encounters.h"
// code
void DisableWildEncounters(bool8 disabled)
diff --git a/src/window.c b/src/window.c
index 5ae6c7509..aa1df3a12 100644
--- a/src/window.c
+++ b/src/window.c
@@ -674,7 +674,7 @@ void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u
struct Bitmap sourceRect;
struct Bitmap destRect;
- sourceRect.pixels = pixels;
+ sourceRect.pixels = (u8*) pixels;
sourceRect.width = srcWidth;
sourceRect.height = srcHeight;
diff --git a/sym_bss.txt b/sym_bss.txt
index fe0648e34..da8b4ae80 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -21,7 +21,7 @@
.include "src/tileset_anims.o"
.include "src/palette.o"
.include "src/sound.o"
- .include "src/field_screen.o"
+ .include "src/field_weather.o"
.include "src/field_effect.o"
.include "src/pokemon_storage_system.o"
.include "src/fldeff_cut.o"
diff --git a/sym_common.txt b/sym_common.txt
index e8d1654c0..3a7d698fd 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -63,7 +63,7 @@ gUnknown_030061A0: @ 30061A0
gUnknown_030061C0: @ 30061C0
.space 0x4
-gUnknown_030061C4: @ 30061C4
+gContestPaintingMonPalette: @ 30061C4
.space 0xC
.include "field_specials.o"
@@ -77,16 +77,7 @@ gDexCryScreenState: @ 30061EC
.include "save.o"
.include "battle_tower.o"
.include "intro.o"
-
-gUnknown_030062DC: @ 30062DC
- .space 0x4
-
-gUnknown_030062E0: @ 30062E0
- .space 0x4
-
-gUnknown_030062E4: @ 30062E4
- .space 0x4
-
+ .include "battle_anim_8170478.o"
.include "battle_factory_screen.o"
.include "apprentice.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 8443eb377..f99dd1ab3 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -154,24 +154,8 @@ gUnknown_020375C0: @ 20375C0
.include "src/battle_anim_80A5C6C.o"
.space 0xC
-gUnknown_02038454: @ 2038454
- .space 0x200
-
-gUnknown_02038654: @ 2038654
- .space 0x260
-
-gUnknown_020388B4: @ 20388B4
- .space 0x2F0
-
-gUnknown_02038BA4: @ 2038BA4
- .space 0x20
-
-gUnknown_02038BC4: @ 2038BC4
- .space 0x2
-
-gUnknown_02038BC6: @ 2038BC6
- .space 0x2
-
+ .include "src/field_weather.o"
+ .include "src/field_weather_effect.o"
.include "src/battle_setup.o"
.include "src/trainer_see.o"
.include "src/wild_encounter.o"
@@ -239,26 +223,14 @@ gUnknown_0203A034: @ 203A034
gUnknown_0203A0F4: @ 203A0F4
.space 0x4
-gUnknown_0203A0F8: @ 203A0F8
- .space 0x8
+ .include "src/battle_anim_effects_1.o"
gUnknown_0203A100: @ 203A100
.space 0x10
.include "src/battle_anim_utility_funcs.o"
-
-gUnknown_0203A114: @ 203A114
- .space 0x4
-
-gUnknown_0203A118: @ 203A118
- .space 0x4
-
-gUnknown_0203A11C: @ 203A11C
- .space 0x4
-
-gUnknown_0203A120: @ 203A120
- .space 0x4
-
+ .include "src/battle_intro.o"
+ .include "src/easy_chat.o"
.include "src/mon_markings.o"
.include "src/mauville_old_man.o"
.include "src/mail.o"
@@ -288,28 +260,7 @@ gUnknown_0203AB8C: @ 203AB8C
.include "src/coins.o"
.include "src/battle_transition.o"
.include "src/battle_message.o"
-
-gUnknown_0203ABAC: @ 203ABAC
- .space 0x4
-
-gUnknown_0203ABB0: @ 203ABB0
- .space 0x1
-
-gUnknown_0203ABB1: @ 203ABB1
- .space 0x1
-
-gUnknown_0203ABB2: @ 203ABB2
- .space 0x1
-
-gUnknown_0203ABB3: @ 203ABB3
- .space 0x1
-
-gUnknown_0203ABB4: @ 203ABB4
- .space 0x1
-
-gUnknown_0203ABB5: @ 203ABB5
- .space 0x3
-
+ .include "src/cable_car.o"
.include "src/rom_81520A8.o"
.include "src/save.o"
.include "src/mystery_event_script.o"
@@ -349,49 +300,7 @@ gUnknown_0203CD88: @ 203CD88
.include "src/list_menu.o"
.include "src/dynamic_placeholder_text_util.o"
.include "src/item_icon.o"
-
-gUnknown_0203CEC4: @ 203CEC4
- .space 0x4
-
-gUnknown_0203CEC8: @ 203CEC8
- .space 0xE
-
-gUnknown_0203CED6: @ 203CED6
- .space 0x6
-
-gUnknown_0203CEDC: @ 203CEDC
- .space 0x4
-
-gUnknown_0203CEE0: @ 203CEE0
- .space 0x4
-
-gUnknown_0203CEE4: @ 203CEE4
- .space 0x4
-
-gUnknown_0203CEE8: @ 203CEE8
- .space 0x1
-
-gUnknown_0203CEE9: @ 203CEE9
- .space 0x3
-
-gPostMenuFieldCallback: @ 203CEEC
- .space 0x4
-
-gUnknown_0203CEF0: @ 203CEF0
- .space 0x4
-
-gUnknown_0203CEF4: @ 203CEF4
- .space 0x4
-
-gSelectedOrderFromParty: @ 203CEF8
- .space 0x4
-
-gUnknown_0203CEFC: @ 203CEFC
- .space 0x4
-
-gUnknown_0203CF00: @ 203CF00
- .space 0x4
-
+ .include "src/party_menu.o"
.include "src/fossil_specials.o"
.include "src/fldeff_groundshake.o"
.include "src/pokemon_summary_screen.o"